#!/usr/bin/env node /** * Test intent parsing functionality * Usage: npx tsx scripts/test-intent.ts */ import { JenkinsBuildIntentMatcher } from '../src/tools/jenkins-intent.js'; import { ServiceIntentMatcher } from '../src/tools/service-intent.js'; import { JenkinsClient } from '../src/jenkins/client.js'; import { ServiceRouter } from '../src/services/router.js'; import { ConfigManager } from '../src/config/manager.js'; async function testJenkinsIntent() { console.log('═══════════════════════════════════════════════'); console.log(' Jenkins 意图解析测试'); console.log('═══════════════════════════════════════════════\n'); const configManager = new ConfigManager(); const jenkinsConfig = await configManager.getJenkinsInstance('default'); if (!jenkinsConfig) { console.log('⚠️ 未找到 default Jenkins 配置'); return; } const client = new JenkinsClient(jenkinsConfig); const matcher = new JenkinsBuildIntentMatcher(client); const testIntents = [ '构建管网项目', '管网项目 develop 分支', '打包 frontend', ]; for (const intent of testIntents) { console.log(`📝 意图: "${intent}"`); const result = await matcher.parse(intent); console.log(` 匹配数: ${result.matches.length}`); if (result.recommended) { console.log(` 推荐: ${result.recommended.project} (${result.recommended.confidence})`); } console.log(` 分支: ${result.branches.join(', ')}`); console.log(` 显式分支: ${result.explicitBranch || '无'}`); console.log(''); } } async function testServiceIntent() { console.log('═══════════════════════════════════════════════'); console.log(' 服务意图解析测试'); console.log('═══════════════════════════════════════════════\n'); const configManager = new ConfigManager(); const router = new ServiceRouter(configManager); const matcher = new ServiceIntentMatcher(router); const testServices = ['nginx', 'mysql', 'redis']; for (const service of testServices) { console.log(`📝 服务: "${service}"`); const result = await matcher.parse(service, 'restart'); console.log(` 匹配数: ${result.total}`); console.log(` 按类型: Docker=${result.byType.docker.length}, K3s=${result.byType.k3s.length}, Systemd=${result.byType.systemd.length}`); if (result.recommended) { console.log(` 推荐: ${result.recommended.type}/${result.recommended.server} :: ${result.recommended.name}`); } console.log(''); } } async function main() { try { await testJenkinsIntent(); console.log(''); await testServiceIntent(); } catch (e: unknown) { const message = e instanceof Error ? e.message : 'Unknown error'; console.error('❌ 测试失败:', message); } } main();