# 中文备注转换为英文 - 实现方案 ## 项目概述 基于需求文档,本项目需要实现一个TypeScript脚本,用于将代码仓库内的中文备注自动转换为英文备注。 ## 核心模块设计 ### 1. 文件扫描模块 (FileScanModule) ```typescript interface FileScanConfig { root: string; extensions: string[]; } interface SourceFile { path: string; content: string; language: 'typescript' | 'javascript' | 'go' | 'markdown' | 'other'; } ``` **功能职责:** - 调用git命令获取仓库所有源码文件 - 根据文件扩展名过滤目标文件 - 读取文件内容并识别编程语言类型 **核心函数:** - `getGitTrackedFiles(root: string): Promise` - `filterFilesByExtensions(files: string[], extensions: string[]): string[]` - `readSourceFiles(filePaths: string[]): Promise` ### 2. 中文检测模块 (ChineseDetectionModule) ```typescript interface ChineseComment { content: string; startLine: number; endLine: number; startColumn: number; endColumn: number; type: 'single-line' | 'multi-line' | 'documentation'; } interface FileWithComments { file: SourceFile; chineseComments: ChineseComment[]; } ``` **功能职责:** - 解析不同语言的注释语法 - 识别包含中文字符的注释 - 提取注释的精确位置信息 **核心函数:** - `detectChineseInComments(file: SourceFile): ChineseComment[]` - `parseCommentsByLanguage(content: string, language: string): Comment[]` - `containsChinese(text: string): boolean` ### 3. 翻译服务模块 (TranslationModule) ```typescript interface TranslationConfig { apiKey: string; model: string; maxRetries: number; timeout: number; } interface TranslationResult { original: string; translated: string; confidence: number; } ``` **功能职责:** - 调用OpenAI API进行翻译 - 处理翻译错误和重试 - 保持代码注释的格式和结构 **核心函数:** - `translateComment(comment: string, context?: string): Promise` - `batchTranslate(comments: string[]): Promise` - `createTranslationPrompt(comment: string, language: string): string` ### 4. 文件替换模块 (FileReplacementModule) ```typescript interface ReplacementOperation { file: string; replacements: Array<{ start: number; end: number; original: string; replacement: string; }>; } ``` **功能职责:** - 精确替换文件中的中文注释 - 保持代码格式和缩进 - 创建备份机制 **核心函数:** - `replaceCommentsInFile(file: SourceFile, replacements: ReplacementOperation): Promise` - `createBackup(filePath: string): Promise` - `applyReplacements(content: string, replacements: Replacement[]): string` ### 5. 报告生成模块 (ReportModule) ```typescript interface ProcessingReport { totalFiles: number; processedFiles: number; translatedComments: number; errors: Error[]; duration: number; details: FileProcessingDetail[]; } interface FileProcessingDetail { file: string; commentCount: number; status: 'success' | 'error' | 'skipped'; errorMessage?: string; } ``` **功能职责:** - 记录处理过程中的统计信息 - 生成详细的处理报告 - 记录错误和异常情况 ## 命令行接口设计 ### 主命令 ```bash ai-translate --root --exts [options] ``` ### 参数说明 - `--root, -r `: 需要处理的根目录(必填) - `--exts, -e `: 文件扩展名数组,如 "ts,js,go,md"(可选,默认处理所有文本文件) - `--openai-key `: OpenAI API密钥(可选,也可通过环境变量提供) - `--model `: OpenAI模型名称(可选,默认gpt-3.5-turbo) - `--dry-run`: 仅分析不实际修改文件(可选) - `--backup`: 创建文件备份(可选,默认启用) - `--verbose, -v`: 详细输出模式(可选) - `--output `: 报告输出文件(可选) ## 技术实现细节 ### 1. 函数式编程范式 采用FP风格,主要体现在: - 纯函数设计:无副作用的数据转换 - 不可变数据结构:使用immutable.js或原生不可变操作 - 函数组合:通过pipe和compose构建处理流水线 - 错误处理:使用Either/Maybe模式处理异常 ### 2. 异步处理策略 ```typescript // 使用函数式风格的异步处理管道 const processRepository = pipe( getGitTrackedFiles, asyncMap(readFile), asyncFilter(hasChineseComments), asyncMap(extractChineseComments), asyncMap(translateComments), asyncMap(applyTranslations), generateReport ); ``` ### 3. 错误处理机制 - 使用Result类型封装成功/失败状态 - 实现重试机制处理网络错误 - 记录详细的错误日志和上下文 - 支持部分失败的情况下继续处理 ### 4. 性能优化 - 并发处理:合理控制并发数量避免API限制 - 缓存机制:避免重复翻译相同内容 - 增量处理:仅处理修改过的文件 - 流式处理:大文件分块处理 ## 项目结构 ``` src/convert-comments/ ├── index.ts # 主入口文件 ├── cli/ │ ├── command.ts # Commander.js命令定义 │ └── config.ts # 配置管理 ├── modules/ │ ├── file-scan.ts # 文件扫描模块 │ ├── chinese-detection.ts # 中文检测模块 │ ├── translation.ts # 翻译服务模块 │ ├── file-replacement.ts # 文件替换模块 │ └── report.ts # 报告生成模块 ├── utils/ │ ├── git.ts # Git操作工具 │ ├── language.ts # 编程语言识别 │ ├── chinese.ts # 中文字符检测 │ └── fp.ts # 函数式编程工具 ├── types/ │ ├── index.ts # 类型定义 │ └── config.ts # 配置类型 └── __tests__/ ├── unit/ # 单元测试 └── integration/ # 集成测试 ``` ## 依赖包选择 ### 核心依赖 - `commander`: 命令行接口 - `openai`: OpenAI API客户端 - `simple-git`: Git操作 - `ramda` 或 `lodash/fp`: 函数式编程工具 ### 开发依赖 - `typescript`: TypeScript编译器 - `@types/node`: Node.js类型定义 - `jest`: 测试框架 - `prettier`: 代码格式化 - `eslint`: 代码检查 ## 开发阶段规划 ### 阶段1:基础框架搭建 1. 项目初始化和依赖安装 2. TypeScript配置和构建脚本 3. 命令行接口框架 4. 基础类型定义 ### 阶段2:核心功能实现 1. 文件扫描模块 2. 中文检测模块 3. 翻译服务模块 4. 文件替换模块 ### 阶段3:完善和优化 1. 报告生成模块 2. 错误处理和重试机制 3. 性能优化 4. 单元测试和集成测试 ### 阶段4:发布准备 1. 文档完善 2. 使用示例 3. 打包和发布脚本 4. CI/CD配置 ## 使用示例 ```bash # 基本使用 ai-translate --root ./src --exts ts,js,go # 仅分析不修改 ai-translate --root ./src --dry-run # 指定OpenAI配置 ai-translate --root ./src --openai-key sk-... --model gpt-4 # 生成详细报告 ai-translate --root ./src --verbose --output report.json ``` ## 质量保证 ### 测试策略 - 单元测试:覆盖所有核心函数 - 集成测试:端到端流程验证 - 性能测试:大型仓库处理能力 - 安全测试:API密钥保护 ### 代码质量 - TypeScript严格模式 - ESLint规则检查 - Prettier代码格式化 - 代码覆盖率要求>90% ## 风险和缓解措施 ### 主要风险 1. **API配额限制**:OpenAI API调用频率限制 2. **翻译质量**:自动翻译可能不够准确 3. **文件损坏**:替换操作可能破坏文件 4. **性能问题**:大型仓库处理时间过长 ### 缓解措施 1. 实现智能重试和降级机制 2. 提供人工审核和修正功能 3. 强制备份和回滚机制 4. 并发控制和进度显示