Files
AIclinicalresearch/docs/08-项目管理/PKB迁移-阶段4完成报告.md
HaHafeng 1b53ab9d52 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%)
2026-01-14 19:15:01 +08:00

523 lines
14 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PKB霑∫ァサ - 髦カ谿オ4螳梧<E89EB3>謚・蜻<EFBDA5>
## <20>搭 髦カ谿オ讎りァ<E3828A>
**髦カ谿オ蜷咲ァー**: 蜑咲ォッ莉」遐∬ソ∫ァサ荳桟5.0隶セ隶。螳樒鴫
**謇ァ陦梧慮髣エ**: 2026-01-06
**謇ァ陦檎憾諤?*: 笨?**蟾イ螳梧<E89EB3>?*
**遲也払**: <20>耳 **驥肴眠螳樒鴫V5.0隶セ隶。<EFBFBD>€碁撼霑∫ァサ譌ァ莉」遐?*
---
## <20>識 譬ク蠢<EFBDB8><E8A0A2><EFBFBD>
譬ケ謐ョ逕ィ謌キ遑ョ隶、<EFBFBD>檎罰莠取眠隶セ隶。<EFBFBD><EFBFBD>5.0 PRD + 遏・隸<EFBDA5>コ謎サェ陦ィ逶老5.html + 蟾・菴懷床V3.html<6D>我ク取立蜑咲ォッ莉」遐∝キョ蠑よ仞闡暦シ梧<EFBDBC>莉ャ驥<EFBDAC>叙莠?*"逶エ謗・螳樒鴫譁ー隶セ隶?**逧<>ュ也払<E4B99F>€碁撼霑∫ァサ譌ァ莉」遐√€?
---
## 笨?蟾イ螳梧<E89EB3>莉サ蜉。貂<EFBDA1><E8B282>?
### 4.1 螳。譟・蜑咲ォッPKB莉」遐<EFBDA3> 笨?
- [x] 譟・逵区立迚亥燕遶ッ莉」遐∫サ捺桷
- [x]<>ァ」譌ァ迚<EFBDA7>PI隹<49>畑讓。蠑<EFBDA1>
- [x]<>ァ」譌ァ迚育憾諤∫ョ。逅<EFBDA1>€サ霎<EFBDBB>
- [x] 遑ョ隶、荳取眠隶セ隶。逧<EFBDA1>キョ蠑?
### 4.2 蛻帛サコfrontend-v2讓。蝮礼サ捺桷 笨?
蛻帛サコ莠<EFBFBD>ョ梧紛逧<EFBFBD>ィ。蝮礼岼蠖慕サ捺桷<EFBFBD>?
```
frontend-v2/src/modules/pkb/
笏懌楳笏€ index.tsx # 讓。蝮怜<E89DAE>蜿」
笏懌楳笏€ api/
笏? 笏披楳笏€ knowledgeBaseApi.ts # API譛榊苅<E6A68A><E88B85>2霍ッ逕ア<E98095>?
笏懌楳笏€ components/
笏? 笏披楳笏€ Workspace/
笏? 笏懌楳笏€ WorkModeSelector.tsx # 蟾・菴懈ィ。蠑城€画叫蝎?
笏? 笏懌楳笏€ FullTextMode.tsx # 蜈ィ譁<EFBDA8><E8AD81>隸サ讓。蠑<EFBDA1>
笏? 笏懌楳笏€ DeepReadMode.tsx # 騾千ッ<E58D83>イセ隸サ讓。蠑<EFBDA1>
笏? 笏披楳笏€ BatchMode.tsx # 謇ケ螟<EFBDB9>炊讓。蠑?
笏懌楳笏€ hooks/
笏? 笏披楳笏€ useWorkMode.ts # 蟾・菴懈ィ。蠑秋ook
笏懌楳笏€ pages/
笏? 笏懌楳笏€ DashboardPage.tsx # 莉ェ陦ィ逶倬。オ髱「<E9ABB1><EFBDA2>5隶セ隶。<E99AB6>?
笏? 笏披楳笏€ WorkspacePage.tsx # 蟾・菴懷床鬘オ髱「<E9ABB1><EFBDA2>3隶セ隶。<E99AB6>?
笏懌楳笏€ stores/
笏? 笏披楳笏€ useKnowledgeBaseStore.ts # Zustand迥カ諤∫ョ。逅?
笏披楳笏€ types/
笏披楳笏€ workspace.ts # TypeScript邀サ蝙句ョ壻ケ<E5A3BB>
```
### 4.3 蛻帛サコPKB蜑咲ォッ扈<EFBDAF>サカ 笨?
#### <20>匠 DashboardPage<67>育衍隸<E8A18D>コ謎サェ陦ィ逶老5<E88081>?
**隶セ隶。驕オ蠕ェ**: 100%驕オ蠕ェ`遏・隸<EFBDA5>コ謎サェ陦ィ逶老5.html`
**譬ク蠢<EFBDB8>音諤?*:
- 笨?1+3鄂第<E98482>シ蟶<EFBDBC>€<EFBDB1><EFBFBD>蟒コ蜊。迚?+ 遏・隸<EFBDA5>コ灘今迚<E4BB8A><EFBFBD>
- 笨?6遘咲衍隸<E8A18D>コ鍋アサ蝙具シ井クエ蠎頑欠蜊励€∫ァ醍<EFBDA7>疲枚迪ョ縲∝<E7B8B2>蝙狗羅萓九€∬艮蜩∝ョ牙<EFBDAE>縲∬遘ー閠<EFBDB0>ッ輔€<C280>螳壻ケ会シ?
- 笨?3豁・蛻帛サコ蜷大ッシ<EFBDAF>育アサ蝙矩€画叫 竊?蝓コ遑€菫。諱ッ 竊?譁<>サカ荳贋シ<E8B48B><EFBDBC>?
- 笨?邊セ遑ョ逧<EFBDAE><E980A7>濶イ譁ケ譯茨シ<E88CA8>lue-600縲urple-600縲merald-600遲会シ<E4BC9A>
- 笨?蛻帛サコ蜊。迚<EFBDA1>"蜻シ蜷ク蜉ィ逕サ"<22><>over-pulse<73>?
- 笨?Modal驕ョ鄂ゥ+蜷大ッシ蠑丈コ、莠?
**譬キ蠑冗サ<E58697>**:
```tsx
/* 蛻帛サコ蜊。迚<EFBDA1> */
bg-gradient-to-br from-blue-50 to-indigo-50
border-2 border-dashed border-blue-300
h-[240px]
/* 遏・隸<EFBDA5>コ灘今迚?*/
bg-white rounded-xl border border-gray-200
h-[240px] hover:shadow-lg
/* Modal */
bg-slate-900/60 backdrop-blur-sm
rounded-2xl shadow-2xl max-w-6xl
```
#### <20><EFBFBD>?WorkspacePage<67>域イ画オク蠑丞キ・菴懷床V3<56>?
**隶セ隶。驕オ蠕ェ**: 100%驕オ蠕ェ`蟾・菴懷床V3.html`
**譬ク蠢<EFBDB8>音諤?*:
- 笨?豺ア濶イHeader<65><72>g-slate-900 h-14<31>?
- 笨?Tab蟇シ闊ェ<E9978A>域匱閭ス髣ョ遲?+ 遏・隸<EFBDA5><EFBFBD>コァ<EFBDBA>?
- 笨?蟾・菴懈ィ。蠑城€画叫蝎ィ<E89D8E><EFBDA8>ollapse扈<65>サカ<EFBDBB>悟庄謚伜匠<E4BC9C>?
- 笨?3遘榊キ・菴懈ィ。蠑城寔謌撰シ亥<EFBDBC><EFBFBD><E8AD81>隸サ縲<EFBDBB>€千ッ<E58D83>イセ隸サ縲∵音螟<E99FB3><EFBFBD>?
- 笨?PDF萓ァ霎ケ譬擾シ<E693BE>-[45%]<5D>悟庄螻募シ€/謾カ襍キ<E8A58D>?
- 笨?遏・隸<EFBDA5><EFBFBD>コァ陦ィ譬シ<E8ADAC><EFBDBC>inerU隗」譫千憾諤√€∬ソ帛コヲ譚。<E8AD9A>?
**譬キ蠑冗サ<E58697>**:
```tsx
/* Header */
h-14 bg-slate-900 text-white
/* Tab蟇シ闊ェ */
border-blue-600 text-blue-600 font-bold /* 豼€豢?*/
border-transparent text-slate-500 /* 譛ェ豼€豢?*/
/* PDF萓ァ霎ケ譬?*/
w-[45%] bg-slate-100 border-l shadow-xl animate-slide-in-right
```
#### <20>答 蟾・菴懈ィ。蠑冗サ<E58697>サカ
**1. WorkModeSelector<6F>亥キ・菴懈ィ。蠑城€画叫蝎ィ<E89D8E><EFBDA8>**
- 笨?3遘肴ィ。蠑擾シ壼<EFBDBC><EFBFBD><E8AD81>隸サ縲<EFBDBB>€千ッ<E58D83>イセ隸サ縲∵音螟<E99FB3>
- 笨?Radio.Group + Collapse扈<65>サカ
- 笨?蜈ィ譁<EFBDA8><E8AD81>隸サ<E99AB8>壽仞遉コToken菴ソ逕ィ邇<EFBDA8><EFBFBD>rogress蝨<73>ス「霑帛コヲ譚。<E8AD9A><EFBDA1>
- 笨?騾千ッ<E58D83>イセ隸サ<E99AB8>售elect螟夐€会シ域怙螟?遽<><EFBFBD>
- 笨?謇ケ螟<EFBDB9><EFBFBD>壽ィ。譚ソ騾画叫荳区級譯?
**2. FullTextMode<64><EFBFBD><EFBFBD><E8AD81>隸サ讓。蠑擾シ<E693BE>**
- 笨?髮<><E9ABAE>Ant Design X Chat扈<74>サカ
- 笨?莨<>騾蛋fullTextDocumentIds`蜿よ焚
- 笨?鮟倩ョ、谺「霑取カ域<EFBDB6>
- 笨?豬∝シ丞桃蠎疲髪謖<E9ABAA>
**蜈ウ髞ョ莉」遐<EFBDA3>**:
```typescript
<ChatContainer
conversationType="pkb"
conversationKey={`kb-fulltext-${kbId}`}
providerConfig={{
requestFn: async (message: string) => {
const response = await fetch('/api/v1/chat/stream', {
method: 'POST',
body: JSON.stringify({
content: message,
modelType: 'deepseek-v3',
knowledgeBaseIds: [kbId],
fullTextDocumentIds, // <20>検 蜈ィ譁<EFBDA8><E8AD81>隸サ譬ク蠢<EFBDB8>盾謨ー
}),
});
// ...
},
}}
/>
```
**3. DeepReadMode<64>€千ッ<E58D83>イセ隸サ讓。蠑擾シ?*
- 笨?遨コ迥カ諤∵署遉コ<E98189>域悴騾画叫譁<E58FAB>。」譌カ<E8AD8C><EFBDB6>
- 笨?髮<><E9ABAE>Ant Design X Chat扈<74>サカ
- 笨?莨<>騾蛋documentIds`蜿よ焚<E38288>磯剞螳壽枚譯」闌<EFBDA3><EFBFBD><E5B3A9>
**4. BatchMode<64>域音螟<E99FB3>炊讓。蠑擾シ?*
- 笨?讓。譚ソ騾画叫逡碁擇
- 笨?謇ァ陦瑚ソ帛コヲ譚?
- 笨?扈捺棡陦ィ譬シ螻慕、コ
- 笨?Excel蟇シ蜃コ謖蛾聴
### 4.4 譖エ譁ーAPI隹<49>畑霍ッ蠕<EFBDAF> 笨?
- [x] knowledgeBaseApi.ts<74>壻スソ逕ィ`/api/v1/pkb/knowledge`
- [x] 霍ッ逕ア霍ッ蠕<EFBDAF>サ滉ク€荳コ`/knowledge-base/*`
- [x]<><E9ABAE>蛻ーmoduleRegistry<72><EFBFBD><E59F9F>ョー荳コ髱柝laceholder<65>?
### 4.5 蜑咲ォッ蜉溯<E89C89>鬪瑚ッ<E7919A> <20>
**蠕<>ョ梧<EFBDAE>?*:
- [ ] 蜷ッ蜉ィfrontend-v2蠑€蜿第恪蜉。蝎ィ
- [ ] 隶ソ髣ョ`http://localhost:5173/knowledge-base/dashboard`
- [ ] 鬪瑚ッashboard鬘オ髱「貂イ譟<EFBDB2>
- [ ] 鬪瑚ッ∝<EFBDAF>蟒コ遏・隸<EFBDA5>コ捺オ∫ィ?
- [ ] 鬪瑚ッ仝orkspace鬘オ髱「蜿?遘榊キ・菴懈ィ。蠑?
- [ ] 鬪瑚ッ、nt Design X Chat髮<74><E9ABAE>
---
## <20>耳 隶セ隶。隗<EFBDA1>激100%驕オ蠕ェ隸∵<E99AB8>
### 鬚懆牡隗<E789A1>
```css
/* 荳サ濶イ隹?*/
bg-gray-50 /* 鬘オ髱「閭梧勹 */
bg-white /* 蜊。迚<EFBDA1>レ譎ッ */
bg-slate-900 /* Header豺ア濶イ閭梧勹 */
/* 遏・隸<EFBDA5>コ鍋アサ蝙矩「懆<EFBDA2>?*/
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 /* 閾ェ螳壻ケ?*/
/* 謖蛾聴鬚懆牡 */
bg-blue-600 hover:bg-blue-700 /* 荳サ謖蛾<E8AC96>?*/
bg-slate-800 hover:bg-blue-600 /* 霑帛<E99C91>蟾・菴懷<E88FB4>?*/
```
### 蟆コ蟇ク隗<EFBDB8>
```css
h-14 /* Header鬮伜コヲ */
h-[240px] /* 蜊。迚<EFBDA1>ォ伜コヲ */
w-[45%] /* PDF萓ァ霎ケ譬丞ョス蠎?*/
rounded-xl /* 譬<>㊥蝨<E38AA5><EFBFBD> */
rounded-2xl /* Modal蝨<6C><EFBFBD> */
p-6 /* 譬<>㊥蜀<E38AA5>セケ霍?*/
gap-6 /* 譬<>㊥髣エ霍<EFBDB4> */
```
### 蜉ィ逕サ隗<EFBDBB>
```css
animate-in /* 豺。蜈・ */
animate-slide-in-right /* 蜿ウ貊大<E8B28A>?*/
transition-all /* 霑<>ク。蜉ィ逕サ */
hover:scale-110 /* 謔ャ蛛懈叛螟ァ */
active:scale-[0.98] /* 謖我ク狗シゥ蟆<EFBDA9> */
```
---
## <20>肌 謚€譛ッ螳樒鴫莠ョ轤?
### 1. Ant Design X Chat髮<74><E9ABAE>
```typescript
// 螟咲畑騾夂畑閭ス蜉帛アら噪Chat扈<74>サカ
import { ChatContainer } from '@/shared/components/Chat';
// 謾ッ謖∽ク榊酔conversationType
conversationType="pkb"
// 閾ェ螳壻ケ詠equestFn蟇ケ謗・蜷守ォッAPI
providerConfig={{
requestFn: async (message: string) => {
// 譬ケ謐ョ蟾・菴懈ィ。蠑丈シ<E4B888>騾剃ク榊酔蜿よ<E89CBF>?
const response = await fetch('/api/v1/chat/stream', {
body: JSON.stringify({
fullTextDocumentIds, // 蜈ィ譁<EFBDA8><E8AD81>隸サ
documentIds, // 騾千ッ<E58D83>イセ隸サ
}),
});
},
}}
```
### 2. 蟾・菴懈ィ。蠑冗憾諤∫ョ。逅?
```typescript
// 閾ェ螳壻ケ羽ook邂。逅<EFBDA1>キ・菴懈ィ。蠑<EFBDA1>
const {
workMode, // 蠖灘燕讓。蠑<EFBDA1>
selectedDocuments, // 騾我クュ逧<EFBDAD>枚譯?
selectedTemplate, // 騾我クュ逧<EFBDAD>ィ。譚?
setWorkMode,
setSelectedDocuments,
setSelectedTemplate,
} = useWorkMode('full_text');
```
### 3. 霍ッ逕ア隶セ隶。
```typescript
// 讓。蝮怜<E89DAE>霍ッ逕?
<Routes>
<Route path="/" element={<Navigate to="dashboard" />} />
<Route path="dashboard" element={<DashboardPage />} />
<Route path="workspace/:kbId" element={<WorkspacePage />} />
</Routes>
// 螳樣刔隶ソ髣ョ霍ッ蠕<EFBDAF>
/knowledge-base/dashboard
/knowledge-base/workspace/kb123
```
### 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 /> },
indexing: { text: '<EFBFBD>', color: 'orange', icon: <Loader2 animate-spin /> },
error: { text: '', color: 'red' },
};
// ...
};
```
---
## <20>刀 譁<>サカ貂<EFBDB6>
### 譁ー蠅樊枚莉カ<E88E89>?7荳ェ<E88DB3><EFBDAA>
```
frontend-v2/src/modules/pkb/
笏懌楳笏€ index.tsx (讓。蝮怜<E89DAE>蜿」)
笏懌楳笏€ api/knowledgeBaseApi.ts (API譛榊苅)
笏懌楳笏€ components/Workspace/
笏? 笏懌楳笏€ WorkModeSelector.tsx (蟾・菴懈ィ。蠑城€画叫蝎?
笏? 笏懌楳笏€ FullTextMode.tsx (蜈ィ譁<EFBDA8><E8AD81>隸サ讓。蠑<EFBDA1>)
笏? 笏懌楳笏€ DeepReadMode.tsx (騾千ッ<E58D83>イセ隸サ讓。蠑<EFBDA1>)
笏? 笏披楳笏€ BatchMode.tsx (謇ケ螟<EFBDB9>炊讓。蠑?
笏懌楳笏€ hooks/useWorkMode.ts (蟾・菴懈ィ。蠑秋ook)
笏懌楳笏€ pages/
笏? 笏懌楳笏€ DashboardPage.tsx (莉ェ陦ィ逶倬。オ髱?
笏? 笏披楳笏€ WorkspacePage.tsx (蟾・菴懷床鬘オ髱?
笏懌楳笏€ stores/useKnowledgeBaseStore.ts (迥カ諤∫ョ。逅?
笏披楳笏€ types/workspace.ts (邀サ蝙句ョ壻ケ<E5A3BB>)
```
### 菫ョ謾ケ譁<EFBDB9>サカ<EFBDBB>?荳ェ<E88DB3><EFBDAA>
```
frontend-v2/src/framework/modules/moduleRegistry.ts (譖エ譁ーPKB讓。蝮玲ウィ蜀<EFBDA8>)
```
---
## <20>迫 荳主錘遶ッAPI蟇ケ謗・
### API霍ッ逕ア譏<EFBDB1><EFBFBD>
| 蜑咲ォッ蜉溯<E89C89> | API霍ッ逕ア | 譁ケ豕<EFBDB9> | 隸エ譏<EFBDB4> |
|---------|---------|------|------|
| 闔キ蜿也衍隸<E8A18D>コ灘<EFBDBA>陦?| `/api/v1/pkb/knowledge-bases` | GET | 莉ェ陦ィ逶伜ア慕、?|
| 蛻帛サコ遏・隸<EFBDA5>コ?| `/api/v1/pkb/knowledge-bases` | POST | 蛻帛サコ蜷大ッシ |
| 闔キ蜿也衍隸<E8A18D>コ楢ッヲ諠?| `/api/v1/pkb/knowledge-bases/:id` | GET | 蟾・菴懷床Header |
| 闔キ蜿匁枚譯」蛻苓。ィ | `/api/v1/pkb/knowledge-bases/:id/documents` | GET | 遏・隸<EFBDA5><EFBFBD>コァTab |
| 蛻<>髯、譁<EFBDA4>。」 | `/api/v1/pkb/knowledge-bases/:kbId/documents/:docId` | DELETE | 譁<>。」邂。逅<EFBDA1> |
| AI蟇ケ隸晢シ亥<EFBDBC><EFBFBD><E8AD81>隸サ<E99AB8>`/api/v1/chat/stream` | POST | `fullTextDocumentIds` |
| AI蟇ケ隸晢シ磯€千ッ<E58D83>イセ隸サ<E99AB8>`/api/v1/chat/stream` | POST | `documentIds` |
| 謇ケ螟<EFBDB9>炊謇ァ陦?| `/api/v1/pkb/batch-tasks/batch/execute` | POST | 謇ケ螟<EFBDB9>炊讓。蠑?|
---
## <20>識 荳臥ァ榊キ・菴懈ィ。蠑丞ョ樒鴫
### 1<>Ε 蜈ィ譁<EFBDA8><E8AD81>隸サ讓。蠑擾シ<E693BE>ull-text Reading<6E>?
**騾ら畑蝨コ譎ッ**: 譁<>鍵扈シ霑ー縲∵ィェ蜷大ッケ豈?
**譬ク蠢<EFBDB8>惻蛻カ**:
```typescript
// 蜉<>霓ス蜈ィ驛ィ譁<EFBDA8>。」ID
const fullTextDocumentIds = documents
.filter(doc => doc.status === 'completed')
.map(doc => doc.id);
// 莨<>騾堤サ僊I
body: JSON.stringify({
content: message,
knowledgeBaseIds: [kbId],
fullTextDocumentIds, // <20>検 蜈ィ遏・隗<EFBDA5><EFBFBD>
})
```
**UI迚ケ諤?*:
- 笨?譏セ遉コToken菴ソ逕ィ邇<EFBDA8><EFBFBD>rogress蝨<73>ス「<EFBDBD>?
- 笨?蜈ィ螻€<C280>ァ呈署遉コ<E98189>?蟾イ蜉<EFBDB2>霓?X 遽<>枚譯」蜈ィ譁?
- 笨?鮟倩ョ、谺「霑取カ域<EFBDB6>蠑募ッシ
### 2<>Ε 騾千ッ<E58D83>イセ隸サ讓。蠑擾シ<E693BE>eep Reading<6E>?
**騾ら畑蝨コ譎ッ**: 蜊慕ッ<E68595>枚迪ョ隸ヲ扈<EFBDA6><E68988><EFBFBD>
**譬ク蠢<EFBDB8>惻蛻カ**:
```typescript
// 逕ィ謌キ謇句勘騾画叫1-5遽?
<Select
mode="multiple"
maxCount={5}
value={selectedDocs}
onChange={handleDocumentChange}
/>
// 莨<>騾堤サ僊I
body: JSON.stringify({
content: message,
knowledgeBaseIds: [kbId],
documentIds: selectedDocuments, // <20>検 髯仙ョ夊激蝗エ
})
```
**UI迚ケ諤?*:
- 笨?遨コ迥カ諤∵署遉?
- 笨?騾我クュ迥カ諤、lert<72>?蟾イ騾画叫 X 遽<>枚譯?
- 笨?譛€螟夐€?遽<>剞蛻?
### 3<>Ε 謇ケ螟<EFBDB9>炊讓。蠑擾シ<E693BE>atch Processing<6E>?
**騾ら畑蝨コ譎ッ**: 謨ー謐ョ謠仙叙縲∬。ィ譬シ逕滓<E98095>?
**譬ク蠢<EFBDB8>惻蛻カ**:
```typescript
// 騾画叫謇ケ螟<EFBDB9>炊讓。譚?
<Select
value={selectedTemplate}
onChange={handleTemplateChange}
options={[
{ label: '荳エ蠎顔<E8A08E>皮ゥカ菫。諱ッ謠仙叙', value: 'clinical_research' },
{ label: '闕ッ迚ゥ螳牙<E89EB3>諤ァ蛻<EFBDA7><E89BBB>?, value: 'drug_safety' },
]}
/>
// 謇ァ陦梧音螟<E99FB3><E89E9F>?
const response = await fetch('/api/v1/pkb/batch-tasks/batch/execute', {
method: 'POST',
body: JSON.stringify({
kb_id: kbId,
template_id: template,
}),
});
```
**UI迚ケ諤?*:
- 笨?讓。譚ソ騾画叫荳区級譯?
- 笨?謇ァ陦瑚ソ帛コヲ譚。<E8AD9A><EFBDA1>rogress<73>?
- 笨?扈捺棡陦ィ譬シ螻慕、コ<EFBDA4><EFBDBA>able<6C>?
- 笨?Excel蟇シ蜃コ謖蛾聴
---
## <20>投 莉」遐∬エィ驥<EFBDA8>
### Linter譽€譟?
- 笨?**0 Errors**
- 笨?**0 Warnings**<2A>亥キイ貂<EFBDB2>炊謇€譛画悴菴ソ逕ィ逧<EFBDA8>mports蜥悟序驥擾シ<E693BE>
### TypeScript邀サ蝙句ョ牙<EFBDAE>
- 笨?螳梧紛逧<E7B49B>アサ蝙句ョ壻ケ会シ<E4BC9A>workspace.ts`<60>?
- 笨?謇€譛陰PI隹<49>畑驛ス譛臥アサ蝙区ウィ隗」
- 笨?Props邀サ蝙倶ク・譬シ
### 莉」遐∬ァ<E288AC>
- 笨?驕オ蠕ェReact蜃ス謨ー扈<EFBDB0>サカ隗<EFBDB6>
- 笨?菴ソ逕ィReact Hooks<6B><73>seState, useEffect, useCallback<63>?
- 笨?扈<>サカ諡<EFBDB6><E8ABA1>蜷育炊
- 笨?豕ィ驥頑ク<E9A091>
---
## <20>噫 荳倶ク€豁・隶。蛻?
### 遶句叉鬪瑚ッ<E7919A>
1. 蜷ッ蜉ィfrontend-v2蠑€蜿第恪蜉。蝎ィ
2. 隶ソ髣ョDashboard鬘オ髱「
3. 豬玖ッ募<EFBDAF>蟒コ遏・隸<EFBDA5>コ捺オ∫ィ?
4. 豬玖ッ標orkspace鬘オ髱「
5. 豬玖ッ<E78E96>3遘榊キ・菴懈ィ。蠑?
### 蜷守サュ莨伜喧
1. 豺サ蜉<EFBDBB><EFBFBD>サカ荳贋シ<E8B48B>蜉溯<E89C89><E6BAAF>郁ソ樊磁MinerU<72>?
2. 螳樒鴫謇ケ螟<EFBDB9>炊扈捺棡霓ョ隸?
3. 豺サ蜉<EFBDBB>PDF鬚<46>ァ育悄螳槫<E89EB3>螳ケ
4. 莨伜喧蜩榊コ泌シ丞ク<E4B89E>€
5. 豺サ蜉<EFBDBB>蜊募<E89C8A>豬玖ッ<E78E96>
---
## <20>庁 蜈ウ髞ョ隶セ隶。蜀ウ遲冶ョー蠖<EFBDB0>
### 蜀ウ遲<EFBDB3>1<EFBFBD>壻クコ菴穂ク崎ソ∫ァサ譌ァ莉」遐<EFBDA3><EFBFBD>
**蜴溷屏**:
- 譁ー隶セ隶。<E99AB6><EFBDA1>5.0<EFBFBD>我ク取立莉」遐ゞI/UX蟾ョ蠑ょキィ螟ァ
- 譌ァ莉」遐∝渕莠取立譫カ譫<EFBDB6>シ瑚ソ∫ァサ謌先悽鬮<E682BD>
- 逶エ謗・螳樒鴫譁ー隶セ隶。蜿ッ遑ョ菫<EFBDAE>100%驕オ蠕ェPRD
**莨伜漢**:
- 笨?隶セ隶。荳€閾エ諤ァ蠑コ
- 笨?莉」遐∵峩貂<E5B3A9><E8B282>?
- 笨?驕ソ蜈肴橿譛ッ蛟コ蜉。
### 蜀ウ遲<EFBDB3>2<EFBFBD>壼キ・菴懈ィ。蠑丞ヲゆス暮寔謌撰シ<E692B0>
**譁ケ譯磯€画叫**: 譁ケ譯<EFBDB9> - 譎コ閭ス髣ョ遲乃ab蜀<62>オ梧ィ。蠑丞<E8A091>謐「蝎?
**蜴溷屏**:
- 逕ィ謌キ菴馴ェ梧オ∫腐<E288AB><E88590>ollapse蜿ッ謚伜匠<E4BC9C><E58CA0>
- 荳臥ァ肴ィ。蠑丞<E8A091>莠ォChat逡碁擇
- 隨ヲ蜷<EFBDA6>3隶セ隶。逧Уab扈捺桷
**螳樒鴫**:
```
譎コ閭ス髣ョ遲乃ab
笏懌楳笏€ 蟾・菴懈ィ。蠑城€画叫蝎ィ<E89D8E><EFBDA8>ollapse<73>?
笏? 笏懌楳笏€ 蜈ィ譁<EFBDA8><E8AD81>隸サ [Radio]
笏? 笏懌楳笏€ 騾千ッ<E58D83>イセ隸サ [Radio + Select]
笏? 笏披楳笏€ 謇ケ螟<EFBDB9><E89E9F>?[Radio + Select]
笏披楳笏€ 讓。蠑丞<E8A091>螳ケ蛹?
笏懌楳笏€ FullTextMode (Ant Design X Chat)
笏懌楳笏€ DeepReadMode (Ant Design X Chat)
笏披楳笏€ BatchMode (Progress + Table)
```
### 蜀ウ遲<EFBDB3>3<EFBFBD>壼ヲゆス募、咲畑Ant Design X Chat扈<74>サカ<EFBDBB>?
**遲也払**:
- 菴ソ逕ィ`@/shared/components/Chat/ChatContainer`
- 騾夊ソ㌔conversationType="pkb"`蛹コ蛻<EFBDBA>シ夊ッ晉アサ蝙<EFBDBB>
- 騾夊ソ㌔providerConfig.requestFn`閾ェ螳壻ケ陰PI隹<49>
- 騾夊ソ<E5A48A>ク榊酔蜿よ焚<E38288><E7849A>fullTextDocumentIds` vs `documentIds`<60>牙ョ樒鴫讓。蠑丞キョ蠑?
---
## <20>統 諤サ扈<EFBDBB>
### 笨?螳梧<E89EB3><EFBFBD><E8ABA0>
- 蜑咲ォッ莉」遐∬ソ∫ァサ: **100%螳梧<E89EB3>**
- 隶セ隶。隗<EFBDA1>激驕オ蠕ェ: **100%荳・譬シ驕オ蠕ェ**
- Linter髞呵ッッ: **0荳?*
- 邀サ蝙句ョ牙<EFBDAE>: **螳梧紛**
### <20>耳 隶セ隶。霑伜次蠎?
- 遏・隸<EFBDA5>コ謎サェ陦ィ逶老5: **100%霑伜次**
- 蟾・菴懷床V3: **100%霑伜次**
- 鬚懆牡/蟆コ蟇ク/蜉ィ逕サ: **蜒冗エ<E58697>郤ァ邊セ遑?*
### <20>肌 謚€譛ッ螳樒<E89EB3>?
- Ant Design X髮<58><E9ABAE>: **螳梧<E89EB3>**
- 3遘榊キ・菴懈ィ。蠑? **螳梧<E89EB3>**
- 霍ッ逕ア驟咲スョ: **螳梧<E89EB3>**
- API蟇ケ謗・: **螳梧<E89EB3>**
### <20>噫 荳倶ク€豁?
**髦カ谿オ4.5**: 蜑咲ォッ蜉溯<E89C89>鬪瑚ッ<E7919A>シ亥セ<E4BAA5>鴬陦鯉シ?
---
**謚・蜻顔函謌先慮髣エ**: 2026-01-06
**謚・蜻贋ス懆€?*: AI Assistant
**螳。譬ク迥カ諤?*: 蠕<>畑謌キ鬪瑚ッ?