Files
DEMO-AGENT/docs/5.开发计划/5.第1章监管信息材料包生成.md

31 KiB
Raw Blame History

第1章监管信息材料包生成开发计划

文档信息

项目 内容
需求分析文档 docs/1.需求分析/5.第1章监管信息材料包生成.md
功能设计文档 docs/2.功能设计/5.第1章监管信息材料包生成.md
数据库设计文档 docs/3.数据库设计/5.第1章监管信息材料包生成.md
详细设计文档 docs/4.详细设计/5.第1章监管信息材料包生成.md
参考开发计划 docs/5.开发计划/3.产品关键信息提取与申报文件自动填表.md
功能名称 第1章监管信息材料包生成
工作流编码 regulatory_info_package
批次号规则 RIP-YYYYMMDDHHMMSS-abcdef
计划日期 2026-06-10
计划版本 V1.0

一、开发计划目标

本开发计划面向 Codex 执行,目标是把 regulatory_info_package 独立工作流按可验证、可回滚、可阶段验收的方式落地。计划以现有自动填表工作流 application_form_fill 为主要参考,但保持独立模块、独立批次、独立产物、独立通知和独立前端卡片。

现状裁决:当前最新代码中尚未存在 regulatory_info_package 正式工作流,本计划按“新建正式材料包工作流”执行;不得把该功能并入或改造 application_form_fill

开发完成后用户可在对话中上传或指定产品说明书并通过“根据说明书生成第1章监管信息”触发工作流。系统基于 docs/0.原始材料/第1章 监管信息 样例模板生成 7 个监管信息文件,以 第1章 监管信息(预生成版).zip 作为首位下载入口,同时提供单文件和追溯 Excel 辅助下载。


二、已确认开发规则

规则 内容
工作流独立 新增 workflow_type=regulatory_info_package,不并入 application_form_fill
模块独立 新增 review_agent/regulatory_info_package/,服务与自动填表平级
模型集中 Django 模型继续放在 review_agent/models.py
节点幂等 RIP 节点必须基于 workflow_type + workflow_batch_id + node_code 做幂等创建或数据库唯一约束
单说明书输入 用户消息指定文件名优先,其次 active 附件,再兼容最近成功文件汇总
多候选处理 不做选择弹窗,通过对话反问用户确认说明书文件名
模板固定 固定处理第1章监管信息 7 个模板
模板字段化 优先把模板整理为 Agent/代码可识别的字段模板,使用内容控件 Tag 或稳定占位符;代码只填字段,不依赖手工改格式
抽取策略 规则抽取和 LLM 抽取并行LLM 最多重试 3 次,失败后规则结果继续
文档生成 工作流节点串行,generate_docs 节点内部每个文档独立线程处理
.doc 策略 CH1.9 能力驱动:探测到 Word COM/UNO 时优先原生 .doc,无原生能力时明确记录并允许 .docx 兜底
zip 策略 zip 只包含成功或兜底成功文件,失败文件不进入 zip
高亮策略 缺失项 / 黄底LLM-only 黄底;冲突黄底红字
追溯策略 用户下载 ExcelJSON 只写后台 logs 目录
前端策略 只做最小接入,不单独建设新页面或独立样式体系
TDD 新行为先写失败测试,再实现
Git 提交 每阶段验证通过后生成提交摘要;是否本地提交由用户确认
用户变更保护 不回滚、不覆盖用户已有未提交变更

三、规范依据与裁决

规范来源 命中内容 本计划裁决
GYRX 后端开发规范 接口响应、日志、增量规范 状态接口、下载权限、异常降级和日志留痕按现有 Django 模式实现
GYRX 前端开发规范 样式复用、组件接入、下载图标建议 复用现有对话页和工作流卡片样式,必要时只补少量语义化样式
既有自动填表开发计划 阶段拆分、测试先行、每阶段验证 本计划沿用阶段结构和 Codex 执行提示粒度
第1章监管信息详细设计 独立模块、7 模板、doc 兜底、zip 首位 作为本计划最高优先级依据

未发现规范冲突。项目专项设计优先于通用规范。


四、总体验收标准

类别 完成标准
触发 固定提示词和 LLM 路由均可触发 regulatory_info_package
输入选择 能按用户指定文件名、active 附件、最近文件汇总选择说明书;多候选可反问
批次 能创建 RegulatoryInfoPackageBatch,节点和事件可查询
模板 能加载并校验 7 个模板配置,模板复制只写批次目录
抽取 规则抽取可独立跑通LLM 失败不阻断主链路
合并 missing、llm_only、conflict 均有可追溯结构和高亮决策
docx 生成 6 个 .docx 文件能按模板生成并保留基本版式
doc 处理 CH1.9 优先 .doc 原生处理,失败时 .docx 兜底,状态可见
ZIP 第1章 监管信息(预生成版).zip 排在助手回显首位,只包含成功/兜底成功文件
单文件 成功文件有辅助下载,失败文件显示原因且无下载链接
追溯 用户可下载 traceability.xlsxJSON 写入 logs/
前端 对话快捷入口、工作流卡片、状态轮询和下载列表正常
权限 非批次所属用户不能下载 RIP 产物
回归 python manage.py check 和相关 pytest 通过,既有文件汇总/自动填表/法规核查不回归

五、阶段总览

阶段 名称 目标 阶段验收
RIP-0 准备与基线回归 创建开发分支,确认依赖和既有测试状态 基线命令结果已记录
RIP-1 数据模型与导出扩展 新增三张模型,扩展 zip 下载能力 migration、模型和下载权限测试通过
RIP-2 模块骨架与模板配置 新建模块、schema、YAML 配置和存储服务 配置加载和路径安全测试通过
RIP-3 触发与工作流骨架 接入路由、批次创建、节点流转和状态接口 可创建并运行空工作流
RIP-4 输入选择与说明书解析 选择说明书,解析 docx 段落、章节和表格 输入选择和说明书解析测试通过
RIP-5 字段抽取与合并 规则 + LLM 并行抽取、重试、合并和高亮决策 抽取、重试、冲突合并测试通过
RIP-6 DOCX 文档生成 实现 6 个 docx 模板生成、产品列表重建和高亮 docx 生成和 XML 高亮测试通过
RIP-7 CH1.9 DOC 适配 实现 .doc 原生适配探测和 .docx 兜底 doc 兜底、失败隔离测试通过
RIP-8 追溯、ZIP 与下载权限 生成 Excel、logs JSON、ZIP 和导出记录 ZIP 内容、追溯、权限测试通过
RIP-9 摘要、通知与状态归并 生成助手摘要,写通知记录,落定批次状态 partial_success 等状态测试通过
RIP-10 前端接入与总体验收 接入快捷入口、卡片、状态轮询和下载展示 前端回归和全量后端测试通过

六、RIP-0 准备与基线回归

RIP-0-001 创建开发分支并确认工作区

内容
目标 创建本功能开发分支,确认当前工作区已有变更
修改范围 Git 分支,不修改业务代码
验收标准 分支名符合 codex/ 前缀;记录已有未提交变更,不回滚用户变更
Codex 执行提示 请创建 codex/regulatory-info-package 开发分支,运行 git status --short,确认设计文档和目录重排状态,不要回滚无关变更。

RIP-0-002 确认依赖与基线测试

内容
目标 确认 Django、python-docx、openpyxl、PyYAML、可选 Word COM 环境状态
修改范围 不修改业务代码
验收标准 python manage.py check 可执行;关键依赖可 import既有失败需记录
Codex 执行提示 请运行 Django check 和关键回归测试,确认依赖可用。若发现既有失败,只记录并继续按计划隔离,不改无关代码。

RIP-0 阶段验证

python manage.py check
pytest tests/test_file_summary_views.py -k download

七、RIP-1 数据模型与导出扩展

RIP-1-001 新增监管信息材料包 ORM 模型

内容
目标 新增 RegulatoryInfoPackageBatchRegulatoryInfoPackageArtifactRegulatoryInfoPackageNotificationRecord
修改范围 review_agent/models.py
验收标准 字段、枚举、索引、软删除、关联关系符合数据库设计
Codex 执行提示 请按 docs/3.数据库设计/5.第1章监管信息材料包生成.md 新增三张模型,模型集中放在 review_agent/models.py,不要新增字段级数据库表。

RIP-1-002 扩展导出类型和下载 MIME

内容
目标 ExportedSummaryFile.ExportType 增加 zip,下载 MIME 支持 .zip.doc.docx
修改范围 review_agent/models.pyreview_agent/file_summary/views.py
验收标准 zip 可下载doc/docx MIME 正确;原有导出不回归
Codex 执行提示 请扩展 ExportedSummaryFile 导出类型,并在下载接口按 workflow_type 和文件后缀处理权限与 content type。

RIP-1-003 生成迁移并补模型测试

内容
目标 生成数据库迁移并覆盖基础模型行为
修改范围 review_agent/migrations/tests/
验收标准 migration 可应用模型测试覆盖批次号、状态、artifact、通知、zip export type
Codex 执行提示 请生成迁移并新增 tests/test_regulatory_info_package_models.py,优先覆盖模型字段默认值、导出类型,以及 WorkflowNodeRun 在 RIP 批次下的幂等/唯一节点创建。

RIP-1 阶段验证

python manage.py check
pytest tests/test_regulatory_info_package_models.py tests/test_file_summary_views.py -k download

八、RIP-2 模块骨架与模板配置

RIP-2-001 创建 regulatory_info_package 模块骨架

内容
目标 新增独立模块目录和基础文件
修改范围 review_agent/regulatory_info_package/
验收标准 模块可 import不影响现有 application_form_fill
Codex 执行提示 请创建详细设计中的模块骨架先放常量、schema、storage、events、workflow 空实现和 service 包,不提前写复杂业务。

RIP-2-002 编写模板配置 YAML

内容
目标 配置 7 个样例模板、输出文件名、策略、字段 Tag/占位符映射和 .doc 标记
修改范围 review_agent/regulatory_info_package/templates/regulatory_info_package_templates_v1.yaml
验收标准 7 个模板完整zip 名称为 第1章 监管信息(预生成版).zip;字段映射优先使用内容控件 Tag 或稳定占位符
Codex 执行提示 请按详细设计录入模板配置source_dir 指向样例目录,字段 targets 优先写 content_control_tag 或 placeholderCH1.9 声明 prefer_legacy_doc_native: true 且允许 docx fallback。

RIP-2-003 实现配置加载、模板仓库和存储目录

内容
目标 实现 YAML 加载校验、模板复制、批次目录创建、路径安全检查
修改范围 template_config.pytemplate_repository.pystorage.py
验收标准 配置错误可返回清晰错误;模板只复制到批次目录;不写原始材料目录;能审计模板是否包含所需 Tag/占位符
Codex 执行提示 请实现配置加载、模板复制和模板字段审计服务,所有路径必须校验位于批次工作目录内,原始模板目录只读。

RIP-2-004 模板字段化整理与审计

内容
目标 将样例模板升级为代码友好的字段模板,不手工改生成文件格式
修改范围 docs/0.原始材料/第1章 监管信息 的模板副本或 review_agent/regulatory_info_package/templates/field_manifest.yaml
验收标准 CH1.4 关键字段、复选框、声明类产品名/申请人位置有稳定 Tag 或占位符;审计缺失字段时测试失败
Codex 执行提示 请优先使用 Word 内容控件 Tag若暂不具备内容控件编辑能力则使用不会影响版式的稳定占位符并在配置中记录字段与目标位置。

RIP-2 阶段验证

python manage.py check
pytest tests/test_regulatory_info_package_template_config.py

九、RIP-3 触发与工作流骨架

RIP-3-001 扩展意图路由

内容
目标 新增 regulatory_info_package action支持固定关键词和 LLM 路由
修改范围 review_agent/skill_router.py
验收标准 固定提示词直接命中LLM action 列表包含本工作流;原路由不回归
Codex 执行提示 请扩展意图路由,新增 starts_regulatory_info_package 标记,避免破坏 file_summary、regulatory_review 和 application_form_fill。

RIP-3-002 实现批次创建和节点初始化

内容
目标 创建批次、生成节点、记录事件
修改范围 workflow.pyevents.pyconstants.py
验收标准 可创建 RIP-... 批次;节点按定义初始化;事件可查询
Codex 执行提示 请实现批次创建和节点初始化workflow_type 必须写 regulatory_info_package

RIP-3-003 实现执行器骨架和状态接口

内容
目标 工作流节点可完整流转status 接口可返回批次、节点、导出和风险信息
修改范围 workflow.pyviews.pyurls.py 或现有 URL 注册文件
验收标准 空工作流可从 pending 到 completed状态接口校验用户权限
Codex 执行提示 请先实现可运行的空工作流骨架,业务节点可以临时 no-op但状态流转和权限必须真实。

RIP-3-004 接入对话启动逻辑

内容
目标 stream_message 能启动本工作流或返回说明书反问
修改范围 review_agent/services.py
验收标准 触发后发送 workflow_started;无输入或多候选时不误启动
Codex 执行提示 请在 stream_message 增加 regulatory_info_package 分支,先调用输入选择服务,再决定启动、提示上传或反问。

RIP-3 阶段验证

python manage.py check
pytest tests/test_regulatory_info_package_trigger.py tests/test_regulatory_info_package_workflow.py tests/test_regulatory_info_package_views.py

十、RIP-4 输入选择与说明书解析

RIP-4-001 实现说明书输入选择

内容
目标 按用户消息、active 附件、最近汇总批次选择说明书
修改范围 services/input_select.py
验收标准 文件名模糊匹配、唯一 docx、多个说明书、无说明书均有明确结果
Codex 执行提示 请实现 select_instruction_input,多候选返回 waiting_user 语义,由对话反问用户确认具体文件名。

RIP-4-002 实现说明书 docx 解析

内容
目标 读取说明书段落、章节、表格、组成成分表和 front_text
修改范围 services/instruction_extract.py
验收标准 能解析 目标产品说明书.docx 的产品名称、章节和主要表格结构
Codex 执行提示 请使用结构化 Word 解析能力,不用脆弱的纯字符串拼接;解析结果写入可序列化 schema。

RIP-4-003 写入说明书抽取日志产物

内容
目标 保存 logs/instruction_extract.json 并创建 artifact
修改范围 workflow.pystorage.pyinstruction_extract.py
验收标准 JSON 只在后台 logs 目录,不进入用户下载列表
Codex 执行提示 请在 text_extract 节点保存说明书抽取 JSONartifact 可记录,但不要创建 ExportedSummaryFile。

RIP-4 阶段验证

pytest tests/test_regulatory_info_package_input_select.py tests/test_regulatory_info_package_instruction_extract.py

十一、RIP-5 字段抽取与合并

RIP-5-001 实现规则字段抽取

内容
目标 从说明书章节和表格中抽取产品名称、包装规格、预期用途、组成、储存条件、样本类型、适用仪器、标准号等
修改范围 services/field_extract.py
验收标准 不依赖 LLM 时可抽取关键字段并支撑 demo
Codex 执行提示 请优先实现规则抽取,抽取结果包含 value、evidence、confidence 和 source。

RIP-5-002 实现 LLM 抽取封装和三次重试

内容
目标 LLM 结构化抽取,失败最多重试 3 次,失败后不阻断
修改范围 services/field_extract.pyprompts/field_extract.md
验收标准 0s/1s/2s 重试;解析失败可记录错误;规则结果继续
Codex 执行提示 请封装 LLM 调用为可 mock 的函数,测试中不要真实调用外部模型。

RIP-5-003 实现规则与 LLM 并行抽取

内容
目标 使用线程并行执行规则抽取和 LLM 抽取
修改范围 services/field_extract.py
验收标准 任一分支失败不影响另一分支结果;输出 field_extract_result.json
Codex 执行提示 请使用 ThreadPoolExecutor(max_workers=2),不要在子线程直接写数据库。

RIP-5-004 实现字段合并和高亮决策

内容
目标 输出 missing、llm_only、conflict 和最终写入值
修改范围 services/field_merge.py
验收标准 全缺失写 / 黄底LLM-only 黄底;冲突黄底红字;合并结果可追溯
Codex 执行提示 请实现 MergedField 结构,合并结果写 logs/merged_fields.json,并同步批次摘要字段。

RIP-5 阶段验证

pytest tests/test_regulatory_info_package_field_extract.py tests/test_regulatory_info_package_field_merge.py

十二、RIP-6 DOCX 文档生成

RIP-6-001 实现 DocxDocumentAdapter

内容
目标 支持段落/表格替换、表格单元格填充、黄色底色、红字
修改范围 services/document_writer.pyservices/docx_document.py
验收标准 可处理 run 拆分;测试可检查 docx XML 高亮和红字
Codex 执行提示 请优先支持本模板需要的替换和表格填充场景,复杂通用 Word 引擎不要过度设计。

RIP-6-002 实现 6 个 DOCX 文件生成策略

内容
目标 生成 CH1.2、CH1.4、CH1.5、CH1.11.1、CH1.11.5、CH1.11.6
修改范围 services/package_generate.pyservices/standard_candidates.py
验收标准 6 个 docx 文件可生成;缺失/LLM-only/冲突样式正确
Codex 执行提示 请先完成 docx 主链路。CH1.5 产品列表必须转成样例表头:包装规格、货号、组成、组分、主要组成成分、规格/数量,其中货号 / 黄底。

RIP-6-003 实现 generate_docs 内部并发

内容
目标 每个文档独立线程生成,主线程统一写 artifact/export
修改范围 services/package_generate.pyworkflow.py
验收标准 单个文件失败不影响其他文件;返回 GeneratedFileResult 列表
Codex 执行提示 请使用独立模板副本,子线程不要写数据库;所有异常转成文件级 failed 状态。

RIP-6 阶段验证

pytest tests/test_regulatory_info_package_docx_writer.py tests/test_regulatory_info_package_package_generate.py

十三、RIP-7 CH1.9 DOC 适配

RIP-7-001 实现 LegacyDocDocumentAdapter 能力探测

内容
目标 探测 Word COM、LibreOffice UNO 或可用兜底能力
修改范围 services/legacy_doc_document.py
验收标准 当前环境无原生能力时返回清晰 capability不崩溃测试不要求本机必须安装 Word 或 LibreOffice
Codex 执行提示 请先实现能力探测和接口骨架Windows Word COM/LibreOffice UNO 可作为原生能力;不可用时明确进入 docx 兜底。

RIP-7-002 实现 CH1.9 原生写入与 docx 兜底

内容
目标 CH1.9 优先 .doc 输出,失败时生成同语义 .docx
修改范围 legacy_doc_document.pypackage_generate.py
验收标准 有原生能力时原生成功状态 success无原生能力或原生失败但兜底成功时状态 fallback_success两者失败不进入 zip
Codex 执行提示 请把能力探测、原生失败和兜底失败都写入 adapter_summaryrisk_notes,不要静默转换。

RIP-7-003 补充 doc 适配器测试

内容
目标 覆盖 capability、兜底成功、失败隔离
修改范围 tests/test_regulatory_info_package_legacy_doc.py
验收标准 测试不依赖本机必须安装 Word用 mock 覆盖原生成功/失败
Codex 执行提示 请用 mock 模拟 Word COM 可用和不可用场景,保证 CI 或本地无 Word 时测试仍稳定。

RIP-7 阶段验证

pytest tests/test_regulatory_info_package_legacy_doc.py tests/test_regulatory_info_package_package_generate.py

十四、RIP-8 追溯、ZIP 与下载权限

RIP-8-001 实现追溯 Excel 和后台 JSON

内容
目标 生成 exports/traceability.xlsxlogs/traceability.json
修改范围 services/traceability_export.py
验收标准 Excel 可下载JSON 不进入用户下载列表
Codex 执行提示 请用 openpyxl 生成 Excel字段包含 target_file、target_field、final_value、extraction_source、evidence、highlight_reason、needs_review。

RIP-8-002 实现 zip 打包

内容
目标 生成 第1章 监管信息(预生成版).zip
修改范围 services/zip_export.py
验收标准 zip 只包含 success/fallback_success 文件;失败文件不入包
Codex 执行提示 请用 Python 标准库 zipfile 打包zip 中保留最终输出文件名。CH1.9 兜底成功时放入 .docx 文件。

RIP-8-003 创建导出记录和下载权限

内容
目标 zip、单文件、Excel 均写 ExportedSummaryFile;下载接口校验用户权限
修改范围 file_summary/views.pystorage.pyzip_export.py
验收标准 非批次用户不能下载zip 在 exports 返回顺序中排首位
Codex 执行提示 请按 workflow_type=regulatory_info_package 反查批次所属 conversation/user软删除批次不可下载。

RIP-8 阶段验证

pytest tests/test_regulatory_info_package_traceability.py tests/test_regulatory_info_package_zip.py tests/test_regulatory_info_package_views.py

十五、RIP-9 摘要、通知与状态归并

RIP-9-001 实现助手 Markdown 摘要

内容
目标 完成后返回 zip 首位、单文件列表、失败原因、待确认摘要
修改范围 services/summary.pyworkflow.py
验收标准 zip 链接在回复首位;失败文件显示原因且无下载;待确认数量准确
Codex 执行提示 请严格按详细设计生成助手摘要partial_success 时也要展示可下载 zip 和失败文件原因。

RIP-9-002 实现通知记录和统一通知接入

内容
目标 RegulatoryInfoPackageNotificationRecord,调用统一通知服务
修改范围 services/notifier.pyworkflow.py
验收标准 通知失败不阻断下载;失败写 risk_notes
Codex 执行提示 请复用已有通知模式,先保证本地测试可 mock不要让外部通知失败影响批次主状态。

RIP-9-003 完成状态归并

内容
目标 根据生成结果、zip、追溯、通知落定 success/partial_success/failed/waiting_user
修改范围 workflow.py
验收标准 7 文件成功为 success部分文件失败但有 zip 为 partial_success全部失败为 failed
Codex 执行提示 请把状态归并集中在一个函数,测试覆盖 docx 兜底、zip 失败、通知失败、产品名缺失。

RIP-9 阶段验证

pytest tests/test_regulatory_info_package_workflow.py tests/test_regulatory_info_package_notification.py

十六、RIP-10 前端接入与总体验收

RIP-10-001 增加对话快捷入口

内容
目标 对话框底部增加“第1章监管信息”快捷提示
修改范围 templates/home.html
验收标准 点击后填入或发送 根据说明书生成第1章监管信息
Codex 执行提示 请复用现有 tool-chip 样式,不单独创建新前端样式文件,除非现有结构无法展示。

RIP-10-002 工作流卡片和状态轮询支持

内容
目标 前端识别 regulatory_info_package,使用新 status URL 轮询
修改范围 static/js/app.jstemplates/home.html
验收标准 卡片能展示节点、状态、风险和导出列表;终态识别 success/partial_success/failed/waiting_user
Codex 执行提示 请在现有工作流卡片逻辑中增量接入,不复制一套新卡片实现。

RIP-10-003 下载展示和失败文件展示

内容
目标 zip 首位展示,单文件辅助下载,失败文件展示原因
修改范围 static/js/app.js
验收标准 exports 返回顺序被保留失败文件无下载按钮traceability.xlsx 可下载
Codex 执行提示 请以后端 exports 顺序为准,不新增 is_primary 字段zip 已由后端排首位。

RIP-10-004 总体验收与回归

内容
目标 全链路验证和回归保护
修改范围 测试、必要的 bug fix
验收标准 Django check、RIP 测试、关键既有测试通过;能用样例说明书生成材料包
Codex 执行提示 请用 docs/0.原始材料/目标产品说明书.docx 做端到端验证,确认 zip、单文件、Excel、logs 和摘要均符合设计。

RIP-10 阶段验证

python manage.py check
pytest tests/test_regulatory_info_package_frontend.py
pytest tests/test_regulatory_info_package_models.py tests/test_regulatory_info_package_trigger.py tests/test_regulatory_info_package_input_select.py tests/test_regulatory_info_package_template_config.py tests/test_regulatory_info_package_instruction_extract.py tests/test_regulatory_info_package_field_extract.py tests/test_regulatory_info_package_field_merge.py tests/test_regulatory_info_package_docx_writer.py tests/test_regulatory_info_package_legacy_doc.py tests/test_regulatory_info_package_package_generate.py tests/test_regulatory_info_package_traceability.py tests/test_regulatory_info_package_zip.py tests/test_regulatory_info_package_workflow.py tests/test_regulatory_info_package_views.py tests/test_regulatory_info_package_notification.py

十七、测试分层要求

测试层 覆盖内容 建议文件
模型测试 批次、产物、通知、zip 导出类型 tests/test_regulatory_info_package_models.py
路由测试 固定关键词、LLM action、对话启动分支 tests/test_regulatory_info_package_trigger.py
输入测试 文件名匹配、active 附件、多候选反问 tests/test_regulatory_info_package_input_select.py
配置测试 YAML 加载、模板缺失、code 唯一 tests/test_regulatory_info_package_template_config.py
解析测试 说明书章节、表格、组成成分表 tests/test_regulatory_info_package_instruction_extract.py
抽取测试 规则抽取、LLM 重试、失败降级 tests/test_regulatory_info_package_field_extract.py
合并测试 missing、llm_only、conflict tests/test_regulatory_info_package_field_merge.py
文档测试 docx 替换、表格、高亮、红字 tests/test_regulatory_info_package_docx_writer.py
doc 测试 adapter 探测、docx 兜底、失败状态 tests/test_regulatory_info_package_legacy_doc.py
生成测试 7 文件并发生成、异常隔离 tests/test_regulatory_info_package_package_generate.py
追溯测试 Excel 下载、logs JSON tests/test_regulatory_info_package_traceability.py
zip 测试 只打包 success/fallback_success tests/test_regulatory_info_package_zip.py
工作流测试 节点流转、状态归并、partial_success tests/test_regulatory_info_package_workflow.py
接口测试 start/status/download 权限 tests/test_regulatory_info_package_views.py
通知测试 通知记录、通知失败降级 tests/test_regulatory_info_package_notification.py
前端测试 chip、卡片、状态 URL、下载展示 tests/test_regulatory_info_package_frontend.py

十八、Codex 自动化执行规则

规则 内容
顺序执行 必须从 RIP-0 到 RIP-10 顺序执行,不得跳阶段
阶段聚焦 当前阶段失败时先修复当前阶段,不继续后续阶段
TDD 新行为先写失败测试,再实现
小步修改 每次只修改当前阶段相关文件,避免顺手重构
用户变更保护 不得回滚或覆盖用户已有未提交变更
过程日志 每阶段记录关键命令结果和既有失败
阶段验证 每阶段完成后运行对应验证命令
阶段提交 每阶段验证通过后生成提交摘要;是否执行 git commit 由用户确认
回归保护 文件汇总、法规核查、自动填表现有测试不得回归
doc 风险隔离 .doc 原生能力不可用或原生处理失败不得阻断其他 6 个 docx 文件生成
外部依赖隔离 LLM、通知、Word COM 均需可 mock测试不依赖真实外部服务
下载安全 所有导出下载必须通过所属用户权限校验

十九、推荐目标模式提示词

后续可直接对 Codex 输入:

请按 docs/5.开发计划/5.第1章监管信息材料包生成.md 执行开发。

执行要求:
1. 严格按 RIP-0 到 RIP-10 顺序推进,不跳阶段。
2. 每阶段先读对应需求、功能、数据库、详细设计文档。
3. 每阶段先写或补充测试,再实现代码。
4. 每阶段只修改当前阶段相关文件,不做无关重构。
5. 不回滚、不覆盖用户已有未提交变更。
6. LLM、通知、Word COM 等外部能力必须可 mock。
7. 每阶段完成后运行该阶段验证命令。
8. 验证通过后生成提交摘要,是否本地提交等待用户确认。
9. 最后使用 docs/0.原始材料/目标产品说明书.docx 做端到端验收。

二十、待执行前检查清单

检查项 状态
需求分析、功能设计、数据库设计、详细设计均已存在 待执行时确认
当前分支是否适合创建开发分支 待执行时确认
是否存在用户未提交变更 待执行时确认
python-docxopenpyxlPyYAML 是否可用 待执行时确认
Word COM 或 LibreOffice UNO 是否可用 待执行时确认,非阻塞
目标说明书 docs/0.原始材料/目标产品说明书.docx 是否存在 待执行时确认
样例模板目录 docs/0.原始材料/第1章 监管信息 是否完整 待执行时确认
现有文件汇总、法规核查、自动填表测试是否通过 待执行时确认