-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(v1.0.12): 增加日志记录和重试功能 #12
Conversation
h7ml
commented
Dec 28, 2024
- 新增日志记录系统,可详细记录翻译过程中的成功和失败信息
- 添加自动重试机制,对失败的翻译进行多次尝试
- 优化目录结构可视化功能,支持过滤和图标显示
- 修复了一些已知问题并提高了代码的健壮性
- 新增日志记录系统,可详细记录翻译过程中的成功和失败信息 - 添加自动重试机制,对失败的翻译进行多次尝试 - 优化目录结构可视化功能,支持过滤和图标显示 - 修复了一些已知问题并提高了代码的健壮性
📝 Walkthrough概述遍历这个版本更新(从v1.0.11到v1.0.12)主要包括对AI Markdown翻译器的功能增强。新版本引入了日志记录、重试机制、目录结构可视化等特性,并更新了相关文档和配置文件。版本号在多个文件中保持一致更新。 变更
序列图sequenceDiagram
participant User
participant Translator
participant LogSystem
participant RetryMechanism
User->>Translator: 启动翻译
Translator->>RetryMechanism: 尝试翻译文件
alt 翻译成功
RetryMechanism-->>LogSystem: 记录成功日志
else 翻译失败
RetryMechanism->>RetryMechanism: 重试翻译
alt 重试成功
RetryMechanism-->>LogSystem: 记录成功日志
else 重试失败
RetryMechanism-->>LogSystem: 记录失败日志
end
end
Translator-->>User: 返回翻译结果
诗歌
Tip CodeRabbit's docstrings feature is now available as part of our Early Access Program! Simply use the command Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (7)
src/index.ts (7)
18-21
: 建议将日志目录设为可配置为了增强灵活性,可以考虑允许用户通过命令行参数或环境变量指定日志目录,而不是直接固定在
__dirname/log
路径下。
134-142
: logMessage 函数建议优化输出顺序目前先写入文件再打印到控制台,也可以根据实际需求考虑先输出到控制台以便即时查看,然后再追加到文件,实现更灵活的日志策略。
315-316
: 开始处理文件时记录日志可考虑在此处加入当前处理文件的进度信息(例如当前索引/总文件数),便于监控批量翻译的进展。
334-339
: 移除开头三引号和换行处理只处理首行与换行符,若后续需要更通用的处理方式,可考虑进一步封装此逻辑。
341-344
: 移除结尾三引号与移除开头类似,建议提取到专用函数,避免重复代码。
380-430
: printDirectoryStructure 函数新增图标与过滤功能目前采用同步读取的方式,若需要处理超大目录或对性能有更高要求,可考虑改为异步处理。一般规模下此实现已足够。
651-651
: 单文件翻译结束后清理日志记录逻辑与目录翻译一致,但需注意当多个文件共用同一日志文件时,清理可能影响其他未完成的翻译流程。可在后续优化。
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
CHANGELOG.md
(4 hunks)README-zh.md
(4 hunks)README.md
(4 hunks)package.json
(1 hunks)src/index.ts
(10 hunks)
✅ Files skipped from review due to trivial changes (2)
- package.json
- CHANGELOG.md
🧰 Additional context used
🪛 LanguageTool
README.md
[uncategorized] ~115-~115: Loose punctuation mark.
Context: ... current version of the tool. - --log
: Enable logging (default: false). Enable...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~117-~117: Loose punctuation mark.
Context: ...and failure information. - --log-file
: Specify the log file path (default: `<p...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~119-~119: Loose punctuation mark.
Context: ... failures will be logged. - --log-dir
: Specify the log directory (default: `<p...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~121-~121: Loose punctuation mark.
Context: ...files will be stored. - --retry-count
: Number of retry attempts for failed tra...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~123-~123: Loose punctuation mark.
Context: ... failed translations. - --retry-delay
: Delay in seconds between retry attempts...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~125-~125: Loose punctuation mark.
Context: ...wait between retry attempts. - --path
, -p
: Display directory structure (defa...
(UNLIKELY_OPENING_PUNCTUATION)
README-zh.md
[uncategorized] ~24-~24: 1.动词被副词修饰时,助词应该用‘得’;2.省略宾语时,助词应该用‘的’;可能造成歧义。您的意思是不是:翻译"得"自动重
Context: ...- 在翻译过程中保留 Markdown 语法 - 支持递归目录翻译 - 失败翻译的自动重试机制 - 全面的日志记录系统 - 目录结构可视化 - 文件失败跟踪和恢复...
(wb4)
🪛 Markdownlint (0.37.0)
README.md
208-208: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
README-zh.md
208-208: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (94)
src/index.ts (35)
17-17
: 无实际变更
31-34
: 目录检查逻辑看起来合理
该逻辑能确保在进行日志操作前创建目录,未发现明显问题。
107-110
: logFailedFile 并发写入注意事项
如果在多进程或多线程场景下同时调用该函数,可能产生竞争写入风险。建议确认是否只在单进程下运行,或者在需要并发场景时考虑文件写锁或使用写入队列。
112-119
: getFailedFiles 逻辑简单明了
能可靠读取失败文件列表,若需要增强稳健性,可在读取失败时增加异常处理与提示。
121-127
: clearLogFile 功能完善
可有效清理已翻译成功的文件记录;若存在并发场景,仍需留意同步或互斥机制。
129-132
: sleep 函数实现无问题
异步延迟写法直观明了,性能与可读性均无异常。
149-149
: 扩展 translateText 参数,统一重试设置
将重试相关配置统一封装在 retryOptions
对象里,增强了可读性与灵活度。
151-193
: 重试机制逻辑
在捕获错误后进行多次重试并记录日志,流程清晰。可在后续根据错误类型判断是否要提前中止,防止在不可恢复的故障上浪费多次重试。
286-286
: 更新注释无功能变更
296-302
: 引入 options 参数集中管理重试与日志配置
减少了形参长度,结构更清晰,加强了可维护性。
304-307
: 有条件地创建日志目录
仅在启用日志时创建目录,逻辑符合需求。
312-313
: 引入 successfulFiles 数组用于追踪成功翻译的文件
有助于后续进行失败日志清理,思路清晰。
318-318
: 读取 Markdown 文件
逻辑简单,直接调用现有函数,符合需求。
325-330
: 向 translateText 传递外部配置
显式解构重试参数,增强了可读性与明确性。
346-352
: 根据 rename 选项生成输出文件名
逻辑直观;如有可能产生的长路径或命名冲突,可在后续考虑增加路径检测。
354-357
: 自动创建输出目录
确保翻译结果能正确写入,不存在明显问题。
359-362
: 写入文件并记录成功状态
有利于统计成功翻译文件数量,逻辑符合预期。
363-365
: 写入文件失败时记入失败日志
完善的错误处理,保证失败文件没有遗漏。
367-368
: 翻译失败时记录日志
统一的失败处理方式,方便后续排查。
371-377
: 翻译完成后清理失败日志记录
实现了移除已成功的文件,保持失败日志的准确性。
379-379
: 注释变更
500-504
: 新增 --retry 命令行选项
与 retryOptions
相匹配,让用户可通过命令行来控制翻译重试机制。
505-509
: 新增 --log 命令行选项
允许用户灵活开启或关闭日志输出,使用体验更佳。
510-514
: 新增 --log-file 命令行选项
可更改日志文件路径,与日志目录相配合满足多场景需求。
515-519
: 新增 --log-dir 命令行选项
可将日志文件统一存放到自定义目录,便于运维管理。
520-524
: 新增 --retry-count 命令行选项
允许用户根据稳定性需求设定重试次数,保持灵活性。
525-529
: 新增 --retry-delay 命令行选项
允许指定重试间隔时间,适配不同网络或速率需求。
530-534
: 新增 --path 命令行选项
与 printDirectoryStructure 功能配合,可显示项目目录结构。
553-572
: 如指定 path 参数则显示目录结构
与前面新增的目录可视化功能对应,逻辑衔接顺畅。
574-581
: 封装选项进 options 对象
减少参数分散传递,提高可维护性。
599-599
: 将 options 传递给 translateDirectory
使用与函数签名相符,保持一致性。
630-630
: 调用 translateText 时应用重试选项
配合前面逻辑,保证单文件翻译与目录翻译方式一致。
631-635
: 重试配置与日志配置对象结构清晰
便于维护与后续扩展,形式规范。
653-655
: 调用 clearLogFile 并传入单文件清理列表
与目录翻译做法保持一致,易于理解。
658-660
: 翻译失败时写入日志文件
保证漏翻与出错情况都可追溯。
README-zh.md (45)
4-8
: 新增徽章信息
这些徽章让用户快速了解版本、下载量及构建状态,改动清晰、无问题。
15-15
: 增加多语言链接导航
为用户在中文与英文文档间切换提供便利,设计得当。
17-17
: 简要介绍工具功能
说明简洁,便于新用户理解工具用途。
21-27
: 新增或改进特性描述
涵盖了跨语言翻译、重试机制、日志系统等亮点,信息完整。
🧰 Tools
🪛 LanguageTool
[uncategorized] ~24-~24: 1.动词被副词修饰时,助词应该用‘得’;2.省略宾语时,助词应该用‘的’;可能造成歧义。您的意思是不是:翻译"得"自动重
Context: ...- 在翻译过程中保留 Markdown 语法 - 支持递归目录翻译 - 失败翻译的自动重试机制 - 全面的日志记录系统 - 目录结构可视化 - 文件失败跟踪和恢复...
(wb4)
29-29
: 新增先决条件标题
帮助用户清晰了解使用工具前所需环境。
32-32
: 补充 npm 要求
Node.js 及 npm 同时说明,合理且直观。
37-37
: 更新安装步骤说明
为用户提供明确的操作指引,无疑是友好的改进。
39-39
: 安装依赖具体命令示例
展示详细的 npm install 示例,便于初学者上手。
54-54
: 新增或修改的 start 脚本说明
有利于统一项目启动方式,操作简便。
57-58
: 对 format 与 format:check 脚本的简要概述
使用 Prettier 格式化代码,保证风格统一。
60-61
: 新增 changelog 与 version 脚本描述
自动生成并更新版本日志,便于版本管理。
66-66
: 添加关于使用 Node.js 运行 CLI 的说明
覆盖了命令及最小必需参数,易于理解。
71-71
: Node.js 直接运行示例
包含示例与必要选项,指导性较强。
77-77
: 使用 npx 运行说明
更便捷的方式,用户体验更好。
89-89
: 独立可执行文件用法示例
方便需要打包成单文件的场景,思路清晰。
94-97
: 新增 --input、--url与 --extension 选项说明
让用户明白可用选项及其区分,文档更完善。
99-99
: 新添 --rename 选项说明
可自定义译后文件名,增强灵活度。
101-101
: 新增 --output 选项说明
默认使用原文件名保证简单,同时可自定义输出。
103-103
: 新增 --language 选项说明
将目标语言作为必选项的要求表达得非常明确。
105-105
: 新增 --openai-url 选项说明
支持自定义翻译接口地址,适应多部署场景。
107-107
: 新增 --api-key 选项说明
允许自定义或覆盖默认密钥,贴合不同环境的需求。
109-109
: 新增 --model 选项说明
可切换不同模型进行翻译,扩展性良好。
115-116
: 新增 --log 选项说明
用户可选择是否启用日志功能,具备实用价值。
117-118
: 新增 --log-file 选项说明
可自行配置具体日志文件位置,便捷度提升。
119-120
: 新增 --log-dir 选项说明
日志目录与文件区分管理,架构更灵活。
121-122
: 新增 --retry-count 选项说明
自定义最大重试次数,增强可靠性。
123-124
: 新增 --retry-delay 选项说明
可设定重试间隔,防止过度频繁调用。
125-126
: 新增 --path 选项说明
允许查看指定目录结构,满足多层级查看需求。
127-127
: 提示 input 与 url 参数互斥
避免用户误用两者,提示明确。
131-131
: 新增环境变量说明段落
为用户提供多种配置方式,文档更全面。
134-134
: API_KEY 环境变量具体用法
让用户明白如何在不同环境下提供密钥。
137-137
: 强调可通过 .env 存储环境变量
方便本地开发与部署的典型做法。
171-171
: 新增示例:指定输出文件名
对只翻译单一文件场景提供了更具体的引导。
177-181
: 新增示例:启用日志与重试选项
清晰展示多参数组合的使用情况。
183-187
: 新增示例:自定义日志目录
为多种部署环境提供灵活的日志写入位置。
189-198
: 新增示例:完整日志与重试配置
结合多项功能,让用户快速了解如何实现高级配置。
200-218
: 新增示例:使用 --path 选项查看目录结构
可视化目录结构的用法示例,展示清晰的树形输出,易于理解。
🧰 Tools
🪛 Markdownlint (0.37.0)
208-208: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
220-229
: 新增示例:自动重试与日志记录
直观呈现完整命令行示例,减少用户摸索成本。
230-239
: 新增示例:翻译目录并跟踪失败文件
展示与日志系统的配合,便于定位与重试失败文件。
242-242
: 添加许可证小节标题
集中展示许可信息,满足开源合规要求。
246-246
: 补充 Git 仓库信息
方便新读者前往仓库查看代码和提交。
251-251
: 版本号更新至 1.0.12
对照实际发布进度,保证文档与代码同步。
256-256
: 新增 CI 信息描述
帮助贡献者快速了解项目构建与测试流程。
258-261
: 对 CI 工作流程主要环节进行简要说明
列出 lint、测试、构建等关键步骤,让贡献者知晓自动化环节。
269-269
: 提供支持信息
引导用户在仓库提问或提交 issue,沟通渠道明确。
README.md (14)
21-27
: 新增多项功能介绍
包含目录翻译、重试机制、日志系统等,多功能特性一目了然。
115-116
: 新增 --log 选项说明
可自由启用或关闭日志功能,增强工具适应性。
🧰 Tools
🪛 LanguageTool
[uncategorized] ~115-~115: Loose punctuation mark.
Context: ... current version of the tool. - --log
: Enable logging (default: false). Enable...
(UNLIKELY_OPENING_PUNCTUATION)
117-118
: 新增 --log-file 选项说明
允许用户将日志重定向到指定文件,配置更灵活。
🧰 Tools
🪛 LanguageTool
[uncategorized] ~117-~117: Loose punctuation mark.
Context: ...and failure information. - --log-file
: Specify the log file path (default: `<p...
(UNLIKELY_OPENING_PUNCTUATION)
119-120
: 新增 --log-dir 选项说明
将日志文件与项目其余内容分离,利于维护与审计。
🧰 Tools
🪛 LanguageTool
[uncategorized] ~119-~119: Loose punctuation mark.
Context: ... failures will be logged. - --log-dir
: Specify the log directory (default: `<p...
(UNLIKELY_OPENING_PUNCTUATION)
121-122
: 新增 --retry-count 选项说明
用户可自定义要重试的次数,保证过程有更高成功率。
🧰 Tools
🪛 LanguageTool
[uncategorized] ~121-~121: Loose punctuation mark.
Context: ...files will be stored. - --retry-count
: Number of retry attempts for failed tra...
(UNLIKELY_OPENING_PUNCTUATION)
123-124
: 新增 --retry-delay 选项说明
可自由设置每次重试间隔,减少对服务端的冲击。
🧰 Tools
🪛 LanguageTool
[uncategorized] ~123-~123: Loose punctuation mark.
Context: ... failed translations. - --retry-delay
: Delay in seconds between retry attempts...
(UNLIKELY_OPENING_PUNCTUATION)
125-126
: 新增 --path 选项说明
提供目录结构显示能力,辅助用户直观了解文件分布。
🧰 Tools
🪛 LanguageTool
[uncategorized] ~125-~125: Loose punctuation mark.
Context: ...wait between retry attempts. - --path
, -p
: Display directory structure (defa...
(UNLIKELY_OPENING_PUNCTUATION)
177-181
: 示例:日志与重试配置
直观展现多参数组合,可复制后直接试用。
183-187
: 示例:自定义日志目录
更完善的多环境兼容设计,一目了然。
189-198
: 示例:全面日志与重试配置
涵盖所有常见选项,给予用户最详尽的演示。
200-218
: 示例:使用 --path 参数查看目录结构
利用 ASCII 树形展示信息,提升可读性。
🧰 Tools
🪛 Markdownlint (0.37.0)
208-208: null
Fenced code blocks should have a language specified
(MD040, fenced-code-language)
220-229
: 示例:自动重试与日志记录
搭配使用重试与日志,可迅速定位问题文件与失败原因。
230-239
: 示例:翻译目录并跟踪失败文件
与日志机制结合,支持持续追踪并后续修复失败翻译记录。
251-251
: 更新版本号至 1.0.12
与实际版本发布保持一致,文档与功能同步升级。