# 实施边界锁定后的补齐修复计划 ## 1. 文档目的 在 [迁移前后业务语义对照分析.md](./迁移前后业务语义对照分析.md) 已经明确“业务逻辑保持一致、代码实现按当前平台规范重构”的前提下,本文档进一步回答 4 个问题: - 当前内部公文模块还差哪些补齐项 - 这些补齐项里哪些是 P0 / P1 / P2 - 应该按什么顺序推进,才能低风险落地 - 每一阶段完成后,什么算真正完成 本文档不再讨论“要不要按旧系统照搬”,而是直接面向实施。 --- ## 2. 总体判断 当前 `govdoc` 模块的状态不是“从零开始”,也不是“只差几个 bug”。 更准确地说: - **业务骨架已迁入平台** - **执行主链已基本打通** - **但交付语义还没有完全恢复** 因此后续工作重点不是继续铺骨架,而是: - **把已经迁进来的骨架收口成一套完整、可验收的业务闭环** 从实施角度看,当前缺口应分成三层: - `P0`:不补就不构成完整业务闭环 - `P1`:主链能跑,但结果质量或体验还不满足验收 - `P2`:结构性优化和后续治理项 --- ## 3. 实施总原则 后续所有修复都必须同时满足: 1. **业务语义对齐迁移前项目** 2. **代码实现遵守当前 `leaudit-platform` 规范** 落到执行上,就是三条硬规则: - 不允许为了快,直接把旧项目代码原样塞进当前平台 - 不允许为了平台化,削弱旧项目已成立的业务语义 - 不允许只把接口点亮,而不恢复正式结果闭环 --- ## 4. 当前待补齐项总览 ## 4.1 P0:必须先收口的闭环项 ### P0-1 报告产物闭环恢复 当前问题: - `run` 完成后,后端报告读取接口虽然存在,但产物生成链路并未真正闭环 - 前端详情页和列表页已经暴露了 `报告 HTML / 批注 DOCX` 能力 - 这会形成“页面有入口、业务无结果”的假闭环 业务原因: - 旧项目里报告产物是正式业务结果,不是附属能力 实施目标: - 每次 `govdoc run` 成功后,必须形成并持久化: - `annotated.docx` - `report.html` - `paragraphs.html` - 平台侧应将这些产物写入正式索引,并稳定提供读取能力 对应代码区域: - `fastapi_modules/fastapi_leaudit/govdoc_bridge/result_adapter.py` - `fastapi_modules/fastapi_leaudit/govdoc_bridge/runner.py` - `fastapi_modules/fastapi_leaudit/govdoc_bridge/storage_adapter.py` - `fastapi_modules/fastapi_leaudit/services/impl/govdocServiceImpl.py` 完成判定: - `run completed` 后,详情页 `批注 DOCX` 和 `报告 HTML` 均真实可用 - `GetRunParagraphs()` 返回稳定可渲染段落视图 - 列表页“报告”入口可直接打开真实 HTML 报告 --- ### P0-2 规则生效链路正式化 当前问题: - 接口已出现 `ruleVersionId` - 但当前执行时仍主要依赖固定 `rules.yaml` 路径解析 - 这意味着“参数存在”与“规则真正生效”不是一回事 业务原因: - 旧项目至少保证“当前生效规则集明确、审查结果知道自己用了哪版规则” - 平台化后不能退回到长期硬编码规则路径 实施目标: - `ruleVersionId` 必须真正进入 `govdoc` 执行链路 - 审查结果必须可追溯到本次使用的规则版本 - `/govdoc/rules` 与 `/govdoc/rules/{ruleId}` 的返回语义必须与实际生效规则一致 对应代码区域: - `fastapi_modules/fastapi_leaudit/services/impl/govdocServiceImpl.py` - `fastapi_modules/fastapi_leaudit/controllers/govdocController.py` - `fastapi_modules/fastapi_leaudit/govdoc_bridge/tasks.py` - 平台现有规则版本治理相关实现 完成判定: - 上传或创建 run 时指定规则版本,执行链路实际按该版本生效 - 结果页、规则页、审查记录三处能追溯同一规则版本 - 不再依赖长期硬编码路径作为正式方案 --- ### P0-3 详情结果对象收口 当前问题: - 底层已是 `document + run` - 但详情结果仍有多接口拼接、不完全稳定、产物和结果状态不同步的问题 业务原因: - 旧项目详情页拿到的是一份完整审查结果 - 当前平台即使分对象存储,也必须对前端恢复同样的完整语义 实施目标: - 以 `documentId` 为详情主入口保持不变 - 对外提供一份完整、稳定、可直接渲染的详情结果对象 - `summary / findings / checked_rules / entities / structure / outline / reports` 必须共同成立 对应代码区域: - `fastapi_modules/fastapi_leaudit/services/impl/govdocServiceImpl.py` - `legal-platform-frontend/lib/api/govdoc-audit/api.ts` - `legal-platform-frontend/components/govdoc-audit/audit.tsx` 完成判定: - 详情页不再依赖“接口凑合可用” - 数据对象语义稳定,状态与产物一致 - 多次历史 run 下,默认最新 run,且可正确切换结果 --- ### P0-4 数据库与环境初始化正式化 当前问题: - 当前依赖运行时 `_ensureGovdocSchema()` 做大量兜底建表 - 这虽然能保命,但不是正式交付方式 业务原因: - 环境初始化不稳定会直接造成模块“今天能跑、明天因表缺失又挂” 实施目标: - 将 `govdoc` 相关表结构、索引、必要种子数据纳入正式初始化方案 - 运行时兜底可保留,但不应再作为主方案 对应代码区域: - `scripts/创建sql/schema_add_govdoc_module.sql` - 权限/entry module seed SQL - `fastapi_modules/fastapi_leaudit/services/impl/govdocServiceImpl.py` 完成判定: - 新环境按正式 SQL / migration 能直接初始化 - 不依赖首次访问接口触发表自动创建 - 菜单、权限、模块入口在环境中可直接可用 --- ## 4.2 P1:影响验收质量的补齐项 ### P1-1 识别与规则结果质量调优 当前问题: - 主链能跑不代表结果可验收 - 标题、发文字号、日期、署名、主送机关等核心实体识别仍偏弱 - 规则命中质量尚未达到正式交付水位 业务原因: - 内部公文模块交付的是“审查结果质量”,不是“接口运行成功率” 实施目标: - 优先提高核心实体识别准确率 - 优先修正高频规则误判/漏判 - 保证结构、实体、findings 三者结果相互一致 重点区域: - `govdoc_engine/parser/docx_parser.py` - `govdoc_engine/parser/role_tagger_rule.py` - `govdoc_engine/parser/entity_builder.py` - `rules/govdoc/govdoc_general/rules.yaml` 完成判定: - 典型正反例文档结果可解释 - 核心实体识别达到可验收水平 - 主要规则不再出现大面积误判 --- ### P1-2 文件能力与前端展示对齐 当前问题: - 旧项目业务支持 `.docx / .doc / .wps` - 当前平台后端上传只支持 `.docx` - 但列表筛选和部分前端文案仍残留 `.doc / .wps` 业务原因: - 如果平台决定暂时只支持 `.docx`,这必须是明确业务决策,不是前后端不一致 实施目标: - 明确当前阶段文件支持范围 - 前端上传、筛选、提示、错误返回统一 - 若恢复 `.doc / .wps`,则补齐转换链路;若不恢复,则前端彻底收口到 `.docx` 对应代码区域: - `fastapi_modules/fastapi_leaudit/services/impl/govdocServiceImpl.py` - `legal-platform-frontend/components/govdoc-audit/upload-zone.tsx` - `legal-platform-frontend/components/govdoc-audit/audits.tsx` 完成判定: - 页面展示、接口能力、错误文案三者一致 - 用户不会被“页面可选但后台不支持”的假能力误导 --- ### P1-3 列表、详情、报告入口行为统一 当前问题: - 列表页、详情页、报告入口的行为已经大体搭起来 - 但部分入口仍受到底层状态缺口影响 业务原因: - 旧项目交互语义很明确,迁移后不能出现“有的入口跳详情,有的入口拿不到结果”的不稳定体验 实施目标: - 列表页保持文档主入口语义 - 详情页保持完整审查结果页语义 - 报告入口、原文入口、历史入口行为一致可预期 对应代码区域: - `legal-platform-frontend/components/govdoc-audit/audits.tsx` - `legal-platform-frontend/components/govdoc-audit/audit.tsx` - `legal-platform-frontend/lib/api/govdoc-audit/api.ts` 完成判定: - 列表到详情、详情到报告、详情到原文的链路无歧义 - 同一文档在不同入口下看到的是一致结果 --- ### P1-4 历史 run 与最新结果语义补全 当前问题: - 当前业务已确认“文档为主、run 为辅、默认展示最新 run、保留历史 run” - 但这套能力还没有完全收口为正式产品语义 实施目标: - 详情页默认展示最新 run - 历史 run 清晰可切换 - 首页统计、列表状态、详情摘要统一按最新 run 计算 完成判定: - 同一文档多次执行后,结果语义稳定 - 用户能明确看到“当前结果”和“历史结果”的边界 --- ## 4.3 P2:结构治理与后续优化项 ### P2-1 实体结果结构化治理 当前问题: - 实体结果目前主要通过 `result_summary_json` 承载 - 这在短期内可用,但不利于后续检索、统计和演进 实施目标: - 评估是否需要独立 `govdoc_entities` 或等价结构化承载 - 不影响 P0/P1 交付前提下,作为后续演进项 --- ### P2-2 文档与实施说明同步 当前问题: - 部分文档仍反映旧阶段问题,和当前代码状态不完全一致 实施目标: - 在完成 P0/P1 后,同步更新: - 运行依赖说明 - 对接补齐计划 - 接口与权限说明 --- ### P2-3 运行数据清理与演示样本整理 当前问题: - 历史失败 run、临时测试数据、旧入口痕迹容易干扰验收 实施目标: - 在提测前统一清理历史无效 run - 整理一套正反例验收文档 --- ## 5. 推荐实施顺序 建议严格按以下顺序推进。 ## 第一阶段:恢复正式闭环 目标: - 先让模块从“能跑”变成“能完整交付” 顺序: 1. 报告产物闭环恢复 2. 详情结果对象收口 3. 数据库与初始化正式化 阶段完成标志: - 上传一份文档,能够形成完整 run 结果 - 详情页可稳定展示完整结果 - HTML 报告、批注 DOCX、段落预览全部真实可用 --- ## 第二阶段:恢复规则正式语义 目标: - 把“临时规则文件方案”升级为“平台规则生效方案” 顺序: 1. `ruleVersionId` 真正接入执行链路 2. 当前生效规则集与规则详情统一 3. 审查结果规则追溯打通 阶段完成标志: - 指定规则版本可以真实生效 - 规则页、审查页、结果记录三者语义一致 --- ## 第三阶段:提高结果质量与交互一致性 目标: - 让结果从“可用”提升为“可验收” 顺序: 1. 核心实体识别调优 2. 高频规则误判修正 3. 文件能力与前端展示对齐 4. 历史 run 与入口行为统一 阶段完成标志: - 典型样本结果可解释 - 页面行为稳定 - 用户不会在上传、列表、详情、报告之间遇到语义冲突 --- ## 第四阶段:治理与收尾 目标: - 为长期维护和后续扩展做准备 顺序: 1. 实体结构化治理 2. 文档更新 3. 历史测试数据与演示数据收尾 --- ## 6. 每阶段实施时的约束 ### 6.1 第一阶段禁止事项 - 禁止继续增加新页面能力 - 禁止先把按钮点亮再补后端产物 - 禁止绕开正式存储方案临时返回假链接 ### 6.2 第二阶段禁止事项 - 禁止长期保留硬编码规则路径作为正式方案 - 禁止出现“前端选了规则版本,后端实际没用”的假配置 ### 6.3 第三阶段禁止事项 - 禁止在未确认业务收缩前,默默砍掉 `.doc / .wps` - 禁止用前端文案掩盖后端能力缺失 --- ## 7. 验收口径 后续每轮实施完成后,建议按下面口径验收。 ## 7.1 P0 验收口径 - 上传文档后自动创建并完成一条 run - 列表可见文档最新结果 - 详情页可稳定打开 - `findings / checked_rules / entities / structure / outline` 全部正常 - `原始文件 / 批注 DOCX / 报告 HTML / 段落预览` 全部真实可用 ## 7.2 P1 验收口径 - 核心正反例样本结果合理 - 核心实体识别基本稳定 - 列表筛选、分数分段、详情交互一致 - 文件类型能力与页面提示一致 ## 7.3 P2 验收口径 - 结构治理方案明确 - 文档同步到当前代码状态 - 演示和测试环境数据整洁 --- ## 8. 结论 接下来的实施重点,不是继续扩功能,而是: - **先把旧项目已经成立的业务语义完整恢复到平台实现中** 最重要的优先级顺序应固定为: 1. 恢复报告与详情闭环 2. 恢复规则正式生效语义 3. 提升结果质量和前端一致性 4. 做结构治理和文档收尾 只要坚持这个顺序,内部公文模块就能在不改业务逻辑的前提下,按当前项目规范稳妥完成迁移收口。