Files
DEMO-AGENT/docs/5.开发计划/3.产品关键信息提取与申报文件自动填表.md

37 KiB
Raw Permalink Blame History

产品关键信息提取与申报文件自动填表开发计划

文档信息

项目 内容
需求分析文档 docs/1.需求分析/3.产品关键信息提取与申报文件自动填表.md
功能设计文档 docs/2.功能设计/3.产品关键信息提取与申报文件自动填表.md
详细设计文档 docs/3.详细设计/3.产品关键信息提取与申报文件自动填表.md
数据库设计文档 docs/4.数据库设计/3.产品关键信息提取与申报文件自动填表.md
功能名称 产品关键信息提取与申报文件自动填表
所属模块 审核智能体 review_agent
执行方式 单人开发 + Codex 目标模式自动化执行
计划日期 2026-06-07
计划版本 V1.0

一、开发计划目标

本开发计划用于指导 Codex 目标模式按阶段完成“产品关键信息提取与申报文件自动填表”功能开发。该功能作为独立工作流 application_form_fill 实现,由用户对话触发,默认复用当前对话最近成功的文件汇总批次;如本次消息带新附件,则先串联文件汇总,再执行自动填表。

本期必须完成:独立填表批次、过程产物、飞书通知记录、模板配置、注册证 .docx 模板填充、字段抽取与合并、冲突高亮、追溯清单、Word 下载、自动填表工作流卡片和权限校验。

本期明确不强制完成PDF 转换、字段级数据库表、.doc 模板自动转换、完整安全和性能基本原则清单条目拆解。这些事项已进入 docs/6.待办计划/第二阶段暂缓事项.md


二、已确认开发规则

规则项 内容
工作流类型 新增独立 application_form_fill,不塞入 regulatory_review 工作流
触发方式 用户对话触发,如“帮我填注册证”“给我这个内容对应的表格”“为我该方案生成申报模板”
模板指定 用户可指定模板;未指定时按注册类型生成适用模板
文件来源 无新附件时复用当前对话最近成功 FileSummaryBatch;有新附件时先自动汇总
模板配置 放在 review_agent/application_form_fill/templates/application_form_templates_v1.yaml
字段抽取 规则/正则与 LLM 结构化抽取并行,合并处理
冲突处理 说明书优先;冲突字段在 Word 中黄色底色、红色字体
输出范围 Demo 主链路优先 Word + Excel/JSON 追溯清单
PDF 数据结构预留,工作流节点可 skipped不作为本期强验收
飞书 新增自动填表通知记录表,通知失败不阻断下载
数据库 新增三张表;字段级明细表暂缓
Git 提交 每个阶段完成并验证通过后提交一次
测试要求 每阶段至少运行对应 pytest前端阶段补卡片和渲染测试

三、总体验收标准

类别 完成标准
数据库 ApplicationFormFillBatchApplicationFormFillArtifactApplicationFormFillNotificationRecord 可通过 migration 落库
导出类型 ExportedSummaryFile.ExportType 支持 wordpdf,并兼容既有 markdown/excel/json
模块结构 新增 review_agent/application_form_fill/ 独立模块
触发 用户说“帮我填注册证”等语句可触发 application_form_fill
文件来源 无新附件时复用最近成功汇总批次;无汇总批次时提示上传资料
模板配置 YAML 可加载、校验,并至少配置注册证格式 .docx 已识别字段
字段抽取 规则/正则与 LLM 抽取结果均可留底LLM 失败时规则结果可继续
字段合并 说明书优先,冲突字段进入 conflict_summary 和追溯清单
Word 填充 能按表格行名填入注册证模板字段,缺失字段留空
冲突高亮 冲突字段在 Word 内黄底红字
追溯清单 生成 Excel/JSON记录规则结果、LLM 结果、合并字段、冲突和来源证据
下载 对话框提供填好 Word 和追溯清单下载链接
工作流卡片 前端支持 application_form_fill 卡片,展示准备资料、选择模板、复制模板、抽取字段、填写 Word 等节点
飞书通知 填表完成后写通知记录,可 mock失败不阻断文件下载
权限 A 对话不能查询或下载 B 对话的填表批次和导出文件
回归 第一批文件汇总、第二批法规核查既有测试不回归

四、阶段总览

阶段 名称 目标 阶段验收
AFF-0 准备与回归 创建开发分支,确认现有测试基线 python manage.py check 和关键回归测试通过
AFF-1 数据模型与通用导出扩展 新增三张表,扩展 word/pdf 导出类型 migration、模型测试通过
AFF-2 模块骨架与模板配置 新建独立模块、YAML 配置和配置校验 模板配置测试通过
AFF-3 触发与工作流骨架 对话触发、批次创建、节点事件和状态查询 可创建并运行空工作流
AFF-4 模板选择与文件来源 复用最近汇总批次,支持指定/默认模板选择 模板选择和来源批次测试通过
AFF-5 字段抽取与合并 规则/正则 + LLM 并行抽取、冲突归并和产物留底 字段抽取、冲突测试通过
AFF-6 Word 填充与追溯导出 注册证 Word 填充、冲突高亮、Excel/JSON 追溯 可下载 Word 和追溯清单
AFF-7 飞书通知与对话摘要 生成助手摘要、下载链接和通知记录 通知、摘要、下载权限测试通过
AFF-8 前端卡片与总体验收 自动填表工作流卡片、状态恢复、全量回归 全量测试通过

五、AFF-0 准备与回归

AFF-0-001 创建开发分支并确认现状

项目 内容
任务类型 Git / 准备
前置任务
涉及文件 无固定文件
目标 从当前稳定分支创建 codex/YYYYMMDD-申报文件自动填表 开发分支,并确认工作区状态
开发步骤 1. 检查当前分支和 git status2. 确认第三批设计文档存在3. 创建开发分支4. 记录已有未提交变更,不得回滚用户变更
验收标准 分支创建成功,工作区变更来源清楚
验证命令 git branch --show-current; git status --short
Codex 执行提示 请创建第三批自动填表开发分支,检查当前工作区状态和设计文档,不要回滚用户已有变更。

AFF-0-002 运行基线回归

项目 内容
任务类型 测试 / 回归
前置任务 AFF-0-001
涉及文件 无固定文件
目标 确认现有文件汇总和法规核查主流程在开发前可用
开发步骤 1. 运行 Django check2. 运行文件汇总测试3. 运行法规核查测试4. 记录失败项并先判断是否为既有问题
验收标准 关键回归测试通过,或记录清楚既有失败和本阶段处理策略
验证命令 python manage.py check; pytest tests/test_file_summary_*.py tests/test_regulatory_*.py
Codex 执行提示 请在开发前运行 Django check 和文件汇总/法规核查关键测试,确认基线稳定。若存在既有失败,请记录,不要直接改无关代码。

六、AFF-1 数据模型与通用导出扩展

AFF-1-001 新增自动填表 ORM 模型

项目 内容
任务类型 数据库 / 后端
前置任务 AFF-0
涉及文件 review_agent/models.py
目标 新增 ApplicationFormFillBatchApplicationFormFillArtifactApplicationFormFillNotificationRecord
开发步骤 1. 定义批次状态枚举2. 定义产物类型枚举3. 定义通知状态和渠道枚举4. 添加外键到 Conversation、User、Message、FileSummaryBatch、RegulatoryReviewBatch5. 添加 JSONField、hash、路径、时间字段6. 添加 db_table、索引和唯一约束
验收标准 模型字段、表名、索引与数据库设计一致
验证命令 python manage.py check
Codex 执行提示 请按 docs/4.数据库设计/3.产品关键信息提取与申报文件自动填表.md 新增自动填表三张表模型,模型集中放在 review_agent/models.py

AFF-1-002 扩展导出类型和权限查询能力

项目 内容
任务类型 数据库 / 下载
前置任务 AFF-1-001
涉及文件 review_agent/models.py、导出下载权限相关视图
目标 ExportedSummaryFile.ExportType 增加 wordpdf,并确保下载权限支持 application_form_fill
开发步骤 1. 扩展 ExportType.WORD2. 扩展 ExportType.PDF3. 检查下载接口按 workflow_type 分派权限4. 增加 application_form_fill 反查批次的权限路径
验收标准 Word/ PDF 导出记录可创建;填表导出下载权限可追溯到当前用户
验证命令 python manage.py check; pytest tests/test_file_summary_views.py -k download
Codex 执行提示 请扩展 ExportedSummaryFile 支持 word/pdf并让现有下载接口能通过 workflow_type=application_form_fill 校验填表批次权限。

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

项目 内容
任务类型 数据库 / 测试
前置任务 AFF-1-002
涉及文件 review_agent/migrations/tests/test_application_form_fill_models.py
目标 生成迁移并覆盖新增表的基础约束和权限关系
开发步骤 1. 运行 makemigrations2. 检查 migration 只包含第三批相关变更3. 运行 migrate4. 测试批次创建5. 测试产物 hash 字段6. 测试通知重试字段7. 测试 ExportedSummaryFile word 类型
验收标准 migration 可执行,模型测试通过
验证命令 python manage.py makemigrations review_agent; python manage.py migrate; pytest tests/test_application_form_fill_models.py
Codex 执行提示 请为第三批模型生成迁移并新增模型测试,覆盖批次、产物、通知记录和 word/pdf 导出类型。

AFF-1 阶段验证

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

七、AFF-2 模块骨架与模板配置

AFF-2-001 创建 application_form_fill 模块骨架

项目 内容
任务类型 后端 / 模块
前置任务 AFF-1
涉及文件 review_agent/application_form_fill/
目标 建立独立模块目录、常量、schemas、storage、workflow、views 和 services 包
开发步骤 1. 创建模块目录2. 创建 constants.py3. 创建 schemas.py4. 创建 storage.py5. 创建 workflow.py6. 创建 views.py7. 创建 services 子模块8. 创建 templates 和 prompts 目录
验收标准 模块可 import不影响既有应用启动
验证命令 python manage.py check
Codex 执行提示 请新增 review_agent/application_form_fill/ 独立模块骨架先只放常量、schema、空服务和基础 import不要改动法规核查模块。

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

项目 内容
任务类型 配置 / 模板
前置任务 AFF-2-001
涉及文件 review_agent/application_form_fill/templates/application_form_templates_v1.yaml
目标 建立模板配置,至少覆盖注册证 .docx 已识别字段
开发步骤 1. 定义 version2. 定义 source_dir3. 配置 registration_certificate4. 配置 change_registration.doc 待转换模板5. 配置 essential_principles.doc 待转换模板6. 为注册证配置注册人名称、注册人住所、生产地址、产品名称、包装规格、主要组成成分、预期用途、储存条件及有效期、附件等字段
验收标准 YAML 可解析,注册证字段映射到 table_row
验证命令 pytest tests/test_application_form_fill_template_config.py
Codex 执行提示 请新增自动填表模板配置 YAML配置路径必须是 review_agent/application_form_fill/templates/application_form_templates_v1.yaml,先完整录入注册证表格字段。

AFF-2-003 实现模板配置加载与校验

项目 内容
任务类型 后端 / 配置
前置任务 AFF-2-002
涉及文件 review_agent/application_form_fill/services/template_config.pytests/test_application_form_fill_template_config.py
目标 读取、校验模板配置并计算 hash
开发步骤 1. 实现 load_template_config()2. 实现 validate_template_config()3. 实现 compute_config_hash()4. 校验 version、source_dir、templates、code 唯一、source_file 存在、target.type 支持5. 对 .doc 待转换模板允许配置存在但标记运行时处理
验收标准 有效配置通过,缺失 source_dir 或重复 code 能被测试捕获
验证命令 pytest tests/test_application_form_fill_template_config.py
Codex 执行提示 请实现模板配置加载和校验服务,配置错误必须返回清晰错误列表,不要在 import 时直接崩溃。

AFF-2 阶段验证

python manage.py check
pytest tests/test_application_form_fill_template_config.py

八、AFF-3 触发与工作流骨架

AFF-3-001 扩展意图路由

项目 内容
任务类型 后端 / 意图识别
前置任务 AFF-2
涉及文件 review_agent/skill_router.pyreview_agent/application_form_fill/constants.pytests/test_application_form_fill_trigger.py
目标 用户话语命中自动填表意图时返回 application_form_fill
开发步骤 1. 增加触发关键词2. 支持“帮我填注册证”“对应的表格”“生成申报模板”等3. 支持指定模板识别入口4. 保持文件汇总和法规核查路由不回归
验收标准 自动填表语句触发正确,普通对话不误触发
验证命令 pytest tests/test_application_form_fill_trigger.py tests/test_regulatory_workflow.py -k router
Codex 执行提示 请扩展现有意图路由,新增 application_form_fill 动作。不要破坏 file_summary 和 regulatory_review 的现有触发。

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

项目 内容
任务类型 后端 / 工作流
前置任务 AFF-3-001
涉及文件 review_agent/application_form_fill/workflow.pyreview_agent/application_form_fill/storage.pytests/test_application_form_fill_workflow.py
目标 创建填表批次、生成工作目录、初始化节点
开发步骤 1. 实现 build_batch_no()2. 实现 build_batch_work_dir()3. 实现 create_application_form_fill_batch()4. 绑定 conversation、user、trigger_message、source_summary_batch5. 初始化 FORM_FILL_NODE_DEFINITIONS 节点6. 写 workflow_created 事件
验收标准 批次编号唯一,节点数量正确,工作目录在受控路径
验证命令 pytest tests/test_application_form_fill_workflow.py -k create
Codex 执行提示 请实现自动填表批次创建和节点初始化workflow_type 必须写 application_form_fill。

AFF-3-003 实现工作流执行器骨架

项目 内容
任务类型 后端 / 工作流
前置任务 AFF-3-002
涉及文件 review_agent/application_form_fill/workflow.pytests/test_application_form_fill_workflow.py
目标 实现节点串行执行、状态更新、事件推送和 skipped PDF 节点
开发步骤 1. 实现 FormFillWorkflowExecutor.run()2. 实现 _nodes()3. 实现 _run_node()4. 每个节点写 running/success/skipped5. pdf_convert 本期标记 skipped6. 失败时写 batch.failed
验收标准 空实现节点可完整跑到 successPDF 节点 skipped
验证命令 pytest tests/test_application_form_fill_workflow.py -k executor
Codex 执行提示 请实现自动填表工作流执行器骨架先让节点状态可完整流转PDF 转换节点本期标记 skipped。

AFF-3-004 接入流式对话启动逻辑

项目 内容
任务类型 后端 / 对话
前置任务 AFF-3-003
涉及文件 review_agent/services.pyreview_agent/application_form_fill/views.py
目标 用户触发自动填表时启动工作流;有附件时先自动汇总,无附件时使用最近成功汇总批次
开发步骤 1. 在 stream_message 中处理 application_form_fill 路由2. 如本次存在新附件复用文件汇总启动逻辑3. 无新附件时查找最近成功 FileSummaryBatch4. 无来源批次时回复请上传资料5. 返回 workflow meta
验收标准 对话触发能创建填表批次;无汇总批次时不崩溃
验证命令 pytest tests/test_application_form_fill_workflow.py -k stream
Codex 执行提示 请把 application_form_fill 接入现有 stream_message。无附件时复用最近成功汇总批次有新附件时先自动汇总。

AFF-3 阶段验证

python manage.py check
pytest tests/test_application_form_fill_trigger.py tests/test_application_form_fill_workflow.py

九、AFF-4 模板选择与文件来源

AFF-4-001 实现模板指定解析

项目 内容
任务类型 后端 / 模板选择
前置任务 AFF-3
涉及文件 review_agent/application_form_fill/services/template_select.pytests/test_application_form_fill_template_select.py
目标 从用户话语中识别指定模板
开发步骤 1. 识别注册证2. 识别变更注册备案文件3. 识别安全和性能基本原则清单4. 识别全部模板5. 未指定返回空数组
验收标准 指定模板语句可返回正确 template_codes
验证命令 pytest tests/test_application_form_fill_template_select.py -k requested
Codex 执行提示 请实现用户指定模板解析,支持注册证、变更注册备案文件、安全和性能基本原则清单、全部模板。

AFF-4-002 实现注册类型识别和模板选择

项目 内容
任务类型 后端 / 模板选择
前置任务 AFF-4-001
涉及文件 review_agent/application_form_fill/services/template_select.pytests/test_application_form_fill_template_select.py
目标 按用户话语、法规确认条件、文件抽取识别注册类型,并选择模板
开发步骤 1. 用户话语识别首次注册、变更注册、备案2. 从 source_regulatory_batch.condition_json 读取 confirmed_conditions3. 从文件抽取候选读取 registration_type4. 未指定模板时首次注册生成注册证 + 基本原则清单5. 变更/备案生成变更文件 + 基本原则清单6. 指定不适用模板允许生成但写 risk_notes
验收标准 模板选择规则与功能设计一致
验证命令 pytest tests/test_application_form_fill_template_select.py
Codex 执行提示 请实现注册类型识别和默认模板选择优先级是用户话语、已确认法规核查条件、文件抽取、unknown。

AFF-4-003 实现模板复制服务

项目 内容
任务类型 后端 / 模板
前置任务 AFF-4-002
涉及文件 review_agent/application_form_fill/services/template_repository.pyreview_agent/application_form_fill/storage.pytests/test_application_form_fill_template_repository.py
目标 将原始模板复制到批次目录,原始模板只读
开发步骤 1. 根据 TemplateSpec 定位 source_file2. 复制到 work_dir/templates3. 记录 ApplicationFormFillArtifact(template_copy)4. .doc 且无工作模板时返回模板失败不影响其他模板5. 路径必须在受控工作目录内
验收标准 注册证 .docx 可复制;原始文件不被修改;产物 hash 写入
验证命令 pytest tests/test_application_form_fill_template_repository.py
Codex 执行提示 请实现模板复制服务,只允许复制到批次工作目录,不能直接写原始法规材料目录。

AFF-4 阶段验证

pytest tests/test_application_form_fill_template_select.py tests/test_application_form_fill_template_repository.py

十、AFF-5 字段抽取与合并

AFF-5-001 实现规则/正则字段抽取

项目 内容
任务类型 后端 / 字段抽取
前置任务 AFF-4
涉及文件 review_agent/application_form_fill/services/field_extract.pytests/test_application_form_fill_field_extract.py
目标 从说明书、产品技术要求等文本中按标签和章节抽取字段
开发步骤 1. 复用 regulatory_review.services.text_extract.extract_text2. 识别文件角色3. 匹配 字段名:值 标签行4. 支持多行值拼接5. 保存 source_file、source_role、evidence、confidence、extractor=rule
验收标准 能从测试说明书文本抽取产品名称、预期用途、储存条件、有效期、包装规格
验证命令 pytest tests/test_application_form_fill_field_extract.py -k rules
Codex 执行提示 请实现自动填表规则/正则字段抽取,优先覆盖注册证模板字段,抽取结果必须包含来源文件、来源角色和证据片段。

AFF-5-002 实现 LLM 结构化抽取封装

项目 内容
任务类型 后端 / LLM
前置任务 AFF-5-001
涉及文件 review_agent/application_form_fill/services/field_extract.pyreview_agent/application_form_fill/prompts/field_extract.mdtests/test_application_form_fill_field_extract.py
目标 调用现有 LLM 能力输出字段 JSON失败时降级
开发步骤 1. 编写字段抽取 prompt2. 输入模板字段、文件上下文和候选文本3. 要求输出 JSON fields/checklist_items4. 解析 JSON5. 捕获超时和解析失败6. 失败返回空 LLM 结果,不阻断规则抽取
验收标准 monkeypatch LLM 后可解析结构化字段LLM 异常时工作流继续
验证命令 pytest tests/test_application_form_fill_field_extract.py -k llm
Codex 执行提示 请实现 LLM 结构化抽取封装必须可测试、可降级。LLM 输出解析失败不能导致整个填表批次失败。

AFF-5-003 实现并行抽取和产物留底

项目 内容
任务类型 后端 / 字段抽取
前置任务 AFF-5-002
涉及文件 review_agent/application_form_fill/services/field_extract.pyreview_agent/application_form_fill/storage.py
目标 并行执行规则/正则和 LLM 抽取,并保存 field_extract_result.json
开发步骤 1. 使用 ThreadPoolExecutor2. 规则和 LLM 两路并行3. 组装 regex_results、llm_results、selected_templates、source_evidence4. 保存 JSON5. 写 ApplicationFormFillArtifact(field_extract_result)
验收标准 JSON 产物包含两路结果和模板列表
验证命令 pytest tests/test_application_form_fill_field_extract.py -k parallel
Codex 执行提示 请实现字段并行抽取和 field_extract_result.json 产物留底LLM 失败时也必须保存规则结果。

AFF-5-004 实现字段合并与冲突检测

项目 内容
任务类型 后端 / 字段合并
前置任务 AFF-5-003
涉及文件 review_agent/application_form_fill/services/field_merge.pytests/test_application_form_fill_field_merge.py
目标 合并规则和 LLM 字段,说明书优先,并生成冲突摘要
开发步骤 1. 实现字段值归一化2. 实现来源优先级排序3. 同字段多值一致时合并4. 不一致时选择最高优先级来源5. 说明书与其他文件冲突时标记 conflict6. 输出 merged_fields 和 conflicts
验收标准 说明书优先;冲突字段包含 selected_value、selected_source、conflict_values、handling
验证命令 pytest tests/test_application_form_fill_field_merge.py
Codex 执行提示 请实现字段合并服务,严格按说明书优先处理冲突,并把冲突列表写成可用于对话摘要和追溯清单的结构。

AFF-5 阶段验证

pytest tests/test_application_form_fill_field_extract.py tests/test_application_form_fill_field_merge.py

十一、AFF-6 Word 填充与追溯导出

AFF-6-001 实现 Word 表格行填充

项目 内容
任务类型 后端 / Word
前置任务 AFF-5
涉及文件 review_agent/application_form_fill/services/word_fill.pytests/test_application_form_fill_word_fill.py
目标 使用 python-docx 按表格行名写入注册证模板
开发步骤 1. 打开 docx 模板副本2. 遍历 tables/rows/cells3. 匹配第一列 row_label4. 写入第二列5. 缺失字段保持空白6. 保存 output_path
验收标准 产品名称、包装规格、预期用途等能写入注册证模板对应行
验证命令 pytest tests/test_application_form_fill_word_fill.py -k table
Codex 执行提示 请实现 Word 表格行填充服务,先支持注册证模板的两列表格行名匹配。

AFF-6-002 实现冲突高亮

项目 内容
任务类型 后端 / Word
前置任务 AFF-6-001
涉及文件 review_agent/application_form_fill/services/word_fill.pytests/test_application_form_fill_word_fill.py
目标 冲突字段在 Word 中黄底红字
开发步骤 1. 对冲突字段写入 run2. 设置字体颜色 FF00003. 设置单元格 shading FFFF004. 非冲突字段保持原样式5. 测试读取 docx XML 验证颜色和底色
验收标准 冲突字段样式可在 docx XML 中验证
验证命令 pytest tests/test_application_form_fill_word_fill.py -k highlight
Codex 执行提示 请实现 Word 冲突高亮,冲突字段必须红色字体和黄色底色,测试需检查 docx XML。

AFF-6-003 创建 Word 导出记录

项目 内容
任务类型 后端 / 导出
前置任务 AFF-6-002
涉及文件 review_agent/application_form_fill/services/word_fill.pyreview_agent/application_form_fill/workflow.py
目标 Word 生成后写入 ExportedSummaryFile(export_type=word) 和产物记录
开发步骤 1. 按批次号、产品名、模板标签生成文件名2. 保存到 work_dir/filled3. 创建 ApplicationFormFillArtifact(filled_template)4. 创建 ExportedSummaryFile5. 记录模板失败时错误
验收标准 可查询到 word 导出记录和 filled_template 产物
验证命令 pytest tests/test_application_form_fill_word_fill.py -k export
Codex 执行提示 请把 Word 填充结果保存为导出文件export_type 使用 wordworkflow_type 使用 application_form_fill。

AFF-6-004 实现追溯清单 Excel/JSON

项目 内容
任务类型 后端 / 导出
前置任务 AFF-6-003
涉及文件 review_agent/application_form_fill/services/traceability_export.pytests/test_application_form_fill_traceability.py
目标 输出字段来源追溯清单和合并结果 JSON
开发步骤 1. 生成“字段追溯”Sheet2. 生成“冲突字段”Sheet3. 生成“低置信度条目”Sheet4. 生成“生成结果”Sheet5. 保存 Excel6. 保存 merged_fields.json7. 创建导出和产物记录
验收标准 Excel 可打开,包含字段、来源、证据、冲突、处理方式
验证命令 pytest tests/test_application_form_fill_traceability.py
Codex 执行提示 请实现字段来源追溯清单导出,必须包含规则/LLM 合并结果、冲突字段和生成结果。

AFF-6 阶段验证

pytest tests/test_application_form_fill_word_fill.py tests/test_application_form_fill_traceability.py

十二、AFF-7 飞书通知与对话摘要

AFF-7-001 生成助手 Markdown 摘要

项目 内容
任务类型 后端 / 对话
前置任务 AFF-6
涉及文件 review_agent/application_form_fill/services/traceability_export.pyreview_agent/application_form_fill/workflow.py
目标 工作流完成后向当前对话写入下载链接和冲突摘要
开发步骤 1. 汇总 Word 导出2. 汇总 PDF 状态为待增强3. 汇总冲突字段4. 添加追溯清单下载链接5. 创建 assistant Message
验收标准 对话中出现 Markdown 表格、Word 下载、追溯清单下载和冲突摘要
验证命令 pytest tests/test_application_form_fill_workflow.py -k summary
Codex 执行提示 请实现自动填表完成后的助手 Markdown 摘要PDF 本期显示为待增强,不作为失败。

AFF-7-002 实现飞书通知记录和 mock 通知

项目 内容
任务类型 后端 / 通知
前置任务 AFF-7-001
涉及文件 review_agent/application_form_fill/services/notifier.pytests/test_application_form_fill_notification.py
目标 填表完成后记录通知,可 mock 发送,失败不阻断下载
开发步骤 1. 实现 notify_completion()2. 默认 channel=mock3. 写 template_codes、export_ids、message_summary4. 支持 send_status success/failed5. 失败时记录 error_message 和 retry_count
验收标准 通知记录可查;通知失败不影响批次核心产物
验证命令 pytest tests/test_application_form_fill_notification.py
Codex 执行提示 请实现自动填表通知服务,先用 mock 通知记录即可。通知失败不得阻断 Word 下载。

AFF-7-003 完成工作流状态归并

项目 内容
任务类型 后端 / 工作流
前置任务 AFF-7-002
涉及文件 review_agent/application_form_fill/workflow.pytests/test_application_form_fill_workflow.py
目标 根据 Word、追溯清单、通知结果标记 success/partial_success/failed
开发步骤 1. 所有目标 Word 成功时 success2. 至少一个 Word 成功但非关键产物失败时 partial_success3. 所有 Word 失败时 failed4. PDF skipped 不导致失败5. 发送 workflow_completed 事件
验收标准 批次状态符合详细设计
验证命令 pytest tests/test_application_form_fill_workflow.py -k status
Codex 执行提示 请完成自动填表工作流状态归并PDF skipped 不影响 success通知失败最多导致 partial_success。

AFF-7 阶段验证

pytest tests/test_application_form_fill_workflow.py tests/test_application_form_fill_notification.py

十三、AFF-8 前端卡片与总体验收

AFF-8-001 后端状态接口

项目 内容
任务类型 后端 / 接口
前置任务 AFF-7
涉及文件 review_agent/application_form_fill/views.pyreview_agent/urls.py 或相关 URL 文件
目标 提供自动填表启动和状态查询接口
开发步骤 1. 新增 start 接口2. 新增 detail/status 接口3. 返回 batch、nodes、conflicts、exports4. 校验 conversation/user 权限5. 接入 URL
验收标准 当前用户可查自己的填表批次,不能查他人批次
验证命令 pytest tests/test_application_form_fill_views.py
Codex 执行提示 请实现自动填表启动和状态查询接口,所有查询必须校验当前用户权限。

AFF-8-002 前端支持 application_form_fill 卡片

项目 内容
任务类型 前端 / 工作流卡片
前置任务 AFF-8-001
涉及文件 static/js/app.jstemplates/home.html、静态 CSS 文件
目标 前端展示自动填表工作流卡片,并根据 SSE 更新节点
开发步骤 1. 解析 workflow_type=application_form_fill2. 定义节点文案3. 创建卡片4. 更新节点状态5. PDF 节点显示待增强/跳过6. 页面刷新后恢复
验收标准 自动填表卡片可显示准备资料、选择模板、复制模板、抽取字段、填写 Word、追溯清单、飞书通知
验证命令 pytest tests/test_application_form_fill_frontend.py 或现有前端测试命令
Codex 执行提示 请在现有工作流卡片逻辑中新增 application_form_fill 类型,展示自动填表节点并支持状态恢复。

AFF-8-003 前端展示结果和下载链接

项目 内容
任务类型 前端 / Markdown
前置任务 AFF-8-002
涉及文件 static/js/app.js、模板和 CSS
目标 对话框正常展示 Word 下载、追溯清单、冲突摘要
开发步骤 1. 确认助手 Markdown 渲染支持表格2. 验证 Word 下载链接点击3. 验证冲突摘要表格4. PDF 列显示待增强
验收标准 对话结果可读、链接可用、PDF 待增强不被误判为失败
验证命令 前端/Playwright 对应测试
Codex 执行提示 请验证并完善自动填表结果展示,确保 Markdown 表格、Word 下载链接、追溯清单链接和冲突摘要正常显示。

AFF-8-004 总体验收与回归

项目 内容
任务类型 验收 / 回归
前置任务 AFF-8-003
涉及文件 全项目
目标 运行全量测试,确认前三批能力均不回归
开发步骤 1. 运行 Django check2. 运行自动填表测试3. 运行文件汇总测试4. 运行法规核查测试5. 如可用,运行前端/Playwright 测试6. 检查 git status
验收标准 全量测试通过;失败项均有解释;无意外文件变更
验证命令 python manage.py check; pytest
Codex 执行提示 请执行第三批自动填表总体验收,运行 Django check 和 pytest 全量回归,确认文件汇总与法规核查不回归。

AFF-8 阶段验证

python manage.py check
pytest

十四、测试分层要求

层级 验证内容 建议文件
模型测试 三张新表、word/pdf 导出类型、权限关系 tests/test_application_form_fill_models.py
配置测试 YAML 加载、模板配置校验、hash tests/test_application_form_fill_template_config.py
选择测试 触发语句、指定模板、注册类型优先级、默认模板 tests/test_application_form_fill_template_select.py
抽取测试 规则/正则、LLM 降级、并行抽取、字段合并 tests/test_application_form_fill_field_extract.pytests/test_application_form_fill_field_merge.py
Word 测试 表格行填充、冲突高亮、导出记录 tests/test_application_form_fill_word_fill.py
导出测试 追溯清单 Excel、JSON 产物、下载权限 tests/test_application_form_fill_traceability.pytests/test_application_form_fill_views.py
工作流测试 批次创建、节点流转、状态归并、助手摘要 tests/test_application_form_fill_workflow.py
通知测试 mock 通知、失败记录、重试字段 tests/test_application_form_fill_notification.py
前端测试 卡片节点、PDF 待增强、下载链接、冲突摘要 tests/test_application_form_fill_frontend.py

十五、Codex 自动化执行规则

规则 内容
顺序执行 必须从 AFF-0 到 AFF-8 顺序执行,不得跳阶段
TDD 新行为先写失败测试,再实现
当前阶段优先 某阶段失败时先修复当前阶段,不继续后续阶段
回归保护 文件汇总和法规核查已有测试不得回归
PDF 边界 PDF 节点本期可 skipped不为 PDF 引入强依赖
字段表边界 不新增字段级数据库表,后续增强已在待办计划
每阶段验证 每阶段完成后运行对应验证命令
每阶段提交 每阶段验证通过后生成提交摘要并本地提交
不覆盖变更 不得回滚或覆盖用户已有未提交变更

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

后续可直接对 Codex 输入:

请按 docs/5.开发计划/3.产品关键信息提取与申报文件自动填表.md 执行第三批开发。

目标:
完成独立 application_form_fill 工作流,通过用户对话触发自动填表,复用当前对话最近成功 FileSummaryBatch支持模板配置、注册证 Word 自动填写、规则/正则与 LLM 并行字段抽取、说明书优先冲突归并、冲突高亮、字段来源追溯清单、Word 下载、自动填表工作流卡片和飞书 mock 通知记录。

执行规则:
1. 创建 codex/YYYYMMDD-申报文件自动填表 分支。
2. 按 AFF-0 到 AFF-8 顺序执行,不跳阶段。
3. 每阶段先写测试,再实现,完成后运行对应验证命令。
4. 不实现字段级数据库表。
5. PDF 转换本期作为 skipped/待增强,不引入强制 LibreOffice 依赖。
6. 模板配置路径必须为 review_agent/application_form_fill/templates/application_form_templates_v1.yaml。
7. Word 模板优先支持注册证格式 docx两个 doc 模板可标记待转换或部分成功。
8. 每阶段验证通过后调用 git-commit-summary 生成提交摘要并本地提交。
9. 最后运行 python manage.py check 和 pytest 全量验收。

十七、待执行前检查清单

检查项 状态
第三批需求分析、功能设计、详细设计、数据库设计均已存在 待执行时确认
当前分支是否适合创建开发分支 待执行时确认
是否存在用户未提交变更 待执行时确认
python-docxopenpyxlPyYAML 是否可用 待执行时确认
现有文件汇总和法规核查测试是否通过 待执行时确认
执行机器是否提供 git-commit-summary skill 待执行时确认
.doc 模板和 PDF 转换是否保持在待办边界内 待执行时确认