UNPKG

pm-orchestrator-enhancement

Version:

PM Orchestrator Enhancement - Multi-agent parallel execution system

125 lines 3.61 kB
"use strict"; /** * PM Orchestrator Enhancement - QA Subagent * * 品質チェックを実行します(lint, test, typecheck, build) */ Object.defineProperty(exports, "__esModule", { value: true }); exports.QA = void 0; class QA { constructor() { this.version = '1.0.0'; } /** * 品質チェックを実行します * * @param files 対象ファイル * @param checks チェック項目 * @returns 品質チェック結果 */ async check(files, checks) { const lint = checks.includes('lint') ? await this.runLint(files) : this.createEmptyResult(); const test = checks.includes('test') ? await this.runTest(files) : this.createEmptyResult(); const typecheck = checks.includes('typecheck') ? await this.runTypecheck(files) : this.createEmptyResult(); const build = checks.includes('build') ? await this.runBuild(files) : this.createEmptyResult(); const allPassed = [lint, test, typecheck, build].every(result => result.passed); const status = allPassed ? 'pass' : 'fail'; const qualityScore = this.calculateQualityScore({ lint, test, typecheck, build }); return { status, lint, test, typecheck, build, qualityScore }; } /** * Lintを実行(プライベート) */ async runLint(_files) { // 実装例: ESLint実行 return { passed: true, errors: 0, warnings: 0, details: [] }; } /** * テストを実行(プライベート) */ async runTest(_files) { // 実装例: Jest実行 return { passed: true, errors: 0, warnings: 0, details: [] }; } /** * 型チェックを実行(プライベート) */ async runTypecheck(_files) { // 実装例: tsc --noEmit実行 return { passed: true, errors: 0, warnings: 0, details: [] }; } /** * ビルドを実行(プライベート) */ async runBuild(_files) { // 実装例: tsc実行 return { passed: true, errors: 0, warnings: 0, details: [] }; } /** * 空の結果を作成(プライベート) */ createEmptyResult() { return { passed: true, errors: 0, warnings: 0, details: [] }; } /** * 品質スコアを計算(プライベート) */ calculateQualityScore(results) { const weights = { lint: 0.2, test: 0.3, typecheck: 0.25, build: 0.25 }; const scores = { lint: results.lint.passed ? 100 : Math.max(0, 100 - results.lint.errors * 10), test: results.test.passed ? 100 : Math.max(0, 100 - results.test.errors * 10), typecheck: results.typecheck.passed ? 100 : Math.max(0, 100 - results.typecheck.errors * 10), build: results.build.passed ? 100 : Math.max(0, 100 - results.build.errors * 10) }; const totalScore = scores.lint * weights.lint + scores.test * weights.test + scores.typecheck * weights.typecheck + scores.build * weights.build; return Math.round(totalScore); } } exports.QA = QA; //# sourceMappingURL=qa.js.map