实现本地清洗实验与产物保存

This commit is contained in:
2026-08-22 17:25:44 +08:00
parent eed2119016
commit 6fcc7d5736
13 changed files with 2701 additions and 20 deletions
+30 -12
View File
@@ -7,8 +7,9 @@
profile 表达论文、政务文档、RAG、文档对比等不同需求。
仓库当前已从纯文档治理进入第一版核心实现阶段:已经提供可安装的 Python 内存处理包和测试,用于验证
组件组合、精确修改和审计协议,并已有一个严格整行匹配的论文清洗组件。仓库仍不提供完整规则集、命令行工具、
文件读写适配器或生产接口,因此目前还不是拿来即可完成整篇文档清洗的成品工具。
组件组合、精确修改和审计协议,并已有一个严格整行匹配的论文清洗组件。仓库另有一个只供本地评审的实验脚本,
可以保存指定论文的成功输出、审计和 diff。仓库仍不提供完整规则集、公共命令行工具、通用文件适配器或生产接口,
因此目前还不是拿来即可完成整篇文档清洗的成品工具。
## 当前阶段
@@ -17,11 +18,13 @@ profile 表达论文、政务文档、RAG、文档对比等不同需求。
- 提供可安装的 Python 3.11+ 内存处理包,运行时只依赖标准库;
- 已实现不可变数据契约、组件基类、原子修改执行器、顺序流水线、审计记录和最终稳定性复查;
- 当前唯一正式组件是 `paper.arxiv_submission_stamp`,只删除严格整行匹配的 arXiv 提交边栏戳;
- 该组件已在 5 份论文 Markdown 上只读验证,只命中 sim 和 springer 各一处,合法参考文献保持不变;
- 当前基础检查为 Ruff、mypy 和 87 项 pytest 测试,实际命令见本文“当前可用检查”。
- 已有仓库内实验运行层,能严格读取显式清单、保存成功 Markdown、JSON 审计和 unified diff,并保持输入不变;
- 该组件已对 5 份论文 Markdown 完成保存型实验,只修改 sim 和 springer 各一处,合法参考文献保持不变;
- 当前基础检查为 Ruff、mypy 和 113 项 pytest 测试,实际命令见本文“当前可用检查”。
项目还没有完整清洗规则集、Markdown/HTML parser、profile 格式、文件读写、CLI、批处理或生产接口。当前组件
只能证明第一条严格规则已经闭环,不能据此认为论文、GovDoc、表格或图片已经具备完整清洗能力。
项目还没有完整清洗规则集、Markdown/HTML parser、profile 格式、通用文件输入接口、公共 CLI、通用批处理或生产接口。
当前实验脚本只固定运行已批准的 5 份论文和一个组件;它只能证明第一条严格规则已经闭环,不能据此认为论文、GovDoc、
表格或图片已经具备完整清洗能力。
## 服务对象与复用目标
@@ -43,6 +46,9 @@ GovDoc 目录、具体客户名称或某一转换器的固定输出路径。
两组数据都不是可提交的自动测试 fixture。`data/` 已被 Git 忽略,清洗实验不得覆盖这些输入。
本地清洗实验产物位于 `artifacts/<YYYY-MM-DD>/runs/<run_id>/`。产物可能包含完整原文,同样受 Git 忽略,
默认保留 30 个日历日,不得提交或复制到外部系统。当前只批准为上述 5 份论文副本保存产物,未批准保存 GovDoc 输出。
## 面向复用的设计原则
- **通用核心**:只接收 Markdown;第一版只执行确定、可审计的精确修改,不读取 PDF、图片或转换器 JSON;
@@ -66,18 +72,26 @@ mdpolish/
│ ├── __init__.py # 第一版核心公共导出
│ ├── component.py # 组件基类和元数据契约
│ ├── edits.py # 文本编辑验证与原子应用
│ ├── experiment.py # 本地实验输入预检与批量编排
│ ├── models.py # 不可变数据模型和运行状态
│ ├── pipeline.py # 顺序执行和最终稳定性复查
│ ├── reporting.py # JSON 审计、行列位置和 unified diff
│ ├── artifact_store.py # 私有产物目录和原子发布
│ ├── py.typed # 类型信息声明
│ └── components/
│ ├── __init__.py
│ └── arxiv_submission_stamp.py
├── scripts/
│ └── run_clindb_arxiv_experiment.py # 固定 5 份论文的仓库内实验入口
├── tests/
│ ├── test_arxiv_submission_stamp.py
│ ├── test_artifact_store.py
│ ├── test_component.py
│ ├── test_edits.py
│ ├── test_experiment.py
│ ├── test_models.py
── test_pipeline.py
── test_pipeline.py
│ └── test_reporting.py
├── data/ # 本地测试数据;Git 忽略;此处只展开常用入口
│ └── md/
│ ├── dmp.md
@@ -85,6 +99,8 @@ mdpolish/
│ ├── jama.md
│ ├── sim.md
│ └── springer.md
├── artifacts/ # 本地敏感实验产物;Git 忽略
│ └── <YYYY-MM-DD>/runs/<run_id>/
└── research-wiki/
├── README.md # Wiki 分类与维护规则
├── design/ # 批准前的选择;批准后冻结
@@ -104,9 +120,11 @@ mdpolish/
4. 与任务直接相关的 `research-wiki/design/` 记录。
第一版核心的当前机制见 `research-wiki/explanation/first-executable-core.md`,首个真实组件见
`research-wiki/explanation/arxiv-submission-stamp.md`。下一项候选是 ClinDB 范围中的 HTML 实体双重转义,
`research-wiki/explanation/arxiv-submission-stamp.md`,本地实验产物机制见
`research-wiki/explanation/local-experiment-artifacts.md`,实际运行步骤见
`research-wiki/guides/run-local-clindb-arxiv-experiment.md`。下一项候选是 ClinDB 范围中的 HTML 实体双重转义,
但必须先用新 design 确定只在哪些 HTML 范围替换、如何避开字面示例以及实体替换边界。解析器、CLI、文件适配器、
profile 格式和独立检查能力仍需分别设计,不能从当前核心或单个组件存在推导为已经获批。
profile 格式和独立检查能力仍需分别设计;当前本地实验适配器不能被推导成这些公共接口已经获批。
## 当前可用检查
@@ -117,7 +135,7 @@ python -m venv .venv
# 第一版核心的基础验收
.venv/bin/ruff check .
.venv/bin/mypy src tests
.venv/bin/mypy src tests scripts/run_clindb_arxiv_experiment.py
.venv/bin/pytest
# 两份 Agent 入口除标题外必须一致;无输出且退出码为 0 表示通过
@@ -130,6 +148,6 @@ find research-wiki -maxdepth 2 -type f | sort
git status --short
```
上述安装和三项基础验收已于 2026-08-22 在 Python 3.13.11 环境实际运行:Ruff 通过,mypy 检查 12 个源码
测试文件无问题,pytest 共 87 项测试通过。`requires-python` 仍以 `pyproject.toml` 声明的 Python 3.11 及以上为准;
上述安装和三项基础验收已于 2026-08-22 在 Python 3.13.11 环境实际运行:Ruff 通过,mypy 检查 19 个源码
测试和实验脚本文件无问题,pytest 共 113 项测试通过。`requires-python` 仍以 `pyproject.toml` 声明的 Python 3.11 及以上为准;
本次结果不等于已经在每个受支持版本上完成兼容性验证。