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