From e64dca551c18b14d38204a4d1b77f06b79a02d41 Mon Sep 17 00:00:00 2001 From: bruce Date: Tue, 2 Jun 2026 23:08:15 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E9=87=8D=E6=9E=84=E7=9C=9F=E5=AE=9E?= =?UTF-8?q?=E9=A2=98=E7=9B=AE=E4=B8=8B=E7=9A=84=E9=9C=80=E6=B1=82=E4=B8=8E?= =?UTF-8?q?=E8=B5=84=E6=96=99=E6=96=87=E6=A1=A3=E4=BD=93=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plans/2026-05-29-V1-Django基线实现计划.md | 343 ---------- ...拟题二】试剂盒临床注册文件准备与审核Agent.docx | Bin 0 -> 18601 bytes .../【模拟题二】试剂盒临床注册文件准备与审核Agent.md | 62 ++ docs/原始材料/目标产品说明书.docx | Bin 0 -> 51977 bytes .../第1章 监管信息/CH1.11.1 符合标准的清单.docx | Bin 0 -> 16779 bytes .../第1章 监管信息/CH1.11.5 真实性声明.docx | Bin 0 -> 22374 bytes .../第1章 监管信息/CH1.11.6 符合性声明.docx | Bin 0 -> 16544 bytes .../第1章 监管信息/CH1.2 监管信息目录.docx | Bin 0 -> 21828 bytes .../原始材料/第1章 监管信息/CH1.4 申请表.docx | Bin 0 -> 49840 bytes .../第1章 监管信息/CH1.5 产品列表.docx | Bin 0 -> 32311 bytes .../第1章 监管信息/CH1.9 产品申报前沟通的说明.doc | Bin 0 -> 14336 bytes .../附件 4 体外诊断试剂注册申报资料要求及说明.doc | Bin 0 -> 58368 bytes docs/设计文档/0.设计文档索引.md | 71 -- docs/设计文档/1.智能体总体设计.md | 211 ------ docs/设计文档/2.功能流程设计.md | 169 ----- docs/设计文档/3.数据库设计.md | 144 ---- docs/设计文档/4.页面与路由设计.md | 179 ----- docs/设计文档/5.部署设计.md | 111 ---- docs/设计文档/模块设计/1.配置模块详细设计.md | 112 ---- docs/设计文档/模块设计/2.场景模块详细设计.md | 134 ---- docs/设计文档/模块设计/3.文档模块详细设计.md | 127 ---- docs/设计文档/模块设计/4.对话模块详细设计.md | 118 ---- docs/设计文档/模块设计/5.审计模块详细设计.md | 121 ---- .../模块设计/6.智能核心模块详细设计.md | 259 -------- docs/需求分析/0.需求重构总览与待确认事项.md | 210 ++++++ docs/需求分析/1.V1总需求文档.md | 617 +++--------------- docs/需求分析/1.config模块需求分析.md | 289 ++++++++ docs/需求分析/2.scenarios模块需求分析.md | 277 ++++++++ docs/需求分析/2.模块需求索引.md | 85 --- docs/需求分析/3.documents模块需求分析.md | 321 +++++++++ docs/需求分析/3.配置模块需求.md | 115 ---- docs/需求分析/4.chat模块需求分析.md | 282 ++++++++ docs/需求分析/4.场景模块需求.md | 143 ---- docs/需求分析/5.audit模块需求分析.md | 252 +++++++ docs/需求分析/5.文档模块需求.md | 132 ---- docs/需求分析/6.agent_core模块需求分析.md | 443 +++++++++++++ docs/需求分析/6.对话模块需求.md | 129 ---- docs/需求分析/7.审计模块需求.md | 143 ---- docs/需求分析/8.智能核心模块需求.md | 225 ------- 39 files changed, 2210 insertions(+), 3614 deletions(-) delete mode 100644 docs/superpowers/plans/2026-05-29-V1-Django基线实现计划.md create mode 100644 docs/原始材料/【模拟题二】试剂盒临床注册文件准备与审核Agent.docx create mode 100644 docs/原始材料/【模拟题二】试剂盒临床注册文件准备与审核Agent/【模拟题二】试剂盒临床注册文件准备与审核Agent.md create mode 100644 docs/原始材料/目标产品说明书.docx create mode 100644 docs/原始材料/第1章 监管信息/CH1.11.1 符合标准的清单.docx create mode 100644 docs/原始材料/第1章 监管信息/CH1.11.5 真实性声明.docx create mode 100644 docs/原始材料/第1章 监管信息/CH1.11.6 符合性声明.docx create mode 100644 docs/原始材料/第1章 监管信息/CH1.2 监管信息目录.docx create mode 100644 docs/原始材料/第1章 监管信息/CH1.4 申请表.docx create mode 100644 docs/原始材料/第1章 监管信息/CH1.5 产品列表.docx create mode 100644 docs/原始材料/第1章 监管信息/CH1.9 产品申报前沟通的说明.doc create mode 100644 docs/原始材料/附件 4 体外诊断试剂注册申报资料要求及说明.doc delete mode 100644 docs/设计文档/0.设计文档索引.md delete mode 100644 docs/设计文档/1.智能体总体设计.md delete mode 100644 docs/设计文档/2.功能流程设计.md delete mode 100644 docs/设计文档/3.数据库设计.md delete mode 100644 docs/设计文档/4.页面与路由设计.md delete mode 100644 docs/设计文档/5.部署设计.md delete mode 100644 docs/设计文档/模块设计/1.配置模块详细设计.md delete mode 100644 docs/设计文档/模块设计/2.场景模块详细设计.md delete mode 100644 docs/设计文档/模块设计/3.文档模块详细设计.md delete mode 100644 docs/设计文档/模块设计/4.对话模块详细设计.md delete mode 100644 docs/设计文档/模块设计/5.审计模块详细设计.md delete mode 100644 docs/设计文档/模块设计/6.智能核心模块详细设计.md create mode 100644 docs/需求分析/0.需求重构总览与待确认事项.md create mode 100644 docs/需求分析/1.config模块需求分析.md create mode 100644 docs/需求分析/2.scenarios模块需求分析.md delete mode 100644 docs/需求分析/2.模块需求索引.md create mode 100644 docs/需求分析/3.documents模块需求分析.md delete mode 100644 docs/需求分析/3.配置模块需求.md create mode 100644 docs/需求分析/4.chat模块需求分析.md delete mode 100644 docs/需求分析/4.场景模块需求.md create mode 100644 docs/需求分析/5.audit模块需求分析.md delete mode 100644 docs/需求分析/5.文档模块需求.md create mode 100644 docs/需求分析/6.agent_core模块需求分析.md delete mode 100644 docs/需求分析/6.对话模块需求.md delete mode 100644 docs/需求分析/7.审计模块需求.md delete mode 100644 docs/需求分析/8.智能核心模块需求.md diff --git a/docs/superpowers/plans/2026-05-29-V1-Django基线实现计划.md b/docs/superpowers/plans/2026-05-29-V1-Django基线实现计划.md deleted file mode 100644 index ad8e26d..0000000 --- a/docs/superpowers/plans/2026-05-29-V1-Django基线实现计划.md +++ /dev/null @@ -1,343 +0,0 @@ -# V1 Django Baseline Implementation Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Build the smallest runnable Django baseline that satisfies the current Chinese requirements and design documents. - -**Architecture:** Use a Django monolith with four apps (`scenarios`, `documents`, `chat`, `audit`) plus an independent `agent_core` package. The first implementation returns deterministic mock Agent results so the UI, audit, documents and module boundaries can be verified before real RAG/LLM integration. - -**Tech Stack:** Python 3.13, Django 5.x, PyYAML, pytest, pytest-django, SQLite, Docker Compose. - ---- - -## File Structure - -- Create `requirements.txt`: runtime and test dependencies. -- Create `manage.py`, `config/settings.py`, `config/urls.py`, `config/wsgi.py`, `config/asgi.py`: Django project shell. -- Create `apps/scenarios/`: YAML scenario loading, homepage, tests. -- Create `apps/documents/`: upload model, upload/list/index views, text extraction, tests. -- Create `apps/chat/`: message form, chat view, Agent Core call, audit write, tests. -- Create `apps/audit/`: audit model, service, list/detail views, tests. -- Create `agent_core/`: dataclasses, orchestrator, mock RAG ingest/retrieve, tool registry, structured output parser. -- Create `configs/*.yaml`: five required scenarios. -- Create `templates/`: minimal Django Templates for pages. -- Create `Dockerfile`, `docker-compose.yml`, `.env.example`: one-command startup. - -## Task 1: Dependencies and Django Project Shell - -**Files:** -- Create: `requirements.txt` -- Create: `manage.py` -- Create: `config/__init__.py` -- Create: `config/settings.py` -- Create: `config/urls.py` -- Create: `config/wsgi.py` -- Create: `config/asgi.py` -- Test: `pytest.ini` - -- [ ] **Step 1: Write failing configuration test** - -Create `tests/test_project_configuration.py`: - -```python -from django.conf import settings -from django.urls import reverse - - -def test_core_settings_expose_documented_paths(): - assert settings.SCENARIO_CONFIG_DIR.name == "configs" - assert settings.CHROMA_PATH.name == "chroma" - assert settings.MEDIA_ROOT.name == "uploads" - - -def test_home_url_is_registered(client): - response = client.get(reverse("scenarios:index")) - assert response.status_code == 200 -``` - -- [ ] **Step 2: Run test to verify it fails** - -Run: `pytest tests/test_project_configuration.py -q` -Expected: FAIL because Django project and apps do not exist. - -- [ ] **Step 3: Implement minimal project shell** - -Add dependencies and project files with settings for installed apps, templates, SQLite, media paths, and URL includes. - -- [ ] **Step 4: Run test to verify progress** - -Run: `pytest tests/test_project_configuration.py -q` -Expected: either PASS or fail only because `apps.scenarios` is not implemented yet. - -## Task 2: Scenarios Module and Five YAML Configs - -**Files:** -- Create: `apps/scenarios/services.py` -- Create: `apps/scenarios/views.py` -- Create: `apps/scenarios/urls.py` -- Create: `apps/scenarios/apps.py` -- Create: `configs/knowledge_qa.yaml` -- Create: `configs/document_review.yaml` -- Create: `configs/ticket_assistant.yaml` -- Create: `configs/quality_analysis.yaml` -- Create: `configs/risk_audit.yaml` -- Create: `templates/scenarios/index.html` -- Test: `tests/test_scenarios.py` - -- [ ] **Step 1: Write failing scenario tests** - -```python -from apps.scenarios.services import get_scenario, list_scenarios - - -def test_list_scenarios_loads_five_configs(): - scenarios = list_scenarios() - assert [scenario["id"] for scenario in scenarios] == [ - "knowledge_qa", - "document_review", - "ticket_assistant", - "quality_analysis", - "risk_audit", - ] - - -def test_get_scenario_returns_full_agent_config(): - scenario = get_scenario("quality_analysis") - assert scenario["agent"]["role"] - assert scenario["rag"]["enabled"] is True - assert scenario["output"]["type"] == "quality_report" -``` - -- [ ] **Step 2: Run test to verify it fails** - -Run: `pytest tests/test_scenarios.py -q` -Expected: FAIL because services/configs are missing. - -- [ ] **Step 3: Implement scenario loader and homepage** - -Use `yaml.safe_load()`, validate required fields, and render scenario cards on `/`. - -- [ ] **Step 4: Run tests** - -Run: `pytest tests/test_scenarios.py tests/test_project_configuration.py -q` -Expected: PASS. - -## Task 3: Agent Core Mock Orchestrator - -**Files:** -- Create: `agent_core/results.py` -- Create: `agent_core/orchestrator.py` -- Create: `agent_core/structured_output.py` -- Create: `agent_core/tool_registry.py` -- Create: `agent_core/tools/builtin_tools.py` -- Create: `agent_core/rag/ingest.py` -- Create: `agent_core/rag/retriever.py` -- Test: `tests/test_agent_core.py` - -- [ ] **Step 1: Write failing Agent Core tests** - -```python -from agent_core.orchestrator import run_agent - - -def test_run_agent_returns_structured_mock_result(): - scenario = { - "id": "knowledge_qa", - "name": "知识库问答助手", - "rag": {"enabled": True, "collection": "knowledge_qa", "top_k": 3}, - "tools": ["generate_action_items"], - "output": {"type": "general_answer"}, - } - result = run_agent(scenario, "如何处理异常?") - assert result.status == "success" - assert result.answer - assert result.structured_output["output_type"] == "general_answer" - assert result.tool_calls[0]["tool_name"] == "generate_action_items" -``` - -- [ ] **Step 2: Run test to verify it fails** - -Run: `pytest tests/test_agent_core.py -q` -Expected: FAIL because `agent_core` is missing. - -- [ ] **Step 3: Implement deterministic mock AgentResult** - -Return stable answer, references, tool calls, model name `mock-model`, and latency. - -- [ ] **Step 4: Run tests** - -Run: `pytest tests/test_agent_core.py -q` -Expected: PASS. - -## Task 4: Audit Module - -**Files:** -- Create: `apps/audit/models.py` -- Create: `apps/audit/services.py` -- Create: `apps/audit/views.py` -- Create: `apps/audit/urls.py` -- Create: `apps/audit/admin.py` -- Create: `templates/audit/log_list.html` -- Create: `templates/audit/log_detail.html` -- Test: `tests/test_audit.py` - -- [ ] **Step 1: Write failing audit tests** - -```python -from apps.audit.models import AgentAuditLog -from apps.audit.services import create_audit_log -from agent_core.results import AgentResult - - -def test_create_audit_log_records_success_result(db): - result = AgentResult(answer="回答", structured_output={"x": 1}, status="success") - log = create_audit_log("knowledge_qa", "知识库问答助手", "问题", result) - assert AgentAuditLog.objects.count() == 1 - assert log.final_answer == "回答" - assert log.structured_output == {"x": 1} -``` - -- [ ] **Step 2: Run test to verify it fails** - -Run: `pytest tests/test_audit.py -q` -Expected: FAIL because audit app is missing. - -- [ ] **Step 3: Implement model, service, admin, views** - -Use JSONField defaults and avoid storing sensitive environment values. - -- [ ] **Step 4: Run migrations and tests** - -Run: `python manage.py makemigrations audit && pytest tests/test_audit.py -q` -Expected: PASS. - -## Task 5: Documents Module - -**Files:** -- Create: `apps/documents/models.py` -- Create: `apps/documents/services.py` -- Create: `apps/documents/forms.py` -- Create: `apps/documents/views.py` -- Create: `apps/documents/urls.py` -- Create: `apps/documents/admin.py` -- Create: `templates/documents/document_list.html` -- Create: `templates/documents/upload.html` -- Test: `tests/test_documents.py` - -- [ ] **Step 1: Write failing document tests** - -```python -from django.core.files.uploadedfile import SimpleUploadedFile -from django.urls import reverse - -from apps.documents.models import UploadedDocument - - -def test_upload_txt_document_creates_uploaded_record(client, db): - file = SimpleUploadedFile("rules.txt", "hello".encode("utf-8"), content_type="text/plain") - response = client.post(reverse("documents:upload"), {"scenario_id": "knowledge_qa", "file": file}) - assert response.status_code == 302 - document = UploadedDocument.objects.get() - assert document.status == "uploaded" - assert document.file_type == "txt" -``` - -- [ ] **Step 2: Run test to verify it fails** - -Run: `pytest tests/test_documents.py -q` -Expected: FAIL because documents app is missing. - -- [ ] **Step 3: Implement upload/list/index flow** - -Support `.txt` and `.md`; index action calls `agent_core.rag.ingest.ingest_document()` and updates status. - -- [ ] **Step 4: Run migrations and tests** - -Run: `python manage.py makemigrations documents && pytest tests/test_documents.py -q` -Expected: PASS. - -## Task 6: Chat Module - -**Files:** -- Create: `apps/chat/forms.py` -- Create: `apps/chat/views.py` -- Create: `apps/chat/urls.py` -- Create: `apps/chat/apps.py` -- Create: `templates/chat/index.html` -- Test: `tests/test_chat.py` - -- [ ] **Step 1: Write failing chat tests** - -```python -from django.urls import reverse - -from apps.audit.models import AgentAuditLog - - -def test_chat_post_returns_agent_result_and_audit_log(client, db): - response = client.post(reverse("chat:index", args=["knowledge_qa"]), {"message": "如何处理异常?"}) - assert response.status_code == 200 - assert "mock-model" in response.content.decode("utf-8") - assert AgentAuditLog.objects.count() == 1 -``` - -- [ ] **Step 2: Run test to verify it fails** - -Run: `pytest tests/test_chat.py -q` -Expected: FAIL because chat app is missing. - -- [ ] **Step 3: Implement chat form and view** - -Validate message, call `get_scenario()`, `run_agent()`, then `create_audit_log()`. - -- [ ] **Step 4: Run tests** - -Run: `pytest tests/test_chat.py tests/test_audit.py tests/test_agent_core.py -q` -Expected: PASS. - -## Task 7: Docker and Documentation Alignment - -**Files:** -- Create: `.env.example` -- Create: `Dockerfile` -- Create: `docker-compose.yml` -- Modify: `README.md` -- Test: all tests and Django checks. - -- [ ] **Step 1: Add deployment files** - -Use a single web service, install `requirements.txt`, run migrations, and serve `0.0.0.0:8000`. - -- [ ] **Step 2: Verify Django and tests** - -Run: - -```bash -python manage.py check -pytest -q -``` - -Expected: all checks pass. - -- [ ] **Step 3: Verify docs path references** - -Run: - -```powershell -$patterns = @('docs/需求分析', 'docs/设计文档', 'V1总需求文档', '智能体总体设计') -Get-ChildItem -Recurse -File | - Where-Object { - $_.FullName -notlike '*\.git\*' -and - $_.FullName -notlike '*\.idea\*' -and - $_.FullName -notlike '*docs\superpowers\plans\2026-05-29-v1-django-baseline.md' - } | - Select-String -Pattern $patterns -``` - -Expected: no matches. - -## Self-Review - -- Spec coverage: The plan covers Chinese docs, five scenario configs, Django startup, homepage, chat, audit, documents, Agent Core, and Docker baseline. -- Placeholder scan: No implementation step relies on an undefined placeholder; mock LLM/RAG is intentionally scoped as the first runnable baseline. -- Type consistency: Tests use `AgentResult`, `run_agent`, `list_scenarios`, `get_scenario`, `UploadedDocument`, and `AgentAuditLog` consistently. diff --git a/docs/原始材料/【模拟题二】试剂盒临床注册文件准备与审核Agent.docx b/docs/原始材料/【模拟题二】试剂盒临床注册文件准备与审核Agent.docx new file mode 100644 index 0000000000000000000000000000000000000000..6c81cb5e027a8afdaa115cb58a649a3af282a3e8 GIT binary patch literal 18601 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 OeE`2CG*;-3yZ;aR{W-w^ literal 0 HcmV?d00001 diff --git a/docs/原始材料/【模拟题二】试剂盒临床注册文件准备与审核Agent/【模拟题二】试剂盒临床注册文件准备与审核Agent.md b/docs/原始材料/【模拟题二】试剂盒临床注册文件准备与审核Agent/【模拟题二】试剂盒临床注册文件准备与审核Agent.md new file mode 100644 index 0000000..9f997af --- /dev/null +++ b/docs/原始材料/【模拟题二】试剂盒临床注册文件准备与审核Agent/【模拟题二】试剂盒临床注册文件准备与审核Agent.md @@ -0,0 +1,62 @@ +**试剂盒临床注册文件准备与审核智能体搭建** + +**一、背景** + +卡尤迪生物研发团队在推进NMPA(国家药品监督管理局)注册申报时,需准备大量合规性文件,包括产品技术要求、说明书、检测报告、临床评估资料等。 + +公司计划组建AI Agent新团队,目标为"试剂盒NMPA注册文件准备与审核智能体",实现文件目录自动汇总、法规完整性检查、关键信息自动提取与填写、缺失文件预警、文档一致性核查,提升注册效率并降低合规风险。 + +**二、任务目标** + +请你作为 AI Agent 工程师候选人,设计并实现(或详细描述)一个智能体,能够: + +1. 自动汇总注册申报文件夹中的所有文件及页数 +2. 对照 NMPA 法规要求核查文件完整性并预警缺失 +3. 提取产品关键信息并自动填写至申报文件 +4. 核查文档结构与信息一致性 +5. 输出合规风险预警与处理建议 + +**三、具体要求如下** + +**1. 自动汇总文件夹文件目录与页数。** + +文件目录参考附件。 + +**2. 按照NMPA现行法规要求核查文件完整性。** + +- 对照NMPA法规检查所需文件是否齐全(如注册申报资料基本要求、产品技术要求、注册检验报告等) +- 自动识别缺失文件并通知责任人 +- 参考法规来源网站: + + + + + +**3. 从产品文件中提取关键信息并自动填写至目标文件。** + +- 自动提取:产品名称、检测靶标、适用范围、储存条件、性能指标等核心信息 +- 将提取信息自动填入注册申报表格或对照清单 + +**4. 核查文档结构、信息一致性与章节规范性。** + +- 检测章节是否完整(如分析灵敏度、特异性、重复性等必检项目) +- 不同文档间同一信息是否一致(如产品名称、规格型号等) +- 格式是否符合NMPA要求的规范章节结构 + +**5. 提供合规风险预警与处理建议。** + +例如:"文件X:缺少临床评估报告,请补充"或"产品Y:说明书与检测报告中的适用范围描述不一致,请核对" + +**附加要求【在复试时陈述,需结合 Demo 演示】** + +**1. 架构搭建思路(基于 Demo 版)** + +- 展示Demo运行结果(文件目录汇总表、法规完整性报告、信息提取对照表、异常预警列表) +- 结合你实现的Demo,说明智能体的整体工作流(如:文件扫描 → 目录汇总 → 法规匹配 → 信息提取 → 一致性核查 → 风险预警) +- 展示Demo中实际调用的关键工具/库(如 pdfplumber / PyMuPDF、正则表达式、规则引擎、向量检索等),并分析选用理由 +- 简述Demo中如何体现文件完整性检测、信息一致性核查、法规条款匹配等难点规则的处理 + +**2. 基于 Demo 版的迭代规划** + +- 说明当前Demo实现了哪些核心功能,哪些是模拟数据/简化逻辑 +- 下一版本最想增加的一个功能以及需要投入的技术资源(如 NMPA 官网 API 对接、文件版本管理、多语言支持等),并说明为什么优先做它 diff --git a/docs/原始材料/目标产品说明书.docx b/docs/原始材料/目标产品说明书.docx new file mode 100644 index 0000000000000000000000000000000000000000..56ab2b1832a1cabf72f01cd61527a731e8589707 GIT binary patch literal 51977 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

a^y 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 literal 0 HcmV?d00001 diff --git a/docs/原始材料/第1章 监管信息/CH1.11.1 符合标准的清单.docx b/docs/原始材料/第1章 监管信息/CH1.11.1 符合标准的清单.docx new file mode 100644 index 0000000000000000000000000000000000000000..a48c40bf3a9ee63e4cd0382e30fc44b2504d678c GIT binary patch literal 16779 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