243 lines
9.2 KiB
Markdown
243 lines
9.2 KiB
Markdown
# NMPA 注册资料法规核查与整改闭环开发计划(第二批:完整闭环补齐)
|
||
|
||
## 一、第二批目标
|
||
|
||
第二批在第一批主链路通过后执行,补齐完整整改闭环和交互能力:
|
||
|
||
```text
|
||
适用条件对话选择框
|
||
-> waiting_user 暂停恢复
|
||
-> 整包复核
|
||
-> 缺失项复核
|
||
-> mock 通知留痕
|
||
-> 更完整的过程产物
|
||
-> 更强的前端交互和验收测试
|
||
```
|
||
|
||
飞书真实 CLI/API、规则管理前端、自动填写目标文件不在第二批落地,进入 `docs/6.待办计划/第二阶段暂缓事项.md`。
|
||
|
||
---
|
||
|
||
## 二、阶段总览
|
||
|
||
| 阶段 | 名称 | 目标 | 验收 |
|
||
| --- | --- | --- | --- |
|
||
| RR2-1 | 适用条件确认 | 对话选择框确认产品类别、注册类型、临床评价路径等 | waiting_user 可暂停恢复 |
|
||
| RR2-2 | 核查能力增强 | 扩展章节、一致性、RAG 引用和文本抽取范围 | 复杂样例可识别更多问题 |
|
||
| 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.html`、`static/js/app.js` |
|
||
| RR2-1-005 | 确认后从 `rule_scope` 或下一节点恢复 | `workflow.py` |
|
||
| RR2-1-006 | 增加测试 | `tests/test_regulatory_condition.py`、`tests/test_regulatory_frontend.py` |
|
||
|
||
### 确认字段
|
||
|
||
以下选项来自既有第二阶段功能/详细设计:`RegulatoryInfoExtract` 输出产品类别、注册类型、临床评价路径,功能设计中明确注册类型包括“首次注册、变更注册、延续注册等”,临床评价路径包括“临床试验、免临床、同品种比对等”。因此 Demo 版按下表实现。
|
||
|
||
| 字段 | 交互 |
|
||
| --- | --- |
|
||
| 产品类别 | 体外诊断试剂 / 医疗器械 / 其他 |
|
||
| 注册类型 | 首次注册 / 变更注册 / 延续注册 |
|
||
| 临床评价路径 | 临床试验 / 免临床 / 同品种比对 / 待确认 |
|
||
| 产品名称 | 文本输入 |
|
||
| 型号规格 | 文本输入 |
|
||
| 预期用途 | 文本输入 |
|
||
|
||
### 验证命令
|
||
|
||
```bash
|
||
pytest tests/test_regulatory_condition.py tests/test_regulatory_frontend.py tests/test_regulatory_workflow.py
|
||
```
|
||
|
||
### Codex 执行提示
|
||
|
||
```text
|
||
请实现法规适用条件候选识别、waiting_user 暂停恢复和对话选择框确认。用户确认前工作流不得继续执行规则裁剪。
|
||
```
|
||
|
||
---
|
||
|
||
## 四、RR2-2 核查能力增强
|
||
|
||
### 任务
|
||
|
||
| 编号 | 内容 | 文件 |
|
||
| --- | --- | --- |
|
||
| RR2-2-001 | 扩展 YAML 规则中的必需章节和一致性字段 | `rules/nmpa_ivd_registration_v1.yaml` |
|
||
| RR2-2-002 | 增强文本抽取,缓存章节候选和字段候选 | `services/text_extract.py` |
|
||
| RR2-2-003 | 增强章节核查,支持别名、近似标题和证据片段 | `services/structure_check.py` |
|
||
| RR2-2-004 | 增强一致性核查,支持多个来源值和低置信度提示项 | `services/consistency_check.py` |
|
||
| RR2-2-005 | RAG 引用写入 `rag_result_json` 过程产物 | `services/rag_citation.py`、`storage.py` |
|
||
| RR2-2-006 | 增加测试 | `tests/test_regulatory_structure.py`、`tests/test_regulatory_consistency.py`、`tests/test_regulatory_rag.py` |
|
||
|
||
### 验证命令
|
||
|
||
```bash
|
||
pytest tests/test_regulatory_structure.py tests/test_regulatory_consistency.py tests/test_regulatory_rag.py
|
||
```
|
||
|
||
### Codex 执行提示
|
||
|
||
```text
|
||
请增强章节核查、一致性核查和 RAG 过程产物。证据必须包含文件路径、命中片段、字段名或规则 ID,便于人工复核。
|
||
```
|
||
|
||
---
|
||
|
||
## 五、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` |
|
||
|
||
### 验证命令
|
||
|
||
```bash
|
||
pytest tests/test_regulatory_rectification.py tests/test_regulatory_workflow.py
|
||
```
|
||
|
||
### Codex 执行提示
|
||
|
||
```text
|
||
请实现整包复核:用户完成新的文件汇总后,可基于新 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` |
|
||
|
||
### 验证命令
|
||
|
||
```bash
|
||
pytest tests/test_regulatory_rectification.py
|
||
```
|
||
|
||
### Codex 执行提示
|
||
|
||
```text
|
||
请实现缺失项复核。复核不重新跑完整法规核查工作流,只针对指定 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` |
|
||
|
||
### 验证命令
|
||
|
||
```bash
|
||
pytest tests/test_regulatory_notification.py tests/test_regulatory_export.py
|
||
```
|
||
|
||
### Codex 执行提示
|
||
|
||
```text
|
||
请实现 mock 通知留痕。不要接真实飞书 CLI/API;只为阻断项、高风险、中风险写 RegulatoryNotificationRecord,并在报告中展示。
|
||
```
|
||
|
||
---
|
||
|
||
## 八、RR2-6 前端和总体验收
|
||
|
||
### 任务
|
||
|
||
| 编号 | 内容 | 文件 |
|
||
| --- | --- | --- |
|
||
| RR2-6-001 | 前端显示条件确认卡片 | `templates/home.html`、`static/js/app.js` |
|
||
| RR2-6-002 | 前端通过工作流卡片展示整包复核入口,并由 AI 对话确认 | `static/js/app.js` |
|
||
| RR2-6-003 | 前端通过工作流卡片展示缺失项复核入口,并由 AI 对话确认 | `static/js/app.js` |
|
||
| RR2-6-004 | 卡片展示通知和复核摘要 | `templates/home.html`、`static/js/app.js` |
|
||
| RR2-6-005 | 补 Playwright 或前端测试 | `tests/test_regulatory_frontend.py` |
|
||
| RR2-6-006 | 全量回归 | 全项目 |
|
||
|
||
### 验证命令
|
||
|
||
```bash
|
||
python manage.py check
|
||
pytest
|
||
```
|
||
|
||
### Codex 执行提示
|
||
|
||
```text
|
||
请完善法规核查前端交互,包含条件选择框、卡片式整包复核入口、卡片式缺失项复核入口、AI 对话确认、mock 通知和复核记录展示。不要新增独立复核页面。最后运行 python manage.py check 和 pytest 全量验收。
|
||
```
|
||
|
||
---
|
||
|
||
## 九、第二批 Codex 目标模式提示词
|
||
|
||
```text
|
||
请按 docs/5.开发计划/2.NMPA注册资料法规核查与整改闭环-第二批完整闭环.md 执行第二阶段第二批开发。
|
||
|
||
前提:
|
||
第一批主链路已经完成并通过全量测试。
|
||
|
||
目标:
|
||
补齐法规核查完整整改闭环,包括适用条件对话选择框、waiting_user 暂停恢复、整包复核、缺失项复核、mock 通知留痕、增强章节/一致性核查和前端交互。
|
||
|
||
执行规则:
|
||
1. 从第一批完成后的稳定分支创建 codex/YYYYMMDD-NMPA法规核查完整闭环 分支。
|
||
2. 按 RR2-1 到 RR2-6 顺序执行。
|
||
3. 每阶段完成后运行对应验证命令。
|
||
4. 不接真实飞书 CLI/API。
|
||
5. 不做规则管理前端。
|
||
6. 不做自动填写目标文件。
|
||
7. 最后运行 python manage.py check 和 pytest 全量验收。
|
||
```
|