124 lines
4.8 KiB
Markdown
124 lines
4.8 KiB
Markdown
# DEMO-AGENT V2
|
||
|
||
DEMO-AGENT V2 是一个面向体外诊断试剂注册资料准备与审核的 Django 工作台。系统把资料上传、文件目录汇总、法规核查、知识库检索、风险提示、整改复核、申报表自动填充和第 1 章监管信息材料包生成组织到同一个可追溯的审核流程中。
|
||
|
||
当前 `master` 已与 `V2` 内容对齐,是项目主线。
|
||
|
||
## 核心能力
|
||
|
||
| 能力 | 说明 |
|
||
| --- | --- |
|
||
| 审核工作台 | 登录后进入首页,查看对话、附件、知识库、批次和处理状态 |
|
||
| 对话式工作流 | 在 `/chat/` 中围绕当前对话上传资料、触发汇总、法规核查和生成任务 |
|
||
| 文件汇总 | 读取 PDF、Word、Excel、PowerPoint、压缩包等资料,生成目录、页数、类型和导出结果 |
|
||
| NMPA 法规核查 | 基于规则、文本抽取、RAG 检索和 LLM 复核生成问题、风险和整改建议 |
|
||
| 知识库管理 | 上传管理资料、重建索引、检索引用片段,并过滤已停用或删除文档 |
|
||
| 申报表填充 | 从说明书和资料中抽取关键字段,生成预填申报表和追溯结果 |
|
||
| 第 1 章监管信息材料包 | 生成 CH1.2、CH1.4、CH1.5、CH1.11 等监管信息文件和 zip 产物 |
|
||
| 飞书通知与问答 | 支持企业自建应用消息通知,并预留飞书问答模拟命令 |
|
||
|
||
## 页面入口
|
||
|
||
| 页面 | 路径 |
|
||
| --- | --- |
|
||
| 登录页 | `http://127.0.0.1:8000/login/` |
|
||
| 首页 | `http://127.0.0.1:8000/` |
|
||
| 审核智能体 | `http://127.0.0.1:8000/chat/` |
|
||
| 知识库管理 | `http://127.0.0.1:8000/knowledge-base/` |
|
||
| 附件管理 | `http://127.0.0.1:8000/attachments/` |
|
||
| 管理后台 | `http://127.0.0.1:8000/admin/` |
|
||
|
||
## 项目结构
|
||
|
||
```text
|
||
config/ Django 配置和总路由
|
||
review_agent/ 核心业务应用
|
||
application_form_fill/ 申报表自动填充
|
||
file_summary/ 文件汇总、附件和导出
|
||
regulatory_review/ 法规核查与整改复核
|
||
regulatory_info_package/ 第 1 章监管信息材料包生成
|
||
notifications/ 飞书通知和消息适配
|
||
feishu_questions/ 飞书问答预留能力
|
||
static/ 前端脚本和样式
|
||
templates/ Django 模板
|
||
docs/ 需求、设计、开发计划和原始材料
|
||
tests/ pytest 测试
|
||
```
|
||
|
||
## 本地运行
|
||
|
||
```bash
|
||
python -m venv .venv
|
||
.venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
python manage.py migrate
|
||
python manage.py createsuperuser
|
||
python manage.py runserver
|
||
```
|
||
|
||
项目会自动读取仓库根目录 `.env`。当前仓库保留了 V2 的 `.env` 文件;后续如果要面向外部协作,请先确认其中没有不应公开的密钥。
|
||
|
||
## 常用环境变量
|
||
|
||
| 变量名 | 用途 |
|
||
| --- | --- |
|
||
| `DJANGO_SECRET_KEY` | Django secret key |
|
||
| `DJANGO_DEBUG` | 是否开启调试模式 |
|
||
| `DJANGO_ALLOWED_HOSTS` | 允许访问的主机列表 |
|
||
| `LLM_PROVIDER` | LLM provider 选择 |
|
||
| `LLM_API_KEY` | LLM API key |
|
||
| `LLM_BASE_URL` | OpenAI 兼容 LLM API 地址 |
|
||
| `LLM_MODEL` | 默认对话/抽取模型 |
|
||
| `SILICONFLOW_API_KEY` | SiliconFlow API key,默认可复用 `LLM_API_KEY` |
|
||
| `SILICONFLOW_EMBEDDING_MODEL` | 法规 RAG 使用的 embedding 模型 |
|
||
| `SILICONFLOW_EMBEDDING_DIMENSIONS` | embedding 维度 |
|
||
| `REGULATORY_RAG_CHROMA_PATH` | 法规 RAG Chroma 存储路径 |
|
||
| `REGULATORY_RAG_COLLECTION` | 法规 RAG collection 名称 |
|
||
| `FEISHU_NOTIFY_ENABLED` | 是否启用真实飞书通知 |
|
||
| `FEISHU_APP_ID` | 飞书应用 App ID |
|
||
| `FEISHU_APP_SECRET` | 飞书应用 App Secret |
|
||
| `FEISHU_DEFAULT_USER_OPEN_ID` | 默认飞书接收人 open_id |
|
||
| `PUBLIC_BASE_URL` | 飞书消息中的系统入口根地址 |
|
||
|
||
## 外部依赖
|
||
|
||
Python 依赖见 `requirements.txt`,主要包括:
|
||
|
||
- Django
|
||
- PyYAML
|
||
- httpx
|
||
- chromadb
|
||
- pypdf
|
||
- python-docx
|
||
- python-pptx
|
||
- openpyxl / xlrd
|
||
- py7zr
|
||
- playwright
|
||
|
||
文件汇总支持 `.7z` 和 `.rar` 时,运行环境还需要可用的 `7z`/`p7zip` 命令。LibreOffice 不是必需依赖,仅作为后续增强老格式文档处理能力的可选项。
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
python manage.py check
|
||
pytest
|
||
pytest tests -k regulatory_info_package
|
||
pytest tests/test_feishu_*.py
|
||
python manage.py send_test_feishu_notification --username owner
|
||
python manage.py feishu_question_simulate --username owner "查最新法规核查"
|
||
```
|
||
|
||
已知情况:当前全量 `pytest` 中仍有少量历史测试与当前页面/LLM 调用策略不完全一致;监管信息材料包主链路测试已通过。
|
||
|
||
## 文档入口
|
||
|
||
- [产品说明](PRODUCT.md)
|
||
- [Agent 协作约定](AGENTS.md)
|
||
- [docs 文档索引](docs/README.md)
|
||
- [需求分析](docs/1.需求分析)
|
||
- [功能设计](docs/2.功能设计)
|
||
- [数据库设计](docs/3.数据库设计)
|
||
- [详细设计](docs/4.详细设计)
|
||
- [开发计划](docs/5.开发计划)
|
||
|