import type { ReportLanguage } from "./language.ts"; import type { Finding, ReviewResult } from "./types.ts"; function findingText( finding: Finding, index: number, language: ReportLanguage, ): string { const location = finding.kind === "code" ? `\`${finding.path}:${finding.line}\`` : finding.path ? language === "zh-CN" ? `\`${finding.path}\` 附近的任务要求` : `task requirement near \`${finding.path}\`` : language === "zh-CN" ? "任务要求" : "task requirement"; const evidence = language === "zh-CN" ? "证据" : "Evidence"; return `${index + 1}. **${finding.title}** (${location})\n\n ${finding.description}\n\n ${evidence}: ${finding.evidence}`; } export function renderReport( result: ReviewResult, language: ReportLanguage = "en", ): string { if (language === "zh-CN") { if (result.status === "skipped") return `## 已跳过代码审查\n\n${result.reason ?? "无需进行审查。"}\n\n**合并结论:未评估。**`; if (result.status === "aborted") return "## 代码审查已取消\n\n**合并结论:无法判断。**"; if (result.status === "incomplete") { return `## 代码审查未完成\n\n${result.reason ?? "必要的审查阶段失败。"}\n\n${result.failures.map((failure) => `- ${failure}`).join("\n")}\n\n**合并结论:无法判断。**`; } if (result.findings.length === 0) { return "## 代码审查\n\n未发现问题。已检查任务完成度、变更范围、缺陷、回归、权限与安全风险、维护风险,以及 AGENTS.md 合规性。\n\n**合并结论:从本次代码审查结果看,建议合并。**"; } return `## 代码审查\n\n发现 ${result.findings.length} 个高置信问题:\n\n${result.findings.map((finding, index) => findingText(finding, index, language)).join("\n\n")}\n\n**合并结论:不建议当前合并,请先解决上述高置信问题。**`; } if (result.status === "skipped") return `## Code review skipped\n\n${result.reason ?? "Review was not required."}\n\n**Merge recommendation: Not evaluated.**`; if (result.status === "aborted") return "## Code review aborted\n\n**Merge recommendation: Unable to determine.**"; if (result.status === "incomplete") { return `## Code review incomplete\n\n${result.reason ?? "A required review stage failed."}\n\n${result.failures.map((failure) => `- ${failure}`).join("\n")}\n\n**Merge recommendation: Unable to determine.**`; } if (result.findings.length === 0) { return "## Code review\n\nNo issues found. Checked task completion, scope, bugs, regressions, permission and security risks, maintenance risks, and AGENTS.md compliance.\n\n**Merge recommendation: Merge based on this code review.**"; } return `## Code review\n\nFound ${result.findings.length} high-confidence issue${result.findings.length === 1 ? "" : "s"}:\n\n${result.findings.map((finding, index) => findingText(finding, index, language)).join("\n\n")}\n\n**Merge recommendation: Do not merge until the high-confidence issues above are resolved.**`; }