Files
DEMO-AGENT/docs/5.开发计划/2.NMPA注册资料法规核查与整改闭环-第二批完整闭环.md

15 KiB
Raw Blame History

NMPA 注册资料法规核查与整改闭环开发计划(第二批:完整闭环补齐)

一、第二批目标

第二批在第一批主链路通过后执行,补齐完整整改闭环和交互能力:

适用条件对话选择框
-> waiting_user 暂停恢复
-> 附件 4 申报资料目录规则对齐
-> 整包复核
-> 缺失项复核
-> mock 通知留痕
-> 更完整的过程产物
-> 更强的前端交互和验收测试

飞书真实 CLI/API、规则管理前端、自动填写目标文件不在第二批落地进入 docs/6.待办计划/第二阶段暂缓事项.md


二、阶段总览

阶段 名称 目标 验收
RR2-1 适用条件确认 对话选择框确认产品类别、注册类型、临床评价路径等 waiting_user 可暂停恢复
RR2-2 附件 4 规则对齐与核查能力增强 按《体外诊断试剂注册申报资料要求及说明》扩展完整目录规则、章节、一致性、RAG 引用和文本抽取范围 能识别附件 4 一级/二级目录缺失和关键字段问题
RR2-3 整包复核 基于新的汇总批次创建新的法规核查批次 可追溯来源批次
RR2-4 缺失项复核 针对原 Issue 执行复核并更新状态 生成 review_record
RR2-5 mock 通知留痕 对 blocking/high/medium 写 mock 通知记录 报告展示通知记录
RR2-6 前端和总体验收 条件选择框、复核入口、通知/复核记录展示 全量测试通过

三、RR2-1 适用条件确认

任务

编号 内容 文件
RR2-1-001 实现适用条件候选识别 services/info_extract.py
RR2-1-002 工作流支持 waiting_user 暂停 regulatory_review/workflow.py
RR2-1-003 实现条件确认接口 regulatory_review/views.py
RR2-1-004 实现对话选择框 UI templates/home.htmlstatic/js/app.js
RR2-1-005 确认后从 rule_scope 或下一节点恢复 workflow.py
RR2-1-006 增加测试 tests/test_regulatory_condition.pytests/test_regulatory_frontend.py

确认字段

以下选项来自既有第二阶段功能/详细设计:RegulatoryInfoExtract 输出产品类别、注册类型、临床评价路径,功能设计中明确注册类型包括“首次注册、变更注册、延续注册等”,临床评价路径包括“临床试验、免临床、同品种比对等”。因此 Demo 版按下表实现。

字段 交互
产品类别 体外诊断试剂 / 医疗器械 / 其他
注册类型 首次注册 / 变更注册 / 延续注册
临床评价路径 临床试验 / 免临床 / 同品种比对 / 待确认
产品名称 文本输入
型号规格 文本输入
预期用途 文本输入

验证命令

pytest tests/test_regulatory_condition.py tests/test_regulatory_frontend.py tests/test_regulatory_workflow.py

Codex 执行提示

请实现法规适用条件候选识别、waiting_user 暂停恢复和对话选择框确认。用户确认前工作流不得继续执行规则裁剪。

四、RR2-2 附件 4 规则对齐与核查能力增强

新增口径:附件 4 必须结构化入规则库

第一批主链路已经可以演示,但现有 Demo YAML 只覆盖 5 类规则:产品技术要求、说明书、注册检验报告、临床评价资料、安全和性能基本原则清单。经人工确认,第一批链路可通过;但与附件《体外诊断试剂注册申报资料要求及说明》相比,规则覆盖仍不完整。第二批 RR2-2 必须将附件 4 的申报资料目录结构补入规则库,并作为完整性和章节核查的主要依据。

附件来源:

docs/0.原始材料/附件 4 体外诊断试剂注册申报资料要求及说明.doc

如附件仍为旧版 .doc,允许在开发阶段通过 Pandoc、LibreOffice headless、Word COM 或受控脚本转换为 .docx/.txt 中间产物;中间产物只用于规则抽取和测试夹具,不改变第一阶段文件页数统计口径。

附件 4 目录覆盖范围

第二批 Demo 规则至少覆盖以下一级和二级标题。规则应支持“章节目录”类目录项、资料文件项、条件适用项和推荐项的区分。

一级目录 二级目录/资料项
1. 监管信息 1.1 章节目录、1.2 申请表、1.3 术语/缩写词列表、1.4 产品列表、1.5 关联文件、1.6 申报前与监管机构的联系情况和沟通记录、1.7 符合性声明
2. 综述资料 2.1 章节目录、2.2 概述、2.3 产品描述、2.4 预期用途、2.5 申报产品上市历史、2.6 其他需说明的内容
3. 非临床资料 3.1 章节目录、3.2 产品风险管理资料、3.3 体外诊断试剂安全和性能基本原则清单、3.4 产品技术要求及检验报告、3.5 分析性能研究、3.6 稳定性研究、3.7 阳性判断值或参考区间研究、3.8 其他资料
4. 临床评价资料 4.1 章节目录、4.2 临床评价资料
5. 产品说明书和标签样稿 5.1 章节目录、5.2 产品说明书、5.3 标签样稿、5.4 其他资料
6. 质量管理体系文件 6.1 综述、6.2 章节目录、6.3 生产制造信息、6.4 质量管理体系程序、6.5 管理职责程序、6.6 资源管理程序、6.7 产品实现程序、6.8 质量管理体系的测量/分析和改进程序、6.9 其他质量体系程序信息、6.10 质量管理体系核查文件

规则分级默认值

规则类型 默认风险 说明
一级目录整体缺失 high 如缺少“监管信息”“综述资料”“非临床资料”等完整章节
关键法定资料缺失 blocking 申请表、符合性声明、产品技术要求及检验报告等
关键技术/评价资料缺失 high 产品风险管理资料、分析性能研究、稳定性研究、临床评价资料、产品说明书、标签样稿等
条件适用资料缺失 medium/high 如上市历史、申报前沟通记录、其他资料;需结合 RR2-1 适用条件判断
章节目录缺失 medium 各一级目录下的章节目录缺失,影响资料可追溯性

与现有第一批链路的差异修正

当前能力 第二批修正
完整性核查只按文件名和相对路径匹配 增加目录名、首页文本/前若干页文本、章节标题候选匹配
YAML 只覆盖 5 个 Demo 条目 扩展为附件 4 一级/二级目录规则,保留第一批 5 条并映射到附件 4 对应章节
章节核查只检查说明书储存条件/有效期/样本要求 改为同时检查申报资料目录结构和说明书内部关键章节
RAG 可能跳过 .doc 材料 附件 4 必须可被转换或抽取,构建 RAG 前输出可读文本抽取状态
一致性只检查产品名称、型号规格、预期用途 保留这三项,并增加管理类别、分类编码、注册类型、临床评价路径等候选字段

任务

编号 内容 文件
RR2-2-001 将附件 4 .doc 抽取为可测试的结构化目录夹具 tests/fixtures/regulatory/attachment4_outline.json 或同等 fixture
RR2-2-002 扩展 YAML 规则,覆盖附件 4 一级/二级目录、别名、适用条件、风险等级和整改建议 rules/nmpa_ivd_registration_v1.yaml
RR2-2-003 增强规则加载校验,确保附件 4 必填目录项都有规则 ID、关键词、风险等级和 citation_query services/rule_loader.py
RR2-2-004 增强完整性核查,支持文件名、目录名、首页文本/前若干页文本、章节标题候选匹配 services/completeness_check.pyservices/text_extract.py
RR2-2-005 增强文本抽取,缓存章节候选、字段候选、首页文本和抽取状态 services/text_extract.pystorage.py
RR2-2-006 增强章节核查,支持附件 4 目录层级、别名、近似标题和证据片段 services/structure_check.py
RR2-2-007 增强一致性核查,支持产品名称、型号规格、预期用途、管理类别、分类编码、注册类型、临床评价路径等来源值 services/consistency_check.py
RR2-2-008 RAG 引用写入 rag_result_json 过程产物,并记录附件 4 文本抽取/索引状态 services/rag_citation.pystorage.py
RR2-2-009 增加附件 4 对齐测试 tests/test_regulatory_rule_loader.pytests/test_regulatory_completeness.pytests/test_regulatory_structure.pytests/test_regulatory_consistency.pytests/test_regulatory_rag.py

验收样例

样例条件 预期
文件包缺少“监管信息/申请表” 生成 blocking 或 high 问题,并引用附件 4 监管信息要求
文件包缺少“产品风险管理资料” 生成 high 问题category 为 completeness
文件包缺少“分析性能研究”或“稳定性研究” 生成 high 问题,给出补充研究资料建议
文件包有产品技术要求但无检验报告 生成 blocking 问题,规则映射到 3.4
文件包有产品说明书但无标签样稿 生成 high 问题,规则映射到 5.3
文件包缺少质量管理体系文件 生成 high 问题,规则映射到第 6 章
附件 4 .doc 未能抽取 RAG 构建命令失败或明确报告附件 4 抽取失败,不允许静默跳过该核心材料

验证命令

pytest tests/test_regulatory_rule_loader.py tests/test_regulatory_completeness.py tests/test_regulatory_structure.py tests/test_regulatory_consistency.py tests/test_regulatory_rag.py

Codex 执行提示

请先将附件 4《体外诊断试剂注册申报资料要求及说明》结构化为规则覆盖清单再增强 YAML、完整性核查、章节核查、一致性核查和 RAG 过程产物。第二批必须覆盖附件 4 的 1-6 章一级目录和主要二级目录;证据必须包含文件路径、命中片段、字段名或规则 ID便于人工复核。附件 4 作为核心法规材料,不允许在 RAG 构建中静默跳过。

五、RR2-3 整包复核

口径

整包复核不是修改原法规核查批次,而是基于新的成功 FileSummaryBatch 创建新的 RegulatoryReviewBatch。新批次记录来源批次信息,用于报告中展示“复核来源”。

复核入口不新增独立页面。前端通过法规核查工作流卡片展示复核入口,用户点击后由 AI 在对话区发起确认与引导。

任务

编号 内容 文件
RR2-3-001 新增整包复核启动接口 regulatory_review/views.py
RR2-3-002 支持指定新的 file_summary_batch_id workflow.py
RR2-3-003 记录 source/regenerated_from 信息 RegulatoryReviewBatch.condition_json 或独立字段
RR2-3-004 报告展示整包复核来源 services/export.py
RR2-3-005 增加测试 tests/test_regulatory_rectification.py

验证命令

pytest tests/test_regulatory_rectification.py tests/test_regulatory_workflow.py

Codex 执行提示

请实现整包复核:用户完成新的文件汇总后,可基于新 FileSummaryBatch 创建新的 RegulatoryReviewBatch并在报告中追溯原核查批次。

六、RR2-4 缺失项复核

口径

缺失项复核针对原 RegulatoryIssue 更新状态,不新建完整法规核查批次。系统可读取补充文件对应的新 FileSummaryBatch,只对指定问题重新匹配相关规则。

缺失项复核同样不新增独立页面。卡片只展示入口和状态,具体确认动作通过 AI 对话完成,例如确认复核哪些问题、使用哪个补充文件汇总批次。

任务

编号 内容 文件
RR2-4-001 实现缺失项复核服务 services/rectification_review.py
RR2-4-002 支持 issue_ids + file_summary_batch_id 输入 views.py
RR2-4-003 复核通过更新 review_passed,不通过更新 review_failed services/rectification_review.py
RR2-4-004 生成 review_record 过程产物 storage.py
RR2-4-005 报告展示复核记录 services/export.py
RR2-4-006 增加测试 tests/test_regulatory_rectification.py

验证命令

pytest tests/test_regulatory_rectification.py

Codex 执行提示

请实现缺失项复核。复核不重新跑完整法规核查工作流,只针对指定 RegulatoryIssue 和补充文件汇总批次更新问题状态,并生成 review_record 产物。

七、RR2-5 mock 通知留痕

口径

真实飞书暂缓。第二批只在 blocking/high/medium 风险项出现时创建 RegulatoryNotificationRecord(channel=mock),用于报告留痕和第三阶段接入。

任务

编号 内容 文件
RR2-5-001 实现 mock notifier services/feishu_notifier.py
RR2-5-002 风险等级 blocking/high/medium 写通知记录 workflow.py
RR2-5-003 通知记录进入 Markdown/Excel/JSON 报告 services/export.py
RR2-5-004 增加测试 tests/test_regulatory_notification.py

验证命令

pytest tests/test_regulatory_notification.py tests/test_regulatory_export.py

Codex 执行提示

请实现 mock 通知留痕。不要接真实飞书 CLI/API只为阻断项、高风险、中风险写 RegulatoryNotificationRecord并在报告中展示。

八、RR2-6 前端和总体验收

任务

编号 内容 文件
RR2-6-001 前端显示条件确认卡片 templates/home.htmlstatic/js/app.js
RR2-6-002 前端通过工作流卡片展示整包复核入口,并由 AI 对话确认 static/js/app.js
RR2-6-003 前端通过工作流卡片展示缺失项复核入口,并由 AI 对话确认 static/js/app.js
RR2-6-004 卡片展示通知和复核摘要 templates/home.htmlstatic/js/app.js
RR2-6-005 补 Playwright 或前端测试 tests/test_regulatory_frontend.py
RR2-6-006 全量回归 全项目

验证命令

python manage.py check
pytest

Codex 执行提示

请完善法规核查前端交互包含条件选择框、卡片式整包复核入口、卡片式缺失项复核入口、AI 对话确认、mock 通知和复核记录展示。不要新增独立复核页面。最后运行 python manage.py check 和 pytest 全量验收。

九、第二批 Codex 目标模式提示词

请按 docs/5.开发计划/2.NMPA注册资料法规核查与整改闭环-第二批完整闭环.md 执行第二阶段第二批开发。

前提:
第一批主链路已经完成并通过全量测试。

目标:
补齐法规核查完整整改闭环包括适用条件对话选择框、waiting_user 暂停恢复、附件 4 申报资料目录规则对齐、整包复核、缺失项复核、mock 通知留痕、增强章节/一致性核查和前端交互。

执行规则:
1. 从第一批完成后的稳定分支创建 codex/YYYYMMDD-NMPA法规核查完整闭环 分支。
2. 按 RR2-1 到 RR2-6 顺序执行。
3. 每阶段完成后运行对应验证命令。
4. RR2-2 必须覆盖附件 4 的 1-6 章一级目录和主要二级目录,不能只保留第一批 5 条 Demo 规则。
5. 不接真实飞书 CLI/API。
6. 不做规则管理前端。
7. 不做自动填写目标文件。
8. 最后运行 python manage.py check 和 pytest 全量验收。