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

16 KiB
Raw Blame History

NMPA 注册资料法规核查与整改闭环开发计划(第一批:主链路)

一、已确认口径

问题 结论
第二阶段覆盖范围 覆盖原始需求 2、4、5法规完整性核查、章节/一致性核查、风险预警与整改建议
原始需求 3 本阶段只做核查所需的信息抽取,不做自动填写目标文件
执行策略 第二阶段拆成两次 Codex 目标执行;第一批先打通 Demo 主链路
启动方式 用户对话提示词触发法规核查工作流,不做上传后自动核查
汇总批次 默认复用当前对话最近一次成功 FileSummaryBatch,不自动串联文件汇总
规则来源 Demo 先用本地 YAML数据库记录规则版本、路径、hash、RAG 索引信息
规则差异 自动检测 YAML 与数据库记录差异,提示人工确认更新;第一批不做规则管理前端
RAG 必须使用向量库;默认 ChromaDB
Embedding Provider 可配置Demo 默认 SiliconFlow Qwen/Qwen3-Embedding-4B
法规材料 先索引 docs/0.原始材料/关于公布体外诊断试剂注册申报资料要求和批准证明文件格式的公告
法规文档抽取 允许使用 LibreOffice headless 转换本地法规 .doc 材料;该依赖只服务 RAG 建库,不改变第一阶段页数统计口径
ChromaDB 运行方式 第一批采用本地持久化模式,不单独启动 Chroma Server
飞书 第一批不接真实飞书;暂缓项写入待办计划

二、第一批目标

第一批只追求“可运行、可演示、可追溯”的法规核查主链路:

已有文件汇总批次
-> 用户提示词触发法规核查
-> 读取本地 YAML 规则
-> 检查规则版本和 RAG 索引状态
-> 使用 ChromaDB 检索法规依据
-> 完整性核查
-> 基础章节核查
-> 基础一致性核查
-> 风险分级和整改建议
-> 生成对话摘要、Markdown 报告、Excel 清单、JSON 结果包
-> 前端展示法规核查工作流卡片

第一批完成后Demo 应能展示:

展示项 内容
法规依据 RAG 返回本地法规材料来源和片段
完整性问题 如缺少注册检验报告、临床评价资料等
章节问题 如说明书缺少储存条件、有效期、样本要求等章节
一致性问题 如产品名称、型号规格、预期用途在不同文件中不一致
风险清单 blocking/high/medium/low/info 五级
报告下载 Markdown、Excel、JSON

三、阶段拆分

阶段 名称 目标 验收
RR1-0 准备与回归 确认第一阶段稳定,创建开发分支 pytest 通过
RR1-1 模型与兼容改造 新增法规核查模型,兼容工作流/导出通用字段 migration 和模型测试通过
RR1-2 YAML 规则与版本记录 建立 Demo 规则文件、规则版本表、hash 差异检测 能识别 YAML 与 DB 差异
RR1-3 RAG 索引与检索 用 ChromaDB + SiliconFlow embedding 构建本地法规索引 能检索法规依据
RR1-4 触发与工作流骨架 对话提示词触发法规核查,复用最近成功汇总批次 能创建并运行法规核查批次
RR1-5 核查服务 完整性、基础章节、基础一致性核查 生成 findings
RR1-6 风险与导出 风险归并、Issue 落库、报告导出 生成助手摘要和下载文件
RR1-7 前端与验收 法规核查卡片、状态恢复、Markdown 结果展示 全量测试通过

四、RR1-0 准备与回归

任务

编号 内容
RR1-0-001 从当前稳定分支创建 codex/YYYYMMDD-NMPA法规核查主链路
RR1-0-002 运行 python manage.py checkpytest
RR1-0-003 记录第一阶段边界文件夹上传不作为强验收、RAR 依赖 7z、Office 页数口径可不精确

验证命令

python manage.py check
pytest
git status --short

Codex 执行提示

请创建第二阶段第一批开发分支,先确认第一阶段文件汇总功能全量测试通过。本阶段不要修改业务代码,只做环境和边界确认。

五、RR1-1 模型与兼容改造

任务

编号 内容 文件
RR1-1-001 新增法规核查模型和枚举 review_agent/models.py
RR1-1-002 WorkflowNodeRun 增加 workflow_typeworkflow_batch_idnode_group review_agent/models.py
RR1-1-003 WorkflowEvent 增加 workflow_typeworkflow_batch_idconversation_id review_agent/models.py
RR1-1-004 ExportedSummaryFile 增加 workflow_typeworkflow_batch_idexport_category review_agent/models.py
RR1-1-005 保持第一阶段文件汇总写入兼容 review_agent/file_summary/*
RR1-1-006 生成 migration 并补模型测试 review_agent/migrations/tests/test_regulatory_models.py

新增模型

模型 说明
RegulatoryRuleVersion 规则版本、YAML 路径、文件 hash、RAG 索引版本
RegulatoryReviewBatch 法规核查批次
RegulatoryIssue 风险问题和整改状态
RegulatoryArtifact 过程产物
RegulatoryNotificationRecord mock 通知预留记录,第一批可只建表不接真实通知

验证命令

python manage.py makemigrations review_agent
python manage.py migrate
python manage.py check
pytest tests/test_regulatory_models.py tests/test_file_summary_workflow.py tests/test_file_summary_views.py

Codex 执行提示

请新增法规核查相关模型,并轻量通用化现有工作流节点、事件和导出文件表。必须保持第一阶段文件汇总测试通过,不要重写第一阶段工作流。

六、RR1-2 YAML 规则与版本记录

任务

编号 内容 文件
RR1-2-001 新建法规核查模块目录 review_agent/regulatory_review/
RR1-2-002 编写 Demo YAML 规则 review_agent/regulatory_review/rules/nmpa_ivd_registration_v1.yaml
RR1-2-003 实现规则 hash 计算和版本记录 services/rule_loader.py
RR1-2-004 实现 YAML 与 DB 差异检测 services/rule_loader.py
RR1-2-005 增加规则版本初始化/检查管理命令 management/commands/regulatory_rules_check.py
RR1-2-006 增加测试 tests/test_regulatory_rule_loader.py

Demo 规则至少覆盖

文件项 类型 风险
产品技术要求 required blocking
说明书 required high
注册检验报告 required blocking
临床评价资料 conditional high
安全和性能基本原则清单 recommended medium

YAML 规则内容需参考本地法规资料目录:

docs/0.原始材料/关于公布体外诊断试剂注册申报资料要求和批准证明文件格式的公告

验证命令

pytest tests/test_regulatory_rule_loader.py
python manage.py regulatory_rules_check

Codex 执行提示

请建立 Demo 版 NMPA IVD 注册资料 YAML 规则库,并实现规则版本、文件 hash 和数据库记录差异检测。发现 YAML 与 DB hash 不一致时只提示需要更新,不自动覆盖。

七、RR1-3 RAG 索引与检索

任务

编号 内容 文件
RR1-3-001 增加依赖 chromadb 和必要 HTTP 客户端 requirements.txt
RR1-3-002 实现 embedding provider 抽象 services/rag_embedding.py
RR1-3-003 实现 SiliconFlow embedding provider services/rag_embedding.py
RR1-3-004 实现法规文档文本抽取和切块 services/rag_index.py
RR1-3-005 实现 ChromaDB 持久化索引构建命令 management/commands/regulatory_rag_build.py
RR1-3-006 实现 RAG 引用检索服务 services/rag_citation.py
RR1-3-007 增加测试 tests/test_regulatory_rag.py

配置

配置项 默认
REGULATORY_RAG_PROVIDER siliconflow
REGULATORY_RAG_CHROMA_PATH media/regulatory_review/rag/chroma/
SILICONFLOW_BASE_URL https://api.siliconflow.cn/v1
SILICONFLOW_API_KEY 从环境变量读取
SILICONFLOW_EMBEDDING_MODEL Qwen/Qwen3-Embedding-4B
SILICONFLOW_EMBEDDING_DIMENSIONS 1024
REGULATORY_RAG_COLLECTION nmpa_ivd_registration_v1

SiliconFlow Embedding API 参考:

https://docs.siliconflow.com/en/api-reference/embeddings/create-embeddings

规则

场景 处理
RAG 索引不存在 核查时提示先构建索引,不在核查中临时构建
Embedding API 不可用 构建命令失败,核查不启动
RAG 无命中 规则问题仍输出,法规依据标记“原文依据待补充”
本地法规 .doc 无法直接抽取 允许通过 LibreOffice headless 转换后抽取Docker 部署说明需写明可选安装方式
ChromaDB 存储 使用本地持久化目录Docker 部署时通过 volume 挂载保留索引

验证命令

python manage.py regulatory_rag_build
pytest tests/test_regulatory_rag.py

Codex 执行提示

请实现基于 ChromaDB 的本地法规 RAG。Embedding Provider 要可配置Demo 默认使用 SiliconFlow Qwen/Qwen3-Embedding-4B。ChromaDB 使用本地持久化目录,不单独启动服务。法规 `.doc` 材料允许用 LibreOffice headless 转换后抽取。核查流程只检查索引可用性,不临时构建索引。

八、RR1-4 触发与工作流骨架

任务

编号 内容 文件
RR1-4-001 实现法规核查提示词路由 review_agent/skill_router.py
RR1-4-002 实现法规核查批次创建 regulatory_review/workflow.py
RR1-4-003 默认查找当前对话最近成功 FileSummaryBatch workflow.py
RR1-4-004 无成功汇总批次时提示用户先执行自动汇总 services.py
RR1-4-005 实现启动、状态、事件接口 regulatory_review/views.pyurls.py
RR1-4-006 接入项目 URL config/urls.pyreview_agent/urls.py
RR1-4-007 增加测试 tests/test_regulatory_workflow.pytests/test_regulatory_views.py

第一批节点

prepare
-> rule_scope
-> completeness_check
-> text_extract
-> structure_check
-> consistency_check
-> risk_assess
-> report_export
-> completed

验证命令

pytest tests/test_regulatory_workflow.py tests/test_regulatory_views.py
pytest tests/test_file_summary_trigger.py tests/test_llm_streaming.py

Codex 执行提示

请实现法规核查提示词触发和工作流骨架。用户说“法规核查、NMPA核查、完整性核查、风险预警”等意图时启动 regulatory_review默认复用当前对话最近成功 FileSummaryBatch没有成功汇总批次时提示先自动汇总。

九、RR1-5 核查服务

任务

编号 内容 文件
RR1-5-001 实现统一 Finding dataclass regulatory_review/schemas.py
RR1-5-002 完整性核查:文件名、目录名、首页文本匹配 services/completeness_check.py
RR1-5-003 文本抽取docx/pdf/xlsx/pptx/txt/md 基础文本 services/text_extract.py
RR1-5-004 基础章节核查:按规则关键词判断章节是否存在 services/structure_check.py
RR1-5-005 基础一致性核查:产品名称、型号规格、预期用途 services/consistency_check.py
RR1-5-006 过程产物保存和 hash storage.py
RR1-5-007 增加测试 tests/test_regulatory_completeness.pytests/test_regulatory_text_extract.pytests/test_regulatory_structure.pytests/test_regulatory_consistency.py

Demo 验收样例

测试或演示资料中至少构造:

条件 预期
有说明书 可匹配说明书规则
有产品技术要求 可匹配产品技术要求规则
缺少注册检验报告 生成 blocking 问题
说明书缺少储存条件章节 生成 high 或 medium 问题
产品名称在两个文件中不一致 生成 consistency 问题

验证命令

pytest tests/test_regulatory_completeness.py tests/test_regulatory_text_extract.py tests/test_regulatory_structure.py tests/test_regulatory_consistency.py

Codex 执行提示

请实现完整性核查、文本抽取、基础章节核查和基础一致性核查。所有核查服务只返回 Finding不直接创建 RegulatoryIssue。

十、RR1-6 风险与导出

任务

编号 内容 文件
RR1-6-001 Findings 去重和风险归并 services/risk_assess.py
RR1-6-002 RAG 引用挂载到问题证据 services/risk_assess.pyservices/rag_citation.py
RR1-6-003 创建 RegulatoryIssue services/risk_assess.py
RR1-6-004 生成 Markdown 核查报告 services/export.py
RR1-6-005 生成 Excel 缺失清单 services/export.py
RR1-6-006 生成 JSON 结果包 services/export.py
RR1-6-007 工作流完成后写入助手消息 workflow.py
RR1-6-008 增加测试 tests/test_regulatory_risk_assess.pytests/test_regulatory_export.py

对话摘要

助手消息至少包含:

已完成 NMPA 注册资料法规核查。

| 风险等级 | 数量 |
| --- | --- |
| 阻断项 | 1 |
| 高风险 | 1 |

| 等级 | 问题 | 状态 | 建议 |
| --- | --- | --- | --- |
| 阻断项 | 缺少注册检验报告 | 待处理 | 请补充注册检验报告并复核 |

[下载 Markdown 核查报告](...)
[下载 Excel 缺失清单](...)
[下载 JSON 结果包](...)

验证命令

pytest tests/test_regulatory_risk_assess.py tests/test_regulatory_export.py tests/test_regulatory_workflow.py

Codex 执行提示

请实现风险归并、RAG 法规依据挂载、Issue 落库和最终报告导出。工作流完成后必须向当前对话写入 Markdown 摘要和下载链接。

十一、RR1-7 前端与总体验收

任务

编号 内容 文件
RR1-7-001 工作流卡片支持 regulatory_review 类型 templates/home.htmlstatic/js/app.js
RR1-7-002 卡片使用 workflow_type + workflow_batch_id 区分 static/js/app.js
RR1-7-003 显示法规核查节点和风险摘要 templates/home.htmlstatic/js/app.js
RR1-7-004 页面刷新恢复法规核查卡片 views.pystatic/js/app.js
RR1-7-005 补前端测试 tests/test_regulatory_frontend.py
RR1-7-006 全量回归 全项目

验证命令

python manage.py check
pytest

如浏览器可用,再运行 Playwright 端到端验证。

Codex 执行提示

请在现有工作流卡片轮播基础上支持 regulatory_review 类型,展示法规核查节点、风险摘要和完成状态。最后运行 python manage.py check 和 pytest 全量验收。

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

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

目标:
完成 NMPA 法规核查主链路,复用当前对话最近成功 FileSummaryBatch通过用户提示词触发 regulatory_review 工作流,实现 YAML 规则、ChromaDB + SiliconFlow Embedding RAG、完整性核查、基础章节核查、基础一致性核查、风险分级、Markdown/Excel/JSON 报告和前端法规核查卡片。

执行规则:
1. 创建 codex/YYYYMMDD-NMPA法规核查主链路 分支。
2. 按 RR1-0 到 RR1-7 顺序执行,不跳阶段。
3. 每阶段完成后运行对应验证命令。
4. 第一阶段文件汇总测试不得回归。
5. 不自动串联文件汇总;没有成功汇总批次时提示用户先自动汇总。
6. 不接真实飞书,不做规则管理前端,不做自动填写目标文件。
7. 最后运行 python manage.py check 和 pytest 全量验收。