feat: 增加项目无关的本地清洗评审器
This commit is contained in:
@@ -18,12 +18,19 @@
|
||||
ReviewDocument
|
||||
├── render_markdown_report() ─────────────► 内存 Markdown 字符串
|
||||
│
|
||||
└── review_document_to_dict(detail=...)
|
||||
└── review_document_to_dict(detail=...)
|
||||
├───────────────────────────► 项目自己的界面或转换层
|
||||
└── render_json_report() ──► 内存 JSON 字符串
|
||||
│
|
||||
▼
|
||||
parse_json_report()
|
||||
│
|
||||
▼
|
||||
本地只读 reviewer 页面
|
||||
```
|
||||
|
||||
文件读取、保存位置、HTML 页面、权限和审核流程仍由调用项目决定。
|
||||
清洗输入读取、报告保存位置、权限和审核流程仍由调用项目决定。项目可以把正式 `full` JSON 保存到自己的目录,再显式启动
|
||||
`mdpolish-reviewer`;通用页面不替项目生成、命名或清理这些文件。
|
||||
|
||||
## 2. 构建过程为什么可以失败关闭
|
||||
|
||||
@@ -111,5 +118,38 @@ modifier 参数、位置和哈希,并在根对象写入 `schema_name=mdpolish.
|
||||
拒绝 NaN / Infinity,不写文件或添加 BOM。Markdown reporter 继续直接读取 `ReviewDocument`:它面向人类排版并包含 diff、
|
||||
动态围栏和 residual 展示限额,不依赖机器 schema。
|
||||
|
||||
机器投影只生产,不提供 JSON 到 `ReviewDocument` 的反序列化,也不能用于重新应用修改。完整字段、坐标、错误代码和兼容规则
|
||||
见 [`review-projection-schema-v1.md`](../reference/review-projection-schema-v1.md)。
|
||||
`parse_json_report()` 读取内存 JSON 字符串,返回新的普通 dict/list 容器。它不是 `ReviewDocument` 反序列化器,也不能用于
|
||||
重新应用修改。三个 detail 都会检查字段、枚举、引用、顺序、计数和正文暴露边界;只有 `full` 带有完整阶段文本,因此还能
|
||||
验证所有正文哈希、阶段链、Change 原文和行列,并使用 `edits.py` 的同一套精确编辑原语重放每个阶段。重放结果不等于
|
||||
stage after 时直接抛出 `ReviewParseError`,不会因为攻击者同时更新正文和声明哈希就接受伪造阶段。
|
||||
|
||||
schema 同一 major 的未知 object 字段不改变已有字段解释;未知 major、detail、状态、坐标契约或 enum 会被拒绝。解析错误只
|
||||
说明字段路径和契约类别,不复制正文、参数、reason 或诊断消息。
|
||||
|
||||
完整字段、坐标、错误代码、读取保证和兼容规则见
|
||||
[`review-projection-schema-v1.md`](../reference/review-projection-schema-v1.md)。
|
||||
|
||||
## 7. 本地页面为什么仍然保持项目无关
|
||||
|
||||
本地 reviewer 只接受用户明确传入的一个目录,并读取其中直属的 `*.review.json`。它从文件名派生保守的页面标签,不读取
|
||||
原始 Markdown 路径、项目 manifest、默认流水线或业务状态。Python 服务负责正式 JSON 校验和码点到 UTF-16 的只读定位,
|
||||
React 页面只消费同源内部 API。
|
||||
|
||||
```text
|
||||
项目保存的 full JSON
|
||||
│
|
||||
▼
|
||||
官方 reader:验证 schema、哈希、阶段和 Change
|
||||
│
|
||||
▼
|
||||
127.0.0.1 上的只读 API
|
||||
│
|
||||
▼
|
||||
文档列表 ── Modifier 时间线 ── 双栏源码比较 ── Change 跳转
|
||||
```
|
||||
|
||||
`editor_range` 只用于 CodeMirror 选择和滚动。正式 span 仍是所属 `stage.before.markdown` 中的 Python 码点半开范围,不写回
|
||||
JSON,也不变成新的审计权威。
|
||||
|
||||
服务只绑定回环地址,只接受 `GET` / `HEAD`,校验 Host 和 Origin,不开放 CORS,也没有写入、重新清洗、上传或 shell 接口。
|
||||
页面不渲染 Markdown 和 HTML,不加载图片或外部资源。它展示的是清洗证据,不记录批准、拒绝、批注或审核结论。
|
||||
|
||||
Reference in New Issue
Block a user