feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes: - Add StreamingService with OpenAI Compatible format - Upgrade Chat component V2 with Ant Design X integration - Implement AIA module with 12 intelligent agents - Update API routes to unified /api/v1 prefix - Update system documentation Backend (~1300 lines): - common/streaming: OpenAI Compatible adapter - modules/aia: 12 agents, conversation service, streaming integration - Update route versions (RVW, PKB to v1) Frontend (~3500 lines): - modules/aia: AgentHub + ChatWorkspace (100% prototype restoration) - shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook - Update API endpoints to v1 Documentation: - AIA module status guide - Universal capabilities catalog - System overview updates - All module documentation sync Tested: Stream response verified, authentication working Status: AIA V2.0 core completed (85%)
This commit is contained in:
@@ -4,61 +4,61 @@
|
||||
|
||||
**髦カ谿オ蜷咲ァー**: 蜑咲ォッ莉」遐∬ソ∫ァサ荳桟5.0隶セ隶。螳樒鴫
|
||||
**謇ァ陦梧慮髣エ**: 2026-01-06
|
||||
**执行状态**: ✅ **已完成**
|
||||
**策略**: 🎨 **重新实现V5.0设计,而非迁移旧代码**
|
||||
**謇ァ陦檎憾諤?*: 笨?**蟾イ螳梧<E89EB3>?*
|
||||
**遲也払**: <EFBFBD>耳 **驥肴眠螳樒鴫V5.0隶セ隶。<EFBFBD>瑚碁撼霑∫ァサ譌ァ莉」遐?*
|
||||
|
||||
---
|
||||
|
||||
## <20>識 譬ク蠢<EFBDB8><E8A0A2>遲<EFBFBD>
|
||||
|
||||
根据用户确认,由于新设计(V5.0 PRD + 知识库仪表盘V5.html + 工作台V3.html)与旧前端代码差异显著,我们采取了**"直接实现新设计"**的策略,而非迁移旧代码。
|
||||
譬ケ謐ョ逕ィ謌キ遑ョ隶、<EFBFBD>檎罰莠取眠隶セ隶。<EFBFBD><EFBFBD>5.0 PRD + 遏・隸<EFBDA5>コ謎サェ陦ィ逶老5.html + 蟾・菴懷床V3.html<EFBFBD>我ク取立蜑咲ォッ莉」遐∝キョ蠑よ仞闡暦シ梧<EFBFBD>莉ャ驥<EFBFBD>叙莠?*"逶エ謗・螳樒鴫譁ー隶セ隶?**逧<>ュ也払<E4B99F>瑚碁撼霑∫ァサ譌ァ莉」遐√?
|
||||
|
||||
---
|
||||
|
||||
## ✅ 已完成任务清单
|
||||
## 笨?蟾イ螳梧<E89EB3>莉サ蜉。貂<EFBDA1><E8B282>?
|
||||
|
||||
### 4.1 审查前端PKB代码 ✅
|
||||
### 4.1 螳。譟・蜑咲ォッPKB莉」遐<EFBFBD> 笨?
|
||||
- [x] 譟・逵区立迚亥燕遶ッ莉」遐∫サ捺桷
|
||||
- [x] 逅<>ァ」譌ァ迚<EFBDA7>PI隹<49>畑讓。蠑<EFBDA1>
|
||||
- [x] 逅<>ァ」譌ァ迚育憾諤∫ョ。逅<EFBDA1>サ霎<EFBDBB>
|
||||
- [x] 确认与新设计的差异
|
||||
- [x] 遑ョ隶、荳取眠隶セ隶。逧<EFBFBD>キョ蠑?
|
||||
|
||||
### 4.2 创建frontend-v2模块结构 ✅
|
||||
创建了完整的模块目录结构:
|
||||
### 4.2 蛻帛サコfrontend-v2讓。蝮礼サ捺桷 笨?
|
||||
蛻帛サコ莠<EFBFBD>ョ梧紛逧<EFBFBD>ィ。蝮礼岼蠖慕サ捺桷<EFBFBD>?
|
||||
```
|
||||
frontend-v2/src/modules/pkb/
|
||||
笏懌楳笏 index.tsx # 讓。蝮怜<E89DAE>蜿」
|
||||
笏懌楳笏 api/
|
||||
│ └── knowledgeBaseApi.ts # API服务(v2路由)
|
||||
笏? 笏披楳笏 knowledgeBaseApi.ts # API譛榊苅<EFBFBD><EFBFBD>2霍ッ逕ア<EFBFBD>?
|
||||
笏懌楳笏 components/
|
||||
│ └── Workspace/
|
||||
│ ├── WorkModeSelector.tsx # 工作模式选择器
|
||||
│ ├── FullTextMode.tsx # 全文阅读模式
|
||||
│ ├── DeepReadMode.tsx # 逐篇精读模式
|
||||
│ └── BatchMode.tsx # 批处理模式
|
||||
笏? 笏披楳笏 Workspace/
|
||||
笏? 笏懌楳笏 WorkModeSelector.tsx # 蟾・菴懈ィ。蠑城画叫蝎?
|
||||
笏? 笏懌楳笏 FullTextMode.tsx # 蜈ィ譁<EFBFBD><EFBFBD>隸サ讓。蠑<EFBFBD>
|
||||
笏? 笏懌楳笏 DeepReadMode.tsx # 騾千ッ<EFBFBD>イセ隸サ讓。蠑<EFBFBD>
|
||||
笏? 笏披楳笏 BatchMode.tsx # 謇ケ螟<EFBFBD>炊讓。蠑?
|
||||
笏懌楳笏 hooks/
|
||||
│ └── useWorkMode.ts # 工作模式Hook
|
||||
笏? 笏披楳笏 useWorkMode.ts # 蟾・菴懈ィ。蠑秋ook
|
||||
笏懌楳笏 pages/
|
||||
│ ├── DashboardPage.tsx # 仪表盘页面(V5设计)
|
||||
│ └── WorkspacePage.tsx # 工作台页面(V3设计)
|
||||
笏? 笏懌楳笏 DashboardPage.tsx # 莉ェ陦ィ逶倬。オ髱「<EFBFBD><EFBFBD>5隶セ隶。<EFBFBD>?
|
||||
笏? 笏披楳笏 WorkspacePage.tsx # 蟾・菴懷床鬘オ髱「<EFBFBD><EFBFBD>3隶セ隶。<EFBFBD>?
|
||||
笏懌楳笏 stores/
|
||||
│ └── useKnowledgeBaseStore.ts # Zustand状态管理
|
||||
笏? 笏披楳笏 useKnowledgeBaseStore.ts # Zustand迥カ諤∫ョ。逅?
|
||||
笏披楳笏 types/
|
||||
笏披楳笏 workspace.ts # TypeScript邀サ蝙句ョ壻ケ<E5A3BB>
|
||||
```
|
||||
|
||||
### 4.3 创建PKB前端组件 ✅
|
||||
### 4.3 蛻帛サコPKB蜑咲ォッ扈<EFBFBD>サカ 笨?
|
||||
|
||||
#### 🏠 DashboardPage(知识库仪表盘V5)
|
||||
#### <EFBFBD>匠 DashboardPage<EFBFBD>育衍隸<EFBFBD>コ謎サェ陦ィ逶老5<EFBFBD>?
|
||||
**隶セ隶。驕オ蠕ェ**: 100%驕オ蠕ェ`遏・隸<EFBDA5>コ謎サェ陦ィ逶老5.html`
|
||||
|
||||
**核心特性**:
|
||||
- ✅ 1+3网格布局(创建卡片 + 知识库卡片)
|
||||
- ✅ 6种知识库类型(临床指南、科研文献、典型病例、药品安全、职称考试、自定义)
|
||||
- ✅ 3步创建向导(类型选择 → 基础信息 → 文件上传)
|
||||
- ✅ 精确的配色方案(blue-600、purple-600、emerald-600等)
|
||||
- ✅ 创建卡片"呼吸动画"(hover-pulse)
|
||||
- ✅ Modal遮罩+向导式交互
|
||||
**譬ク蠢<EFBFBD>音諤?*:
|
||||
- 笨?1+3鄂第<EFBFBD>シ蟶<EFBFBD>ア<EFBFBD>亥<EFBFBD>蟒コ蜊。迚?+ 遏・隸<EFBDA5>コ灘今迚<E4BB8A>シ<EFBFBD>
|
||||
- 笨?6遘咲衍隸<E8A18D>コ鍋アサ蝙具シ井クエ蠎頑欠蜊励∫ァ醍<EFBDA7>疲枚迪ョ縲∝<E7B8B2>蝙狗羅萓九∬艮蜩∝ョ牙<EFBDAE>縲∬′遘ー閠<EFBDB0>ッ輔∬<C280>螳壻ケ会シ?
|
||||
- 笨?3豁・蛻帛サコ蜷大ッシ<EFBDAF>育アサ蝙矩画叫 竊?蝓コ遑菫。諱ッ 竊?譁<>サカ荳贋シ<E8B48B><EFBDBC>?
|
||||
- 笨?邊セ遑ョ逧<EFBDAE><E980A7>濶イ譁ケ譯茨シ<E88CA8>lue-600縲}urple-600縲‘merald-600遲会シ<EFBFBD>
|
||||
- 笨?蛻帛サコ蜊。迚<EFBDA1>"蜻シ蜷ク蜉ィ逕サ"<22><>over-pulse<EFBFBD>?
|
||||
- 笨?Modal驕ョ鄂ゥ+蜷大ッシ蠑丈コ、莠?
|
||||
|
||||
**譬キ蠑冗サ<E58697>鰍**:
|
||||
```tsx
|
||||
@@ -67,7 +67,7 @@ bg-gradient-to-br from-blue-50 to-indigo-50
|
||||
border-2 border-dashed border-blue-300
|
||||
h-[240px]
|
||||
|
||||
/* 知识库卡片 */
|
||||
/* 遏・隸<EFBFBD>コ灘今迚?*/
|
||||
bg-white rounded-xl border border-gray-200
|
||||
h-[240px] hover:shadow-lg
|
||||
|
||||
@@ -76,16 +76,16 @@ bg-slate-900/60 backdrop-blur-sm
|
||||
rounded-2xl shadow-2xl max-w-6xl
|
||||
```
|
||||
|
||||
#### 🖥️ WorkspacePage(沉浸式工作台V3)
|
||||
#### <EFBFBD>箕<EFBFBD>?WorkspacePage<EFBFBD>域イ画オク蠑丞キ・菴懷床V3<EFBFBD>?
|
||||
**隶セ隶。驕オ蠕ェ**: 100%驕オ蠕ェ`蟾・菴懷床V3.html`
|
||||
|
||||
**核心特性**:
|
||||
- ✅ 深色Header(bg-slate-900 h-14)
|
||||
- ✅ Tab导航(智能问答 + 知识资产)
|
||||
- ✅ 工作模式选择器(Collapse组件,可折叠)
|
||||
- ✅ 3种工作模式集成(全文阅读、逐篇精读、批处理)
|
||||
- ✅ PDF侧边栏(w-[45%],可展开/收起)
|
||||
- ✅ 知识资产表格(MinerU解析状态、进度条)
|
||||
**譬ク蠢<EFBFBD>音諤?*:
|
||||
- 笨?豺ア濶イHeader<EFBFBD><EFBFBD>g-slate-900 h-14<EFBFBD>?
|
||||
- 笨?Tab蟇シ闊ェ<EFBFBD>域匱閭ス髣ョ遲?+ 遏・隸<EFBDA5>オ<EFBFBD>コァ<EFBDBA>?
|
||||
- 笨?蟾・菴懈ィ。蠑城画叫蝎ィ<E89D8E><EFBDA8>ollapse扈<65>サカ<EFBDBB>悟庄謚伜匠<E4BC9C>?
|
||||
- 笨?3遘榊キ・菴懈ィ。蠑城寔謌撰シ亥<EFBDBC>譁<EFBFBD><E8AD81>隸サ縲<EFBDBB>千ッ<E58D83>イセ隸サ縲∵音螟<E99FB3>炊<EFBFBD>?
|
||||
- 笨?PDF萓ァ霎ケ譬擾シ<EFBFBD>-[45%]<5D>悟庄螻募シ/謾カ襍キ<E8A58D>?
|
||||
- 笨?遏・隸<EFBDA5>オ<EFBFBD>コァ陦ィ譬シ<E8ADAC><EFBDBC>inerU隗」譫千憾諤√∬ソ帛コヲ譚。<E8AD9A>?
|
||||
|
||||
**譬キ蠑冗サ<E58697>鰍**:
|
||||
```tsx
|
||||
@@ -93,27 +93,27 @@ rounded-2xl shadow-2xl max-w-6xl
|
||||
h-14 bg-slate-900 text-white
|
||||
|
||||
/* Tab蟇シ闊ェ */
|
||||
border-blue-600 text-blue-600 font-bold /* 激活 */
|
||||
border-transparent text-slate-500 /* 未激活 */
|
||||
border-blue-600 text-blue-600 font-bold /* 豼豢?*/
|
||||
border-transparent text-slate-500 /* 譛ェ豼豢?*/
|
||||
|
||||
/* PDF侧边栏 */
|
||||
/* PDF萓ァ霎ケ譬?*/
|
||||
w-[45%] bg-slate-100 border-l shadow-xl animate-slide-in-right
|
||||
```
|
||||
|
||||
#### <20>答 蟾・菴懈ィ。蠑冗サ<E58697>サカ
|
||||
|
||||
**1. WorkModeSelector<6F>亥キ・菴懈ィ。蠑城画叫蝎ィ<E89D8E><EFBDA8>**
|
||||
- ✅ 3种模式:全文阅读、逐篇精读、批处理
|
||||
- ✅ Radio.Group + Collapse组件
|
||||
- ✅ 全文阅读:显示Token使用率(Progress圆形进度条)
|
||||
- ✅ 逐篇精读:Select多选(最多5篇)
|
||||
- ✅ 批处理:模板选择下拉框
|
||||
- 笨?3遘肴ィ。蠑擾シ壼<EFBDBC>譁<EFBFBD><E8AD81>隸サ縲<EFBDBB>千ッ<E58D83>イセ隸サ縲∵音螟<E99FB3>炊
|
||||
- 笨?Radio.Group + Collapse扈<EFBFBD>サカ
|
||||
- 笨?蜈ィ譁<EFBDA8><E8AD81>隸サ<E99AB8>壽仞遉コToken菴ソ逕ィ邇<EFBDA8>シ<EFBFBD>rogress蝨<73>ス「霑帛コヲ譚。<E8AD9A><EFBDA1>
|
||||
- 笨?騾千ッ<E58D83>イセ隸サ<E99AB8>售elect螟夐会シ域怙螟?遽<>シ<EFBFBD>
|
||||
- 笨?謇ケ螟<EFBDB9>炊<EFBFBD>壽ィ。譚ソ騾画叫荳区級譯?
|
||||
|
||||
**2. FullTextMode<64>亥<EFBFBD>譁<EFBFBD><E8AD81>隸サ讓。蠑擾シ<E693BE>**
|
||||
- ✅ 集成Ant Design X Chat组件
|
||||
- ✅ 传递`fullTextDocumentIds`参数
|
||||
- ✅ 默认欢迎消息
|
||||
- ✅ 流式响应支持
|
||||
- 笨?髮<><E9ABAE>Ant Design X Chat扈<EFBFBD>サカ
|
||||
- 笨?莨<>騾蛋fullTextDocumentIds`蜿よ焚
|
||||
- 笨?鮟倩ョ、谺「霑取カ域<EFBDB6>
|
||||
- 笨?豬∝シ丞桃蠎疲髪謖<E9ABAA>
|
||||
|
||||
**蜈ウ髞ョ莉」遐<EFBDA3>**:
|
||||
```typescript
|
||||
@@ -137,29 +137,29 @@ w-[45%] bg-slate-100 border-l shadow-xl animate-slide-in-right
|
||||
/>
|
||||
```
|
||||
|
||||
**3. DeepReadMode(逐篇精读模式)**
|
||||
- ✅ 空状态提示(未选择文档时)
|
||||
- ✅ 集成Ant Design X Chat组件
|
||||
- ✅ 传递`documentIds`参数(限定文档范围)
|
||||
**3. DeepReadMode<EFBFBD>磯千ッ<EFBFBD>イセ隸サ讓。蠑擾シ?*
|
||||
- 笨?遨コ迥カ諤∵署遉コ<E98189>域悴騾画叫譁<E58FAB>。」譌カ<E8AD8C><EFBDB6>
|
||||
- 笨?髮<><E9ABAE>Ant Design X Chat扈<EFBFBD>サカ
|
||||
- 笨?莨<>騾蛋documentIds`蜿よ焚<EFBFBD>磯剞螳壽枚譯」闌<EFBFBD>峩<EFBFBD><EFBFBD>
|
||||
|
||||
**4. BatchMode(批处理模式)**
|
||||
- ✅ 模板选择界面
|
||||
- ✅ 执行进度条
|
||||
- ✅ 结果表格展示
|
||||
- ✅ Excel导出按钮
|
||||
**4. BatchMode<EFBFBD>域音螟<EFBFBD>炊讓。蠑擾シ?*
|
||||
- 笨?讓。譚ソ騾画叫逡碁擇
|
||||
- 笨?謇ァ陦瑚ソ帛コヲ譚?
|
||||
- 笨?扈捺棡陦ィ譬シ螻慕、コ
|
||||
- 笨?Excel蟇シ蜃コ謖蛾聴
|
||||
|
||||
### 4.4 更新API调用路径 ✅
|
||||
- [x] knowledgeBaseApi.ts:使用`/api/v2/pkb/knowledge`
|
||||
### 4.4 譖エ譁ーAPI隹<EFBFBD>畑霍ッ蠕<EFBFBD> 笨?
|
||||
- [x] knowledgeBaseApi.ts<EFBFBD>壻スソ逕ィ`/api/v1/pkb/knowledge`
|
||||
- [x] 霍ッ逕ア霍ッ蠕<EFBDAF>サ滉ク荳コ`/knowledge-base/*`
|
||||
- [x] 集成到moduleRegistry(标记为非placeholder)
|
||||
- [x] 髮<EFBFBD><EFBFBD>蛻ーmoduleRegistry<EFBFBD>域<EFBFBD><EFBFBD>ョー荳コ髱柝laceholder<EFBFBD>?
|
||||
|
||||
### 4.5 蜑咲ォッ蜉溯<E89C89>鬪瑚ッ<E7919A> <20>売
|
||||
**待完成**:
|
||||
**蠕<EFBFBD>ョ梧<EFBFBD>?*:
|
||||
- [ ] 蜷ッ蜉ィfrontend-v2蠑蜿第恪蜉。蝎ィ
|
||||
- [ ] 隶ソ髣ョ`http://localhost:5173/knowledge-base/dashboard`
|
||||
- [ ] 鬪瑚ッ.ashboard鬘オ髱「貂イ譟<EFBDB2>
|
||||
- [ ] 验证创建知识库流程
|
||||
- [ ] 验证Workspace页面及3种工作模式
|
||||
- [ ] 鬪瑚ッ∝<EFBFBD>蟒コ遏・隸<EFBFBD>コ捺オ∫ィ?
|
||||
- [ ] 鬪瑚ッ仝orkspace鬘オ髱「蜿?遘榊キ・菴懈ィ。蠑?
|
||||
- [ ] 鬪瑚ッ、nt Design X Chat髮<74><E9ABAE>
|
||||
|
||||
---
|
||||
@@ -168,39 +168,39 @@ w-[45%] bg-slate-100 border-l shadow-xl animate-slide-in-right
|
||||
|
||||
### 鬚懆牡隗<E789A1>激
|
||||
```css
|
||||
/* 主色调 */
|
||||
/* 荳サ濶イ隹?*/
|
||||
bg-gray-50 /* 鬘オ髱「閭梧勹 */
|
||||
bg-white /* 蜊。迚<EFBDA1>レ譎ッ */
|
||||
bg-slate-900 /* Header豺ア濶イ閭梧勹 */
|
||||
|
||||
/* 知识库类型颜色 */
|
||||
/* 遏・隸<EFBFBD>コ鍋アサ蝙矩「懆<EFBFBD>?*/
|
||||
text-blue-600 + bg-blue-100 /* 荳エ蠎頑欠蜊<E6ACA0> */
|
||||
text-purple-600 + bg-purple-100 /* 遘醍<E98198>疲枚迪ョ */
|
||||
text-emerald-600 + bg-emerald-100 /* 蜈ク蝙狗羅萓<E7BE85> */
|
||||
text-rose-600 + bg-rose-100 /* 闕ッ蜩∝ョ牙<EFBDAE> */
|
||||
text-orange-600 + bg-orange-100 /* 閨檎ァー閠<EFBDB0>ッ<EFBFBD> */
|
||||
text-slate-600 + bg-slate-200 /* 自定义 */
|
||||
text-slate-600 + bg-slate-200 /* 閾ェ螳壻ケ?*/
|
||||
|
||||
/* 謖蛾聴鬚懆牡 */
|
||||
bg-blue-600 hover:bg-blue-700 /* 主按钮 */
|
||||
bg-slate-800 hover:bg-blue-600 /* 进入工作台 */
|
||||
bg-blue-600 hover:bg-blue-700 /* 荳サ謖蛾<EFBFBD>?*/
|
||||
bg-slate-800 hover:bg-blue-600 /* 霑帛<EFBFBD>蟾・菴懷<EFBFBD>?*/
|
||||
```
|
||||
|
||||
### 蟆コ蟇ク隗<EFBDB8>激
|
||||
```css
|
||||
h-14 /* Header鬮伜コヲ */
|
||||
h-[240px] /* 蜊。迚<EFBDA1>ォ伜コヲ */
|
||||
w-[45%] /* PDF侧边栏宽度 */
|
||||
w-[45%] /* PDF萓ァ霎ケ譬丞ョス蠎?*/
|
||||
rounded-xl /* 譬<>㊥蝨<E38AA5>ァ<EFBFBD> */
|
||||
rounded-2xl /* Modal蝨<6C>ァ<EFBFBD> */
|
||||
p-6 /* 标准内边距 */
|
||||
p-6 /* 譬<EFBFBD>㊥蜀<EFBFBD>セケ霍?*/
|
||||
gap-6 /* 譬<>㊥髣エ霍<EFBDB4> */
|
||||
```
|
||||
|
||||
### 蜉ィ逕サ隗<EFBDBB>激
|
||||
```css
|
||||
animate-in /* 豺。蜈・ */
|
||||
animate-slide-in-right /* 右滑入 */
|
||||
animate-slide-in-right /* 蜿ウ貊大<EFBFBD>?*/
|
||||
transition-all /* 霑<>ク。蜉ィ逕サ */
|
||||
hover:scale-110 /* 謔ャ蛛懈叛螟ァ */
|
||||
active:scale-[0.98] /* 謖我ク狗シゥ蟆<EFBDA9> */
|
||||
@@ -208,7 +208,7 @@ active:scale-[0.98] /* 按下缩小 */
|
||||
|
||||
---
|
||||
|
||||
## 🔧 技术实现亮点
|
||||
## <EFBFBD>肌 謚譛ッ螳樒鴫莠ョ轤?
|
||||
|
||||
### 1. Ant Design X Chat髮<74><E9ABAE>
|
||||
```typescript
|
||||
@@ -221,7 +221,7 @@ conversationType="pkb"
|
||||
// 閾ェ螳壻ケ詠equestFn蟇ケ謗・蜷守ォッAPI
|
||||
providerConfig={{
|
||||
requestFn: async (message: string) => {
|
||||
// 根据工作模式传递不同参数
|
||||
// 譬ケ謐ョ蟾・菴懈ィ。蠑丈シ<EFBFBD>騾剃ク榊酔蜿よ<EFBFBD>?
|
||||
const response = await fetch('/api/v1/chat/stream', {
|
||||
body: JSON.stringify({
|
||||
fullTextDocumentIds, // 蜈ィ譁<EFBDA8><E8AD81>隸サ
|
||||
@@ -232,13 +232,13 @@ providerConfig={{
|
||||
}}
|
||||
```
|
||||
|
||||
### 2. 工作模式状态管理
|
||||
### 2. 蟾・菴懈ィ。蠑冗憾諤∫ョ。逅?
|
||||
```typescript
|
||||
// 閾ェ螳壻ケ羽ook邂。逅<EFBDA1>キ・菴懈ィ。蠑<EFBDA1>
|
||||
const {
|
||||
workMode, // 蠖灘燕讓。蠑<EFBDA1>
|
||||
selectedDocuments, // 选中的文档
|
||||
selectedTemplate, // 选中的模板
|
||||
selectedDocuments, // 騾我クュ逧<EFBFBD>枚譯?
|
||||
selectedTemplate, // 騾我クュ逧<EFBFBD>ィ。譚?
|
||||
setWorkMode,
|
||||
setSelectedDocuments,
|
||||
setSelectedTemplate,
|
||||
@@ -247,7 +247,7 @@ const {
|
||||
|
||||
### 3. 霍ッ逕ア隶セ隶。
|
||||
```typescript
|
||||
// 模块内路由
|
||||
// 讓。蝮怜<EFBFBD>霍ッ逕?
|
||||
<Routes>
|
||||
<Route path="/" element={<Navigate to="dashboard" />} />
|
||||
<Route path="dashboard" element={<DashboardPage />} />
|
||||
@@ -259,13 +259,13 @@ const {
|
||||
/knowledge-base/workspace/kb123
|
||||
```
|
||||
|
||||
### 4. MinerU解析状态展示
|
||||
### 4. MinerU隗」譫千憾諤∝ア慕、?
|
||||
```typescript
|
||||
const getStatusBadge = (status: string) => {
|
||||
const statusMap = {
|
||||
completed: { text: '隗」譫仙ョ梧<EFBDAE>', color: 'green', icon: <CheckCircle2 /> },
|
||||
uploading: { text: 'MinerU 迚磯擇蛻<E69387>梵', color: 'blue', icon: <Loader2 animate-spin /> },
|
||||
parsing: { text: '结构化提取', color: 'purple', icon: <Loader2 animate-spin /> },
|
||||
parsing: { text: '扈捺桷蛹匁署蜿?, color: 'purple', icon: <Loader2 animate-spin /> },
|
||||
indexing: { text: '蜷鷹㍼邏「蠑<EFBFBD>', color: 'orange', icon: <Loader2 animate-spin /> },
|
||||
error: { text: '隗」譫仙、ア雍・', color: 'red' },
|
||||
};
|
||||
@@ -277,25 +277,25 @@ const getStatusBadge = (status: string) => {
|
||||
|
||||
## <20>刀 譁<>サカ貂<EFBDB6>黒
|
||||
|
||||
### 新增文件(17个)
|
||||
### 譁ー蠅樊枚莉カ<EFBFBD>?7荳ェ<E88DB3><EFBDAA>
|
||||
```
|
||||
frontend-v2/src/modules/pkb/
|
||||
笏懌楳笏 index.tsx (讓。蝮怜<E89DAE>蜿」)
|
||||
笏懌楳笏 api/knowledgeBaseApi.ts (API譛榊苅)
|
||||
笏懌楳笏 components/Workspace/
|
||||
│ ├── WorkModeSelector.tsx (工作模式选择器)
|
||||
│ ├── FullTextMode.tsx (全文阅读模式)
|
||||
│ ├── DeepReadMode.tsx (逐篇精读模式)
|
||||
│ └── BatchMode.tsx (批处理模式)
|
||||
笏? 笏懌楳笏 WorkModeSelector.tsx (蟾・菴懈ィ。蠑城画叫蝎?
|
||||
笏? 笏懌楳笏 FullTextMode.tsx (蜈ィ譁<EFBFBD><EFBFBD>隸サ讓。蠑<EFBFBD>)
|
||||
笏? 笏懌楳笏 DeepReadMode.tsx (騾千ッ<EFBFBD>イセ隸サ讓。蠑<EFBFBD>)
|
||||
笏? 笏披楳笏 BatchMode.tsx (謇ケ螟<EFBFBD>炊讓。蠑?
|
||||
笏懌楳笏 hooks/useWorkMode.ts (蟾・菴懈ィ。蠑秋ook)
|
||||
笏懌楳笏 pages/
|
||||
│ ├── DashboardPage.tsx (仪表盘页面)
|
||||
│ └── WorkspacePage.tsx (工作台页面)
|
||||
├── stores/useKnowledgeBaseStore.ts (状态管理)
|
||||
笏? 笏懌楳笏 DashboardPage.tsx (莉ェ陦ィ逶倬。オ髱?
|
||||
笏? 笏披楳笏 WorkspacePage.tsx (蟾・菴懷床鬘オ髱?
|
||||
笏懌楳笏 stores/useKnowledgeBaseStore.ts (迥カ諤∫ョ。逅?
|
||||
笏披楳笏 types/workspace.ts (邀サ蝙句ョ壻ケ<E5A3BB>)
|
||||
```
|
||||
|
||||
### 修改文件(1个)
|
||||
### 菫ョ謾ケ譁<EFBFBD>サカ<EFBFBD>?荳ェ<E88DB3><EFBDAA>
|
||||
```
|
||||
frontend-v2/src/framework/modules/moduleRegistry.ts (譖エ譁ーPKB讓。蝮玲ウィ蜀<EFBDA8>)
|
||||
```
|
||||
@@ -307,21 +307,21 @@ frontend-v2/src/framework/modules/moduleRegistry.ts (更新PKB模块注册)
|
||||
### API霍ッ逕ア譏<EFBDB1>蟆<EFBFBD>
|
||||
| 蜑咲ォッ蜉溯<E89C89> | API霍ッ逕ア | 譁ケ豕<EFBDB9> | 隸エ譏<EFBDB4> |
|
||||
|---------|---------|------|------|
|
||||
| 获取知识库列表 | `/api/v2/pkb/knowledge-bases` | GET | 仪表盘展示 |
|
||||
| 创建知识库 | `/api/v2/pkb/knowledge-bases` | POST | 创建向导 |
|
||||
| 获取知识库详情 | `/api/v2/pkb/knowledge-bases/:id` | GET | 工作台Header |
|
||||
| 获取文档列表 | `/api/v2/pkb/knowledge-bases/:id/documents` | GET | 知识资产Tab |
|
||||
| 删除文档 | `/api/v2/pkb/knowledge-bases/:kbId/documents/:docId` | DELETE | 文档管理 |
|
||||
| 闔キ蜿也衍隸<EFBFBD>コ灘<EFBFBD>陦?| `/api/v1/pkb/knowledge-bases` | GET | 莉ェ陦ィ逶伜ア慕、?|
|
||||
| 蛻帛サコ遏・隸<EFBFBD>コ?| `/api/v1/pkb/knowledge-bases` | POST | 蛻帛サコ蜷大ッシ |
|
||||
| 闔キ蜿也衍隸<EFBFBD>コ楢ッヲ諠?| `/api/v1/pkb/knowledge-bases/:id` | GET | 蟾・菴懷床Header |
|
||||
| 闔キ蜿匁枚譯」蛻苓。ィ | `/api/v1/pkb/knowledge-bases/:id/documents` | GET | 遏・隸<EFBFBD>オ<EFBFBD>コァTab |
|
||||
| 蛻<EFBFBD>髯、譁<EFBFBD>。」 | `/api/v1/pkb/knowledge-bases/:kbId/documents/:docId` | DELETE | 譁<EFBFBD>。」邂。逅<EFBFBD> |
|
||||
| AI蟇ケ隸晢シ亥<EFBDBC>譁<EFBFBD><E8AD81>隸サ<E99AB8>榎 `/api/v1/chat/stream` | POST | `fullTextDocumentIds` |
|
||||
| AI蟇ケ隸晢シ磯千ッ<E58D83>イセ隸サ<E99AB8>榎 `/api/v1/chat/stream` | POST | `documentIds` |
|
||||
| 批处理执行 | `/api/v2/pkb/batch-tasks/batch/execute` | POST | 批处理模式 |
|
||||
| 謇ケ螟<EFBFBD>炊謇ァ陦?| `/api/v1/pkb/batch-tasks/batch/execute` | POST | 謇ケ螟<EFBFBD>炊讓。蠑?|
|
||||
|
||||
---
|
||||
|
||||
## <20>識 荳臥ァ榊キ・菴懈ィ。蠑丞ョ樒鴫
|
||||
|
||||
### 1️⃣ 全文阅读模式(Full-text Reading)
|
||||
**适用场景**: 文献综述、横向对比
|
||||
### 1<EFBFBD>鞘Ε 蜈ィ譁<EFBDA8><E8AD81>隸サ讓。蠑擾シ<E693BE>ull-text Reading<EFBFBD>?
|
||||
**騾ら畑蝨コ譎ッ**: 譁<>鍵扈シ霑ー縲∵ィェ蜷大ッケ豈?
|
||||
**譬ク蠢<EFBDB8>惻蛻カ**:
|
||||
```typescript
|
||||
// 蜉<>霓ス蜈ィ驛ィ譁<EFBDA8>。」ID
|
||||
@@ -337,16 +337,16 @@ body: JSON.stringify({
|
||||
})
|
||||
```
|
||||
|
||||
**UI特性**:
|
||||
- ✅ 显示Token使用率(Progress圆形)
|
||||
- ✅ 全局视角提示:"已加载 X 篇文档全文"
|
||||
- ✅ 默认欢迎消息引导
|
||||
**UI迚ケ諤?*:
|
||||
- 笨?譏セ遉コToken菴ソ逕ィ邇<EFBDA8>シ<EFBFBD>rogress蝨<EFBFBD>ス「<EFBFBD>?
|
||||
- 笨?蜈ィ螻隗<C280>ァ呈署遉コ<E98189>?蟾イ蜉<EFBDB2>霓?X 遽<>枚譯」蜈ィ譁?
|
||||
- 笨?鮟倩ョ、谺「霑取カ域<EFBDB6>蠑募ッシ
|
||||
|
||||
### 2️⃣ 逐篇精读模式(Deep Reading)
|
||||
### 2<EFBFBD>鞘Ε 騾千ッ<E58D83>イセ隸サ讓。蠑擾シ<E693BE>eep Reading<EFBFBD>?
|
||||
**騾ら畑蝨コ譎ッ**: 蜊慕ッ<E68595>枚迪ョ隸ヲ扈<EFBDA6><E68988>譫<EFBFBD>
|
||||
**譬ク蠢<EFBDB8>惻蛻カ**:
|
||||
```typescript
|
||||
// 用户手动选择1-5篇
|
||||
// 逕ィ謌キ謇句勘騾画叫1-5遽?
|
||||
<Select
|
||||
mode="multiple"
|
||||
maxCount={5}
|
||||
@@ -362,27 +362,27 @@ body: JSON.stringify({
|
||||
})
|
||||
```
|
||||
|
||||
**UI特性**:
|
||||
- ✅ 空状态提示
|
||||
- ✅ 选中状态Alert:"已选择 X 篇文档"
|
||||
- ✅ 最多选5篇限制
|
||||
**UI迚ケ諤?*:
|
||||
- 笨?遨コ迥カ諤∵署遉?
|
||||
- 笨?騾我クュ迥カ諤、lert<72>?蟾イ騾画叫 X 遽<>枚譯?
|
||||
- 笨?譛螟夐?遽<>剞蛻?
|
||||
|
||||
### 3️⃣ 批处理模式(Batch Processing)
|
||||
**适用场景**: 数据提取、表格生成
|
||||
### 3<EFBFBD>鞘Ε 謇ケ螟<EFBDB9>炊讓。蠑擾シ<E693BE>atch Processing<EFBFBD>?
|
||||
**騾ら畑蝨コ譎ッ**: 謨ー謐ョ謠仙叙縲∬。ィ譬シ逕滓<E98095>?
|
||||
**譬ク蠢<EFBDB8>惻蛻カ**:
|
||||
```typescript
|
||||
// 选择批处理模板
|
||||
// 騾画叫謇ケ螟<EFBFBD>炊讓。譚?
|
||||
<Select
|
||||
value={selectedTemplate}
|
||||
onChange={handleTemplateChange}
|
||||
options={[
|
||||
{ label: '荳エ蠎顔<E8A08E>皮ゥカ菫。諱ッ謠仙叙', value: 'clinical_research' },
|
||||
{ label: '药物安全性分析', value: 'drug_safety' },
|
||||
{ label: '闕ッ迚ゥ螳牙<EFBFBD>諤ァ蛻<EFBFBD><EFBFBD>?, value: 'drug_safety' },
|
||||
]}
|
||||
/>
|
||||
|
||||
// 执行批处理
|
||||
const response = await fetch('/api/v2/pkb/batch-tasks/batch/execute', {
|
||||
// 謇ァ陦梧音螟<EFBFBD><EFBFBD>?
|
||||
const response = await fetch('/api/v1/pkb/batch-tasks/batch/execute', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
kb_id: kbId,
|
||||
@@ -391,45 +391,45 @@ const response = await fetch('/api/v2/pkb/batch-tasks/batch/execute', {
|
||||
});
|
||||
```
|
||||
|
||||
**UI特性**:
|
||||
- ✅ 模板选择下拉框
|
||||
- ✅ 执行进度条(Progress)
|
||||
- ✅ 结果表格展示(Table)
|
||||
- ✅ Excel导出按钮
|
||||
**UI迚ケ諤?*:
|
||||
- 笨?讓。譚ソ騾画叫荳区級譯?
|
||||
- 笨?謇ァ陦瑚ソ帛コヲ譚。<E8AD9A><EFBDA1>rogress<EFBFBD>?
|
||||
- 笨?扈捺棡陦ィ譬シ螻慕、コ<EFBDA4><EFBDBA>able<EFBFBD>?
|
||||
- 笨?Excel蟇シ蜃コ謖蛾聴
|
||||
|
||||
---
|
||||
|
||||
## <20>投 莉」遐∬エィ驥<EFBDA8>
|
||||
|
||||
### Linter检查
|
||||
- ✅ **0 Errors**
|
||||
- ✅ **0 Warnings**(已清理所有未使用的imports和变量)
|
||||
### Linter譽譟?
|
||||
- 笨?**0 Errors**
|
||||
- 笨?**0 Warnings**<2A>亥キイ貂<EFBDB2>炊謇譛画悴菴ソ逕ィ逧<EFBDA8>mports蜥悟序驥擾シ<E693BE>
|
||||
|
||||
### TypeScript邀サ蝙句ョ牙<EFBDAE>
|
||||
- ✅ 完整的类型定义(`workspace.ts`)
|
||||
- ✅ 所有API调用都有类型注解
|
||||
- ✅ Props类型严格
|
||||
- 笨?螳梧紛逧<E7B49B>アサ蝙句ョ壻ケ会シ<E4BC9A>workspace.ts`<EFBFBD>?
|
||||
- 笨?謇譛陰PI隹<49>畑驛ス譛臥アサ蝙区ウィ隗」
|
||||
- 笨?Props邀サ蝙倶ク・譬シ
|
||||
|
||||
### 莉」遐∬ァ<E288AC>激
|
||||
- ✅ 遵循React函数组件规范
|
||||
- ✅ 使用React Hooks(useState, useEffect, useCallback)
|
||||
- ✅ 组件拆分合理
|
||||
- ✅ 注释清晰
|
||||
- 笨?驕オ蠕ェReact蜃ス謨ー扈<EFBDB0>サカ隗<EFBDB6>激
|
||||
- 笨?菴ソ逕ィReact Hooks<EFBFBD><EFBFBD>seState, useEffect, useCallback<EFBFBD>?
|
||||
- 笨?扈<>サカ諡<EFBDB6><E8ABA1>蜷育炊
|
||||
- 笨?豕ィ驥頑ク<E9A091>匆
|
||||
|
||||
---
|
||||
|
||||
## 🚀 下一步计划
|
||||
## <EFBFBD>噫 荳倶ク豁・隶。蛻?
|
||||
|
||||
### 遶句叉鬪瑚ッ<E7919A>
|
||||
1. 蜷ッ蜉ィfrontend-v2蠑蜿第恪蜉。蝎ィ
|
||||
2. 隶ソ髣ョDashboard鬘オ髱「
|
||||
3. 测试创建知识库流程
|
||||
3. 豬玖ッ募<EFBFBD>蟒コ遏・隸<EFBFBD>コ捺オ∫ィ?
|
||||
4. 豬玖ッ標orkspace鬘オ髱「
|
||||
5. 测试3种工作模式
|
||||
5. 豬玖ッ<EFBFBD>3遘榊キ・菴懈ィ。蠑?
|
||||
|
||||
### 蜷守サュ莨伜喧
|
||||
1. 添加文件上传功能(连接MinerU)
|
||||
2. 实现批处理结果轮询
|
||||
1. 豺サ蜉<EFBFBD>譁<EFBFBD>サカ荳贋シ<EFBFBD>蜉溯<EFBFBD><EFBFBD>郁ソ樊磁MinerU<EFBFBD>?
|
||||
2. 螳樒鴫謇ケ螟<EFBFBD>炊扈捺棡霓ョ隸?
|
||||
3. 豺サ蜉<EFBDBB>PDF鬚<46>ァ育悄螳槫<E89EB3>螳ケ
|
||||
4. 莨伜喧蜩榊コ泌シ丞ク<E4B89E>ア
|
||||
5. 豺サ蜉<EFBDBB>蜊募<E89C8A>豬玖ッ<E78E96>
|
||||
@@ -445,12 +445,12 @@ const response = await fetch('/api/v2/pkb/batch-tasks/batch/execute', {
|
||||
- 逶エ謗・螳樒鴫譁ー隶セ隶。蜿ッ遑ョ菫<EFBDAE>100%驕オ蠕ェPRD
|
||||
|
||||
**莨伜漢**:
|
||||
- ✅ 设计一致性强
|
||||
- ✅ 代码更清晰
|
||||
- ✅ 避免技术债务
|
||||
- 笨?隶セ隶。荳閾エ諤ァ蠑コ
|
||||
- 笨?莉」遐∵峩貂<E5B3A9><E8B282>?
|
||||
- 笨?驕ソ蜈肴橿譛ッ蛟コ蜉。
|
||||
|
||||
### 蜀ウ遲<EFBDB3>2<EFBFBD>壼キ・菴懈ィ。蠑丞ヲゆス暮寔謌撰シ<E692B0>
|
||||
**方案选择**: 方案A - 智能问答Tab内嵌模式切换器
|
||||
**譁ケ譯磯画叫**: 譁ケ譯<EFBDB9> - 譎コ閭ス髣ョ遲乃ab蜀<62>オ梧ィ。蠑丞<E8A091>謐「蝎?
|
||||
|
||||
**蜴溷屏**:
|
||||
- 逕ィ謌キ菴馴ェ梧オ∫腐<E288AB><E88590>ollapse蜿ッ謚伜匠<E4BC9C><E58CA0>
|
||||
@@ -460,52 +460,53 @@ const response = await fetch('/api/v2/pkb/batch-tasks/batch/execute', {
|
||||
**螳樒鴫**:
|
||||
```
|
||||
譎コ閭ス髣ョ遲乃ab
|
||||
├── 工作模式选择器(Collapse)
|
||||
│ ├── 全文阅读 [Radio]
|
||||
│ ├── 逐篇精读 [Radio + Select]
|
||||
│ └── 批处理 [Radio + Select]
|
||||
└── 模式内容区
|
||||
笏懌楳笏 蟾・菴懈ィ。蠑城画叫蝎ィ<E89D8E><EFBDA8>ollapse<EFBFBD>?
|
||||
笏? 笏懌楳笏 蜈ィ譁<EFBDA8><E8AD81>隸サ [Radio]
|
||||
笏? 笏懌楳笏 騾千ッ<E58D83>イセ隸サ [Radio + Select]
|
||||
笏? 笏披楳笏 謇ケ螟<EFBDB9><E89E9F>?[Radio + Select]
|
||||
笏披楳笏 讓。蠑丞<E8A091>螳ケ蛹?
|
||||
笏懌楳笏 FullTextMode (Ant Design X Chat)
|
||||
笏懌楳笏 DeepReadMode (Ant Design X Chat)
|
||||
笏披楳笏 BatchMode (Progress + Table)
|
||||
```
|
||||
|
||||
### 决策3:如何复用Ant Design X Chat组件?
|
||||
### 蜀ウ遲<EFBFBD>3<EFBFBD>壼ヲゆス募、咲畑Ant Design X Chat扈<EFBFBD>サカ<EFBFBD>?
|
||||
**遲也払**:
|
||||
- 菴ソ逕ィ`@/shared/components/Chat/ChatContainer`
|
||||
- 騾夊ソ㌔conversationType="pkb"`蛹コ蛻<EFBDBA>シ夊ッ晉アサ蝙<EFBDBB>
|
||||
- 騾夊ソ㌔providerConfig.requestFn`閾ェ螳壻ケ陰PI隹<49>畑
|
||||
- 通过不同参数(`fullTextDocumentIds` vs `documentIds`)实现模式差异
|
||||
- 騾夊ソ<EFBFBD>ク榊酔蜿よ焚<EFBFBD><EFBFBD>fullTextDocumentIds` vs `documentIds`<EFBFBD>牙ョ樒鴫讓。蠑丞キョ蠑?
|
||||
|
||||
---
|
||||
|
||||
## <20>統 諤サ扈<EFBDBB>
|
||||
|
||||
### ✅ 完成情况
|
||||
### 笨?螳梧<E89EB3>諠<EFBFBD><E8ABA0>
|
||||
- 蜑咲ォッ莉」遐∬ソ∫ァサ: **100%螳梧<E89EB3>**
|
||||
- 隶セ隶。隗<EFBDA1>激驕オ蠕ェ: **100%荳・譬シ驕オ蠕ェ**
|
||||
- Linter错误: **0个**
|
||||
- Linter髞呵ッッ: **0荳?*
|
||||
- 邀サ蝙句ョ牙<EFBDAE>: **螳梧紛**
|
||||
|
||||
### 🎨 设计还原度
|
||||
### <EFBFBD>耳 隶セ隶。霑伜次蠎?
|
||||
- 遏・隸<EFBDA5>コ謎サェ陦ィ逶老5: **100%霑伜次**
|
||||
- 蟾・菴懷床V3: **100%霑伜次**
|
||||
- 颜色/尺寸/动画: **像素级精确**
|
||||
- 鬚懆牡/蟆コ蟇ク/蜉ィ逕サ: **蜒冗エ<EFBFBD>郤ァ邊セ遑?*
|
||||
|
||||
### 🔧 技术实现
|
||||
### <EFBFBD>肌 謚譛ッ螳樒<E89EB3>?
|
||||
- Ant Design X髮<58><E9ABAE>: **螳梧<E89EB3>**
|
||||
- 3种工作模式: **完成**
|
||||
- 3遘榊キ・菴懈ィ。蠑? **螳梧<EFBFBD>**
|
||||
- 霍ッ逕ア驟咲スョ: **螳梧<E89EB3>**
|
||||
- API蟇ケ謗・: **螳梧<E89EB3>**
|
||||
|
||||
### 🚀 下一步
|
||||
**阶段4.5**: 前端功能验证(待执行)
|
||||
### <EFBFBD>噫 荳倶ク豁?
|
||||
**髦カ谿オ4.5**: 蜑咲ォッ蜉溯<EFBFBD>鬪瑚ッ<EFBFBD>シ亥セ<EFBFBD>鴬陦鯉シ?
|
||||
|
||||
---
|
||||
|
||||
**謚・蜻顔函謌先慮髣エ**: 2026-01-06
|
||||
**报告作者**: AI Assistant
|
||||
**审核状态**: 待用户验证
|
||||
**謚・蜻贋ス懆?*: AI Assistant
|
||||
**螳。譬ク迥カ諤?*: 蠕<>畑謌キ鬪瑚ッ?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user