docs: refine CLI design with render-md subcommand
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
2. 生成 Markdown 输出,结构遵循 `README.md` 约定。
|
2. 生成 Markdown 输出,结构遵循 `README.md` 约定。
|
||||||
3. 生成 JSON 输出,字段可追溯到源 API 实体。
|
3. 生成 JSON 输出,字段可追溯到源 API 实体。
|
||||||
4. 处理评论正文为 Markdown 的情况,避免破坏外层文档结构。
|
4. 处理评论正文为 Markdown 的情况,避免破坏外层文档结构。
|
||||||
|
5. 提供 `json -> markdown` 子命令,从 JSON 文件渲染出与主流程一致的 Markdown 文档。
|
||||||
|
|
||||||
### 2.2 Out of Scope
|
### 2.2 Out of Scope
|
||||||
|
|
||||||
@@ -66,7 +67,7 @@
|
|||||||
|
|
||||||
1. `cli`
|
1. `cli`
|
||||||
- 解析参数与环境变量。
|
- 解析参数与环境变量。
|
||||||
- 决定输出格式与输出路径。
|
- 处理子命令分发与输出目标(默认 stdout)。
|
||||||
2. `gitea_client`
|
2. `gitea_client`
|
||||||
- 仅负责 API 调用与分页。
|
- 仅负责 API 调用与分页。
|
||||||
- 返回原始 DTO(与 API 字段接近)。
|
- 返回原始 DTO(与 API 字段接近)。
|
||||||
@@ -77,6 +78,8 @@
|
|||||||
- 将 `PrReviewDocument` 渲染为 Markdown。
|
- 将 `PrReviewDocument` 渲染为 Markdown。
|
||||||
5. `render_json`
|
5. `render_json`
|
||||||
- 将 `PrReviewDocument` 序列化为稳定 JSON。
|
- 将 `PrReviewDocument` 序列化为稳定 JSON。
|
||||||
|
6. `input_json`
|
||||||
|
- 从 JSON 文件反序列化为 `PrReviewDocument`。
|
||||||
|
|
||||||
### 4.2 核心数据模型(内部)
|
### 4.2 核心数据模型(内部)
|
||||||
|
|
||||||
@@ -126,6 +129,13 @@ CommentThread
|
|||||||
- Markdown: 面向阅读。
|
- Markdown: 面向阅读。
|
||||||
- JSON: 面向程序消费。
|
- JSON: 面向程序消费。
|
||||||
|
|
||||||
|
### 5.1 子命令数据流
|
||||||
|
|
||||||
|
1. `fetch` 子命令(主流程):
|
||||||
|
- `fetch -> normalize -> render(markdown|json) -> stdout/--out`
|
||||||
|
2. `render-md` 子命令:
|
||||||
|
- `read json file -> deserialize(PrReviewDocument) -> render(markdown) -> stdout/--out`
|
||||||
|
|
||||||
## 6. Markdown 输出规范
|
## 6. Markdown 输出规范
|
||||||
|
|
||||||
目标: 对齐 `README.md` 给出的基础结构,保证评论内容完整。
|
目标: 对齐 `README.md` 给出的基础结构,保证评论内容完整。
|
||||||
@@ -135,16 +145,18 @@ CommentThread
|
|||||||
````md
|
````md
|
||||||
# <repo> `#<pr-index>` <pr-title>
|
# <repo> `#<pr-index>` <pr-title>
|
||||||
|
|
||||||
<基本信息区>
|
<pr 描述>
|
||||||
|
|
||||||
## Commits
|
## Metadata
|
||||||
|
|
||||||
|
### Commits
|
||||||
- <sha-short> <title> (<author>, <date>)
|
- <sha-short> <title> (<author>, <date>)
|
||||||
...
|
...
|
||||||
|
|
||||||
## Diff Stat
|
### Diff Stat
|
||||||
- files changed: <n>
|
total: <files_changed> files, +<additions>, -<deletions>
|
||||||
- additions: <n>
|
- <file-path>: +<additions>, -<deletions>
|
||||||
- deletions: <n>
|
...
|
||||||
|
|
||||||
## Review 1 (<review-state>)
|
## Review 1 (<review-state>)
|
||||||
> <reviewer>
|
> <reviewer>
|
||||||
@@ -246,7 +258,14 @@ CommentThread
|
|||||||
|
|
||||||
## 8. CLI 与配置
|
## 8. CLI 与配置
|
||||||
|
|
||||||
### 8.1 输入
|
### 8.1 子命令
|
||||||
|
|
||||||
|
1. `fetch <pr_index>`
|
||||||
|
- 从 Gitea 拉取并输出文档。
|
||||||
|
2. `render-md --in <json_path>`
|
||||||
|
- 从 JSON 输入渲染 Markdown。
|
||||||
|
|
||||||
|
### 8.2 输入配置(`fetch`)
|
||||||
|
|
||||||
1. 必填:
|
1. 必填:
|
||||||
- `pr_index`(位置参数)
|
- `pr_index`(位置参数)
|
||||||
@@ -255,11 +274,15 @@ CommentThread
|
|||||||
- `GITEA_PR_CLI_URL`
|
- `GITEA_PR_CLI_URL`
|
||||||
- `GITEA_PR_CLI_REPO`
|
- `GITEA_PR_CLI_REPO`
|
||||||
|
|
||||||
### 8.2 输出参数(新增)
|
### 8.3 输出参数
|
||||||
|
|
||||||
1. `--format markdown|json|both`(默认 `markdown`)
|
1. `--format markdown|json`(默认 `markdown`,仅 `fetch` 支持)
|
||||||
2. `--out <path>`(单输出文件)
|
2. `--out <path>`(可选;未提供时默认输出到 stdout)
|
||||||
3. `--out-dir <dir>`(`both` 时用于分文件输出)
|
|
||||||
|
约束:
|
||||||
|
|
||||||
|
1. 移除 `both` 选项。
|
||||||
|
2. 移除 `--out-dir` 参数。
|
||||||
|
|
||||||
## 9. 错误处理策略
|
## 9. 错误处理策略
|
||||||
|
|
||||||
@@ -269,6 +292,9 @@ CommentThread
|
|||||||
- 评论缺父节点: 降级为孤立线程并 warning。
|
- 评论缺父节点: 降级为孤立线程并 warning。
|
||||||
- 分支或 commit 字段缺失: 输出 `null` 并 warning。
|
- 分支或 commit 字段缺失: 输出 `null` 并 warning。
|
||||||
4. 渲染错误: 指出是 Markdown 还是 JSON 渲染失败。
|
4. 渲染错误: 指出是 Markdown 还是 JSON 渲染失败。
|
||||||
|
5. `render-md` 输入错误:
|
||||||
|
- JSON 文件不存在/不可读时,返回非 0 并指明路径。
|
||||||
|
- JSON schema 不匹配时,定位字段并返回非 0。
|
||||||
|
|
||||||
## 10. 测试策略
|
## 10. 测试策略
|
||||||
|
|
||||||
@@ -276,6 +302,7 @@ CommentThread
|
|||||||
- 线程聚合(正常链路、孤立回复、乱序输入)。
|
- 线程聚合(正常链路、孤立回复、乱序输入)。
|
||||||
- Markdown fence 选择逻辑(三反引号冲突场景)。
|
- Markdown fence 选择逻辑(三反引号冲突场景)。
|
||||||
- JSON 序列化稳定性(字段与顺序)。
|
- JSON 序列化稳定性(字段与顺序)。
|
||||||
|
- `render-md` 反序列化与渲染一致性。
|
||||||
2. 快照测试
|
2. 快照测试
|
||||||
- 固定输入 DTO -> Markdown 输出快照。
|
- 固定输入 DTO -> Markdown 输出快照。
|
||||||
3. 集成测试
|
3. 集成测试
|
||||||
@@ -286,7 +313,7 @@ CommentThread
|
|||||||
1. M1: 完成 `gitea_client` + DTO。
|
1. M1: 完成 `gitea_client` + DTO。
|
||||||
2. M2: 完成 `normalize` 与线程规则。
|
2. M2: 完成 `normalize` 与线程规则。
|
||||||
3. M3: 完成 Markdown 渲染并对齐 README 结构。
|
3. M3: 完成 Markdown 渲染并对齐 README 结构。
|
||||||
4. M4: 完成 JSON 输出。
|
4. M4: 完成 JSON 输出与 `render-md` 子命令。
|
||||||
5. M5: 补齐测试与错误处理。
|
5. M5: 补齐测试与错误处理。
|
||||||
|
|
||||||
## 12. 验收标准
|
## 12. 验收标准
|
||||||
@@ -298,5 +325,6 @@ CommentThread
|
|||||||
- diff stat
|
- diff stat
|
||||||
- review/comment/reply 完整正文
|
- review/comment/reply 完整正文
|
||||||
2. 能输出 JSON 且字段完整、顺序稳定。
|
2. 能输出 JSON 且字段完整、顺序稳定。
|
||||||
3. 评论正文含 Markdown/代码块时,Markdown 总文档结构不被破坏。
|
3. `render-md --in <json_path>` 能从 JSON 成功产出 Markdown,且结构与 `fetch --format markdown` 一致。
|
||||||
4. 关键异常路径有清晰错误信息并返回非 0。
|
4. 评论正文含 Markdown/代码块时,Markdown 总文档结构不被破坏。
|
||||||
|
5. 关键异常路径有清晰错误信息并返回非 0。
|
||||||
|
|||||||
Reference in New Issue
Block a user