feat(pkb): Complete PKB module frontend migration with V3 design
Summary: - Implement PKB Dashboard and Workspace pages based on V3 prototype - Add single-layer header with integrated Tab navigation - Implement 3 work modes: Full Text, Deep Read, Batch Processing - Integrate Ant Design X Chat component for AI conversations - Create BatchModeComplete with template selection and document processing - Add compact work mode selector with dropdown design Backend: - Migrate PKB controllers and services to /modules/pkb structure - Register v2 API routes at /api/v2/pkb/knowledge - Maintain dual API routes for backward compatibility Technical details: - Use Zustand for state management - Handle SSE streaming responses for AI chat - Support document selection for Deep Read mode - Implement batch processing with progress tracking Known issues: - Batch processing API integration pending - Knowledge assets page navigation needs optimization Status: Frontend functional, pending refinement
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
# **AI 临床医生与医院知识库 \- MVP 阶段产品需求文档 (PRD) V5.0**
|
||||
|
||||
|
|
||||
|
||||
| 版本号 | 日期 | 修改人 | 修改内容 |
|
||||
| V4.0 | 2024-06-XX | Product Lead | 降维策略 MVP |
|
||||
| V5.0 | 2024-06-XX | Product Lead | 完整落地版:基于“全量阅读”策略,补全 UI/UX 规范与详细功能定义 |
|
||||
|
||||
## **1\. 核心战略与范围 (Strategy & Scope)**
|
||||
|
||||
### **1.1 核心价值主张**
|
||||
|
||||
放弃传统的“切片式 RAG”,利用 DeepSeek-V3 / Qwen-Max 的长窗口能力,通过 **Document-Level RAG (文档级阅读)** 技术,为医生提供**逻辑完整、引用精准**的知识库问答体验。
|
||||
|
||||
### **1.2 MVP 阶段边界 (Scope Freeze)**
|
||||
|
||||
* **适用终端:** Web 端 (PC/Mac 浏览器),兼容 iPad。
|
||||
* **支持格式:** PDF, Word (.docx), PPT (.pptx)。
|
||||
* **硬性限制:** 单库文件数 ≤ 30 个;单文件大小 ≤ 20MB。
|
||||
* **核心场景:** 循证检索 (指南)、深度研读 (文献)、用药助手 (药品)、考典刷题 (考试)。
|
||||
|
||||
## **2\. 功能模块详情 (Detailed Requirements)**
|
||||
|
||||
### **2.1 模块一:仪表盘 (Dashboard)**
|
||||
|
||||
**用户故事:** 作为医生,我希望一眼看到我有多少个知识库,并能快速创建一个新的专科知识库。
|
||||
|
||||
#### **2.1.1 页面布局与 UI 规范**
|
||||
|
||||
* **布局结构:**
|
||||
* **顶部:** 全局导航栏 (Logo \+$$智能统计$$$$智能清洗$$$$\*\*AI 知识库\*\*$$$$AI 问答$$
|
||||
\+ 头像)。
|
||||
* **主体:** "1+3" 卡片阵列布局 (Grid System)。
|
||||
* **卡片设计:**
|
||||
* **Slot 1 (新建入口):**
|
||||
* **样式:** 浅蓝色渐变背景 (bg-blue-50),深蓝色虚线边框。
|
||||
* **内容:** 大号 "+" 图标,文案 "创建知识库",下方并列展示 5 个场景图标 (指南/文献/病例/药品/考试) 以提示能力。
|
||||
* **Slot 2-N (现有知识库):**
|
||||
* **样式:** 白色卡片,微阴影 (shadow-sm \-\> hover shadow-md)。
|
||||
* **内容:** 图标(左上) \+ 标题(加粗) \+ 类型标签(胶囊样式) \+ "进入工作台"按钮(底部通栏)。
|
||||
|
||||
#### **2.1.2 交互流程:创建知识库**
|
||||
|
||||
* **触发:** 点击“创建知识库”卡片 \-\> 弹出模态框 (Modal)。
|
||||
* **Step 1: 类型选择 (Type Selection)**
|
||||
* **UI:** 5 个大卡片网格。
|
||||
* **选项:**
|
||||
1. **循证检索 (指南):** 图标 BookOpen (Blue)。文案:"查诊疗标准、用药剂量"。
|
||||
2. **深度研读 (文献):** 图标 Microscope (Purple)。文案:"文献综述、横向对比"。
|
||||
3. **临床决策 (病例):** 图标 Stethoscope (Green)。文案:"疑难病例参考"。
|
||||
4. **用药助手 (药品):** 图标 Pill (Rose)。文案:"查配伍禁忌"。
|
||||
5. **考典刷题 (考试):** 图标 GraduationCap (Orange)。文案:"主治/副高备考"。
|
||||
* **Step 2: 基础信息 & 角色注入**
|
||||
* **字段:** 知识库名称 (必填)、所属科室 (下拉选:心内/呼吸/消化...)。
|
||||
* **逻辑:** 选中“心内科”后,后端自动在 System Prompt 中注入 *"你是一名心内科专家..."*。
|
||||
* **Step 3: 文件上传 (Upload)**
|
||||
* **UI:** 大面积拖拽上传区 (Dropzone)。
|
||||
* **逻辑:**
|
||||
* 前端校验大小 (\>20MB 飘红报错)。
|
||||
* 前端校验数量 (\>30 个 飘红报错)。
|
||||
* 上传成功后显示列表,状态流转:上传中... \-\> 就绪。
|
||||
|
||||
### **2.2 模块二:沉浸式工作台 (Workspace)**
|
||||
|
||||
**用户故事:** 作为医生,我希望在一个无干扰的环境中与我的资料对话,并能随时核对原文。
|
||||
|
||||
#### **2.2.1 全局框架 (Immersive Layout)**
|
||||
|
||||
* **顶部导航 (Header):**
|
||||
* **样式:** 深色背景 (bg-slate-900),高度 56px。
|
||||
* **左侧:** \< 返回 (白色文字按钮,点击返回 Dashboard)。
|
||||
* **中间:** 知识库名称 \+ 图标。
|
||||
* **右侧:** 简单的设置齿轮。
|
||||
* **模式切换 (Tabs):**
|
||||
* 位于 Header 下方,白色背景,高度 48px。
|
||||
* **Tab A:** \[💬 智能问答\] (默认选中,底部蓝条)。
|
||||
* **Tab B:** \[📂 知识资产\] (显示文件计数 Badge)。
|
||||
|
||||
#### **2.2.2 视图 A:智能问答 (Smart Chat)**
|
||||
|
||||
* **布局:**
|
||||
* **默认:** 单栏宽屏聊天窗口 (最大宽度 900px,居中)。
|
||||
* **扩展:** 当点击引用或手动展开时,右侧滑出 PDF 阅读器 (占比 45%),聊天窗自动收缩至左侧。
|
||||
* **对话交互 (Chat Interaction):**
|
||||
* **输入框:** 底部固定。支持 Shift+Enter 换行。
|
||||
* **AI 回答:** 流式输出 (Typewriter Effect)。
|
||||
* **引用标注:** 必须以 \[文档名\] 或 \[1\] 形式高亮显示,颜色为品牌蓝。
|
||||
* **后端策略路由 (核心逻辑):**
|
||||
* **场景一 (小库直读):** 知识库总 Token \< 32k。
|
||||
* *UI:* 顶部 Toast 提示 "已加载全量上下文,AI 具备全知视角"。
|
||||
* **场景二 (大库路由):** 知识库总 Token \> 32k。
|
||||
* *UI:* 用户提问后,输入框上方出现微型 Loading 状态 —— "正在分析摘要..." \-\> "已定位至《2024指南》等 3 篇文档" \-\> 开始回答。
|
||||
|
||||
#### **2.2.3 视图 B:知识资产 (Assets Management)**
|
||||
|
||||
* **UI 形式:** 全屏数据表格 (Table)。
|
||||
* **列定义:**
|
||||
1. **文件名:** 图标 (PDF/Word) \+ 名称。
|
||||
2. **AI 摘要:** 展示 2-3 行核心摘要文本 (由 DeepSeek 生成),支持 hover 查看全部。
|
||||
3. **状态:** 准备中 (灰色) / 就绪 (绿色) / 失败 (红色)。
|
||||
4. **操作:** 预览、删除。
|
||||
* **筛选器:** 右上角“筛选”按钮,点击弹出下拉面板 (按时间/状态/类型)。
|
||||
|
||||
## **3\. 详细 UI/UX 设计规范 (Design Specs)**
|
||||
|
||||
为确保还原度,请 UI 设计师和前端开发遵循以下规范:
|
||||
|
||||
### **3.1 色彩体系 (Color Palette)**
|
||||
|
||||
使用 Tailwind CSS 默认色板:
|
||||
|
||||
* **主色 (Primary):** Blue-600 (\#2563EB) \- 用于按钮、链接、高亮。
|
||||
* **场景色 (Category Colors):**
|
||||
* 指南: Blue-500
|
||||
* 文献: Purple-600
|
||||
* 病例: Emerald-600
|
||||
* 药品: Rose-600
|
||||
* 考试: Orange-500
|
||||
* **中性色:** Slate-50 (背景), Slate-900 (Header), Slate-500 (次要文字)。
|
||||
|
||||
### **3.2 图标系统 (Iconography)**
|
||||
|
||||
* **风格:** 线性图标 (Stroke 2px)。
|
||||
* **技术:** 使用 **Inline SVG** (参考 TDD V3.0 的 Icons 常量),严禁引入外部 Icon Font。
|
||||
|
||||
### **3.3 字体与排版**
|
||||
|
||||
* **字体:** 系统默认无衬线字体 (Inter, Roboto, PingFang SC)。
|
||||
* **字号:**
|
||||
* H1 (页面标题): 20px Bold
|
||||
* H2 (模块标题): 16px Bold
|
||||
* Body (正文): 14px Regular (行高 1.6)
|
||||
* Caption (说明): 12px Text-Slate-400
|
||||
|
||||
## **4\. 异常流程与边界处理 (Exception Handling)**
|
||||
|
||||
### **4.1 上传失败**
|
||||
|
||||
* **场景:** 用户上传了加密 PDF 或损坏文件。
|
||||
* **后端:** 解析器捕获异常,返回 status: FAILED,error\_msg: "File encrypted"。
|
||||
* **前端:** 资产列表中该行变红,显示“解析失败:文件已加密”,并提供“删除”按钮。
|
||||
|
||||
### **4.2 AI 回答超时/失败**
|
||||
|
||||
* **场景:** DeepSeek API 响应超时 (\>60s)。
|
||||
* **UI:**
|
||||
* 消息气泡显示红色感叹号。
|
||||
* 提示文案: "AI 思考超时,请尝试精简问题或重试。"
|
||||
* 提供$$重试$$
|
||||
按钮。
|
||||
|
||||
### **4.3 引用源定位失败**
|
||||
|
||||
* **场景:** 用户点击 \[1\],但该文件已被删除。
|
||||
* **UI:** 弹出 Toast 提示 "源文件已被删除,无法查看原文"。
|
||||
|
||||
## **5\. 验收测试标准 (QA Acceptance)**
|
||||
|
||||
| ID | 测试点 | 预期结果 | 优先级 |
|
||||
| TC01 | 格式兼容性 | 上传 .pdf, .docx, .pptx 文件,均能在资产列表显示“就绪”,且能被检索到。 | P0 |
|
||||
| TC02 | 边界限制 | 尝试上传第 31 个文件,前端应阻止上传并弹窗提示限制。 | P0 |
|
||||
| TC03 | 引用跳转 | 提问后,点击回答中的 \[文档名\],右侧面板应滑出并正确加载该文档。 | P0 |
|
||||
| TC04 | Word表格解析 | 上传包含表格的 Word 指南,询问表格内数据,AI 应能准确回答数值。 | P1 |
|
||||
| TC05 | 路由逻辑 | 在 \>32k Token 的库中提问,观察 Network 请求,应看到系统先请求了摘要接口,再请求了全文接口。 | P1 |
|
||||
Reference in New Issue
Block a user