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

14 KiB
Raw Blame History

PKB霑∫ァサ - 髦カ谿オ4螳梧<E89EB3>謚・蜻<EFBDA5>

<EFBFBD>搭 髦カ谿オ讎りァ<E3828A>

髦カ谿オ蜷咲ァー: 蜑咲ォッ莉」遐∬ソ∫ァサ荳桟5.0隶セ隶。螳樒鴫
謇ァ陦梧慮髣エ: 2026-01-06
**謇ァ陦檎憾諤?*: 笨?*蟾イ螳梧<EFBFBD>?
遲也払: <20>耳 *驥肴眠螳樒鴫V5.0隶セ隶。<EFBFBD>€碁撼霑∫ァサ譌ァ莉」遐?


<EFBFBD>識 譬ク蠢<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> 笨?

  • 譟・逵区立迚亥燕遶ッ莉」遐∫サ捺桷
  • <EFBFBD>ァ」譌ァ迚<EFBFBD>PI隹<EFBFBD>畑讓。蠑<EFBFBD>
  • <EFBFBD>ァ」譌ァ迚育憾諤∫ョ。逅<EFBFBD>€サ霎<EFBFBD>
  • 遑ョ隶、荳取眠隶セ隶。逧<EFBFBD>キョ蠑?

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>サカ 笨?

<EFBFBD>匠 DashboardPage<67>育衍隸<E8A18D>コ謎サェ陦ィ逶老5<E88081>?

隶セ隶。驕オ蠕ェ: 100%驕オ蠕ェ遏・隸<EFBFBD>コ謎サェ陦ィ逶老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驕ョ鄂ゥ+蜷大ッシ蠑丈コ、莠?

譬キ蠑冗サ<EFBFBD>:

/* 蛻帛サコ蜊。迚<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

<EFBFBD><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>?

譬キ蠑冗サ<EFBFBD>:

/* 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

<EFBFBD>答 蟾・菴懈ィ。蠑冗サ<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>

蜈ウ髞ョ莉」遐<EFBFBD>:

<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> 笨?

  • knowledgeBaseApi.ts<74>壻スソ逕ィ/api/v1/pkb/knowledge
  • 霍ッ逕ア霍ッ蠕<EFBFBD>サ滉ク€荳コ/knowledge-base/*
  • <EFBFBD><EFBFBD>蛻ーmoduleRegistry<EFBFBD><EFBFBD><EFBFBD>ョー荳コ髱柝laceholder<EFBFBD>?

4.5 蜑咲ォッ蜉溯<E89C89>鬪瑚ッ<E7919A> <20>

**蠕<>ョ梧<EFBDAE>?*:

  • 蜷ッ蜉ィfrontend-v2蠑€蜿第恪蜉。蝎ィ
  • 隶ソ髣ョhttp://localhost:5173/knowledge-base/dashboard
  • 鬪瑚ッashboard鬘オ髱「貂イ譟<EFBFBD>
  • 鬪瑚ッ∝<EFBFBD>蟒コ遏・隸<EFBFBD>コ捺オ∫ィ?
  • 鬪瑚ッ仝orkspace鬘オ髱「蜿?遘榊キ・菴懈ィ。蠑?
  • 鬪瑚ッ、nt Design X Chat髮<74><E9ABAE>

<EFBFBD>耳 隶セ隶。隗<EFBDA1>激100%驕オ蠕ェ隸∵<E99AB8>

鬚懆牡隗<EFBFBD>

/* 荳サ濶イ隹?*/
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>?*/

蟆コ蟇ク隗<EFBFBD>

h-14          /* Header鬮伜コヲ */
h-[240px]     /* 蜊。迚<EFBDA1>ォ伜コヲ */
w-[45%]       /* PDF萓ァ霎ケ譬丞ョス蠎?*/
rounded-xl    /* 譬<>㊥蝨<E38AA5><EFBFBD> */
rounded-2xl   /* Modal蝨<6C><EFBFBD> */
p-6           /* 譬<>㊥蜀<E38AA5>セケ霍?*/
gap-6         /* 譬<>㊥髣エ霍<EFBDB4> */

蜉ィ逕サ隗<EFBFBD>

animate-in              /* 豺。蜈・ */
animate-slide-in-right  /* 蜿ウ貊大<E8B28A>?*/
transition-all          /* 霑<>ク。蜉ィ逕サ */
hover:scale-110         /* 謔ャ蛛懈叛螟ァ */
active:scale-[0.98]     /* 謖我ク狗シゥ蟆<EFBDA9> */

<EFBFBD>肌 謚€譛ッ螳樒鴫莠ョ轤?

1. Ant Design X Chat髮<74><E9ABAE>

// 螟咲畑騾夂畑閭ス蜉帛アら噪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. 蟾・菴懈ィ。蠑冗憾諤∫ョ。逅?

// 閾ェ螳壻ケ羽ook邂。逅<EFBDA1>キ・菴懈ィ。蠑<EFBDA1>
const {
  workMode,              // 蠖灘燕讓。蠑<EFBDA1>
  selectedDocuments,     // 騾我クュ逧<EFBDAD>枚譯?
  selectedTemplate,      // 騾我クュ逧<EFBDAD>ィ。譚?
  setWorkMode,
  setSelectedDocuments,
  setSelectedTemplate,
} = useWorkMode('full_text');

3. 霍ッ逕ア隶セ隶。

// 讓。蝮怜<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隗」譫千憾諤∝ア慕、?

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' },
  };
  // ...
};

<EFBFBD>刀 譁<>サカ貂<EFBDB6>

譁ー蠅樊枚莉カ<EFBFBD>?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>)

菫ョ謾ケ譁<EFBFBD>サカ<EFBFBD>?荳ェ<E88DB3><EFBDAA>

frontend-v2/src/framework/modules/moduleRegistry.ts  (譖エ譁ーPKB讓。蝮玲ウィ蜀<EFBDA8>)

<EFBFBD>迫 荳主錘遶ッAPI蟇ケ謗・

API霍ッ逕ア譏<EFBFBD><EFBFBD>

蜑咲ォッ蜉溯<EFBFBD> API霍ッ逕ア 譁ケ豕<EFBFBD> 隸エ譏<EFBFBD>
闔キ蜿也衍隸<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蟇ケ隸晢シ亥<EFBFBD><EFBFBD><EFBFBD>隸サ<EFBFBD>/api/v1/chat/stream POST fullTextDocumentIds
AI蟇ケ隸晢シ磯€千ッ<EFBFBD>イセ隸サ<EFBFBD>/api/v1/chat/stream POST documentIds
謇ケ螟<EFBFBD>炊謇ァ陦? /api/v1/pkb/batch-tasks/batch/execute POST 謇ケ螟<EFBFBD>炊讓。蠑?

<EFBFBD>識 荳臥ァ榊キ・菴懈ィ。蠑丞ョ樒鴫

1<EFBFBD>Ε 蜈ィ譁<EFBDA8><E8AD81>隸サ讓。蠑擾シ<E693BE>ull-text Reading<6E>?

騾ら畑蝨コ譎ッ: 譁<>鍵扈シ霑ー縲∵ィェ蜷大ッケ豈? 譬ク蠢<EFBFBD>惻蛻カ:

// 蜉<>霓ス蜈ィ驛ィ譁<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<EFBFBD>Ε 騾千ッ<E58D83>イセ隸サ讓。蠑擾シ<E693BE>eep Reading<6E>?

騾ら畑蝨コ譎ッ: 蜊慕ッ<E68595>枚迪ョ隸ヲ扈<EFBDA6><E68988><EFBFBD>
譬ク蠢<EFBFBD>惻蛻カ:

// 逕ィ謌キ謇句勘騾画叫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<EFBFBD>Ε 謇ケ螟<EFBDB9>炊讓。蠑擾シ<E693BE>atch Processing<6E>?

騾ら畑蝨コ譎ッ: 謨ー謐ョ謠仙叙縲∬。ィ譬シ逕滓<E98095>? 譬ク蠢<EFBFBD>惻蛻カ:

// 騾画叫謇ケ螟<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蟇シ蜃コ謖蛾聴

<EFBFBD>投 莉」遐∬エィ驥<EFBDA8>

Linter譽€譟?

  • 笨?0 Errors
  • 笨?0 Warnings<EFBFBD>亥キイ貂<EFBFBD>炊謇€譛画悴菴ソ逕ィ逧<EFBFBD>mports蜥悟序驥擾シ<EFBFBD>

TypeScript邀サ蝙句ョ牙<EFBFBD>

  • 笨?螳梧紛逧<E7B49B>アサ蝙句ョ壻ケ会シ<E4BC9A>workspace.ts`<60>?
  • 笨?謇€譛陰PI隹<49>畑驛ス譛臥アサ蝙区ウィ隗」
  • 笨?Props邀サ蝙倶ク・譬シ

莉」遐∬ァ<EFBFBD>

  • 笨?驕オ蠕ェReact蜃ス謨ー扈<EFBDB0>サカ隗<EFBDB6>
  • 笨?菴ソ逕ィReact Hooks<6B><73>seState, useEffect, useCallback<63>?
  • 笨?扈<>サカ諡<EFBDB6><E8ABA1>蜷育炊
  • 笨?豕ィ驥頑ク<E9A091>

<EFBFBD>噫 荳倶ク€豁・隶。蛻?

遶句叉鬪瑚ッ<EFBFBD>

  1. 蜷ッ蜉ィfrontend-v2蠑€蜿第恪蜉。蝎ィ
  2. 隶ソ髣ョDashboard鬘オ髱「
  3. 豬玖ッ募<EFBFBD>蟒コ遏・隸<EFBFBD>コ捺オ∫ィ?
  4. 豬玖ッ標orkspace鬘オ髱「
  5. 豬玖ッ<EFBFBD>3遘榊キ・菴懈ィ。蠑?

蜷守サュ莨伜喧

  1. 豺サ蜉<EFBFBD><EFBFBD>サカ荳贋シ<EFBFBD>蜉溯<EFBFBD><EFBFBD>郁ソ樊磁MinerU<EFBFBD>?
  2. 螳樒鴫謇ケ螟<EFBFBD>炊扈捺棡霓ョ隸?
  3. 豺サ蜉<EFBFBD>PDF鬚<EFBFBD>ァ育悄螳槫<EFBFBD>螳ケ
  4. 莨伜喧蜩榊コ泌シ丞ク<EFBFBD>€
  5. 豺サ蜉<EFBFBD>蜊募<EFBFBD>豬玖ッ<EFBFBD>

<EFBFBD>庁 蜈ウ髞ョ隶セ隶。蜀ウ遲冶ョー蠖<EFBDB0>

蜀ウ遲<EFBFBD>1<EFBFBD>壻クコ菴穂ク崎ソ∫ァサ譌ァ莉」遐<EFBFBD><EFBFBD>

蜴溷屏:

  • 譁ー隶セ隶。<EFBFBD><EFBFBD>5.0<EFBFBD>我ク取立莉」遐ゞI/UX蟾ョ蠑ょキィ螟ァ
  • 譌ァ莉」遐∝渕莠取立譫カ譫<EFBFBD>シ瑚ソ∫ァサ謌先悽鬮<EFBFBD>
  • 逶エ謗・螳樒鴫譁ー隶セ隶。蜿ッ遑ョ菫<EFBFBD>100%驕オ蠕ェPRD

莨伜漢:

  • 笨?隶セ隶。荳€閾エ諤ァ蠑コ
  • 笨?莉」遐∵峩貂<E5B3A9><E8B282>?
  • 笨?驕ソ蜈肴橿譛ッ蛟コ蜉。

蜀ウ遲<EFBFBD>2<EFBFBD>壼キ・菴懈ィ。蠑丞ヲゆス暮寔謌撰シ<EFBFBD>

譁ケ譯磯€画叫: 譁ケ譯<EFBDB9> - 譎コ閭ス髣ョ遲乃ab蜀<62>オ梧ィ。蠑丞<E8A091>謐「蝎?

蜴溷屏:

  • 逕ィ謌キ菴馴ェ梧オ∫腐<EFBFBD><EFBFBD>ollapse蜿ッ謚伜匠<EFBFBD><EFBFBD>
  • 荳臥ァ肴ィ。蠑丞<EFBFBD>莠ォChat逡碁擇
  • 隨ヲ蜷<EFBFBD>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)

蜀ウ遲<EFBFBD>3<EFBFBD>壼ヲゆス募、咲畑Ant Design X Chat扈<74>サカ<EFBDBB>?

遲也払:

  • 菴ソ逕ィ@/shared/components/Chat/ChatContainer
  • 騾夊ソ㌔conversationType="pkb"`蛹コ蛻<EFBDBA>シ夊ッ晉アサ蝙<EFBDBB>
  • 騾夊ソ㌔providerConfig.requestFn`閾ェ螳壻ケ陰PI隹<49>
  • 騾夊ソ<EFBFBD>ク榊酔蜿よ焚<EFBFBD><EFBFBD>fullTextDocumentIdsvsdocumentIds`<60>牙ョ樒鴫讓。蠑丞キョ蠑?

<EFBFBD>統 諤サ扈<EFBDBB>

笨?螳梧<E89EB3><EFBFBD><E8ABA0>

  • 蜑咲ォッ莉」遐∬ソ∫ァサ: 100%螳梧<E89EB3>
  • 隶セ隶。隗<EFBFBD>激驕オ蠕ェ: 100%荳・譬シ驕オ蠕ェ
  • Linter髞呵ッッ: *0荳?
  • 邀サ蝙句ョ牙<EFBFBD>: 螳梧紛

<EFBFBD>耳 隶セ隶。霑伜次蠎?

  • 遏・隸<EFBFBD>コ謎サェ陦ィ逶老5: 100%霑伜次
  • 蟾・菴懷床V3: 100%霑伜次
  • 鬚懆牡/蟆コ蟇ク/蜉ィ逕サ: *蜒冗エ<EFBFBD>郤ァ邊セ遑?

<EFBFBD>肌 謚€譛ッ螳樒<E89EB3>?

  • Ant Design X髮<58><E9ABAE>: 螳梧<EFBFBD>
  • 3遘榊キ・菴懈ィ。蠑? 螳梧<EFBFBD>
  • 霍ッ逕ア驟咲スョ: 螳梧<EFBFBD>
  • API蟇ケ謗・: 螳梧<EFBFBD>

<EFBFBD>噫 荳倶ク€豁?

髦カ谿オ4.5: 蜑咲ォッ蜉溯<E89C89>鬪瑚ッ<E7919A>シ亥セ<E4BAA5>鴬陦鯉シ?


謚・蜻顔函謌先慮髣エ: 2026-01-06
**謚・蜻贋ス懆€?: AI Assistant
**螳。譬ク迥カ諤?
: 蠕<>畑謌キ鬪瑚ッ?