Files
leaudit-platform-backend/docs/内部公文模块/实施边界锁定后的补齐修复计划.md
T

13 KiB

实施边界锁定后的补齐修复计划

1. 文档目的

迁移前后业务语义对照分析.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. 做结构治理和文档收尾

只要坚持这个顺序,内部公文模块就能在不改业务逻辑的前提下,按当前项目规范稳妥完成迁移收口。