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%)
7.0 KiB
<EFBFBD>颱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>航挽霈⊥<EFBFBD>獢<EFBFBD><EFBFBD><EFBFBD>餌<EFBFBD>蝘𤑳<EFBFBD><EFBFBD>箄<EFBFBD><EFBFBD>唳旿皜<EFBFBD><EFBFBD>撟喳蝱
| <EFBFBD><EFBFBD>﹝蝐餃<EFBFBD> | System Architecture Document (SAD) |
|---|---|
| 撖孵<EFBFBD> PRD | PRD_<EFBFBD>颱<EFBFBD>_<EFBFBD>餌<EFBFBD>蝘𤑳<EFBFBD><EFBFBD>箄<EFBFBD><EFBFBD>唳旿皜<EFBFBD><EFBFBD>撟喳蝱.md |
| <EFBFBD><EFBFBD>𧋦 | V1.0 |
| *<EFBFBD>嗆<EFBFBD>? | Final Draft |
| <EFBFBD>詨<EFBFBD><EFBFBD>格<EFBFBD> | 蝖桃<EFBFBD>撟喳蝱<EFBFBD><EFBFBD><EFBFBD>銝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>舀<EFBFBD><EFBFBD><EFBFBD><EFBFBD>璇喟<EFBFBD><EFBFBD>𡁶鍂璅∪<EFBFBD>銝𦒘<EFBFBD><EFBFBD>冽芋<EFBFBD>㛖<EFBFBD><EFBFBD><EFBFBD><EFBFBD>航器<EFBFBD>䕘<EFBFBD><EFBFBD><EFBFBD>紡憭𡁜𣪧<EFBFBD>笔僎銵<EFBFBD><EFBFBD><EFBFBD>㻫<EFBFBD>? |
1. <20>颱<EFBFBD>蝟餌<E89D9F><E9A48C>嗆<EFBFBD><E59786>?(System Architecture)
撟喳蝱<EFBFBD><EFBFBD>鍂 <EFBFBD>𨅯凝<EFBFBD>滚𦛚<EFBFBD>硋<EFBFBD>雿?(Modular Monolith)<29>? <20>?*<2A>輶FF + Worker<65>?* <20>嗆<EFBFBD><E59786><EFBFBD><EFBFBD>蝡舐<E89DA1>銝<EFBFBD><E98A9D>亙藁嚗<E89781><E59A97>蝡舀<E89DA1><E88880>蠘<EFBFBD><E8A098><EFBFBD><EFBFBD><EFBFBD>滚𦛚<E6BB9A>𡝗芋<F0A19D97>𨰜<EFBFBD>?
graph TD
subgraph Client_Layer [<5B>滨垢鈭支<E988AD>撅?(Browser)]
Portal[撌乩<E6928C><E4B9A9>?(Portal)]
ToolA_UI[撌亙<E6928C>A: 頞<>漣<EFBFBD><E6BCA3>僎<EFBFBD>沔]
ToolB_UI[撌亙<E6928C>B: 蝏𤘪<E89D8F><F0A498AA>𡝗㦤<F0A19D97>其犖]
ToolC_UI[撌亙<E6928C>C: 蝘𤑳<E89D98>蝻𤥁<E89DBB><F0A4A581>沔]
end
subgraph Gateway\_Layer \[蝵穃<E89DB5>銝舘<E98A9D><E88898><EFBFBD><EFBFBD>\]
Nginx\[Nginx / Load Balancer\]
BFF\[Node.js BFF (Fastify)\]
end
subgraph Service\_Layer \[銝𡁜𦛚<F0A1819C>滚𦛚撅<F0A69B9A>]
Auth\[霈方<E99C88><E696B9>滚𦛚\]
Asset\[韏<>漣蝞∠<E89D9E><E288A0>滚𦛚\]
subgraph Workers \[撘<>郊霈∠<E99C88><E288A0><EFBFBD>黎\]
WorkerA\[<5B><>僎撘閙<E69298> (Stream)\]
WorkerB\[AI 撘閙<E69298> (LangChain)\]
end
end
subgraph Storage\_Layer \[摮睃<E691AE>撅<EFBFBD>]
PG\[(PostgreSQL \- 銝𡁜𦛚<F0A1819C>唳旿)\]
Redis\[(Redis \- <20>笔<EFBFBD>/蝻枏<E89DBB>)\]
MinIO\[(MinIO/S3 \- <20><>辣摮睃<E691AE>)\]
end
Client\_Layer \--\> Nginx \--\> BFF
BFF \--\> Auth
BFF \--\> Asset
BFF \--隞餃𦛚<E9A483><F0A69B9A><EFBFBD>--\> Redis
Redis \--瘨<>晶--\> WorkerA & WorkerB
ToolC\_UI \--Local First--\> IndexedDB\[(Browser DB)\]
ToolC\_UI \--敹怎<E695B9><E6808E>峕郊--\> BFF
2. <20>𡁶鍂<F0A181B6><E98D82><EFBFBD>臬抅摨?(The Common Foundation)
餈䠷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>舀<EFBFBD>韐舐忽<EFBFBD><EFBFBD><EFBFBD>㗇芋<EFBFBD>梹<EFBFBD><EFBFBD>臬𣪧<EFBFBD>笔<EFBFBD>憿餌<EFBFBD>銝<EFBFBD><EFBFBD>萄儐<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
2.1 <20>滨垢<E6BBA8>𡁶鍂<F0A181B6>?(Frontend Core)
| 蝏<EFBFBD>辣 | <EFBFBD>匧<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|
| 獢<EFBFBD>沲 | React 19 | <EFBFBD>拍鍂<EFBFBD><EFBFBD><EFBFBD>啁<EFBFBD> Hooks <20><>僎<EFBFBD>𤑳鸌<F0A491B3>扼<EFBFBD>? |
| <EFBFBD><EFBFBD>遣撌亙<EFBFBD> | Vite 5.x | <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撱綽<EFBFBD><EFBFBD>舀<EFBFBD> HMR<4D>? |
| 霂剛<EFBFBD> | TypeScript 5.x | 撘箏<EFBFBD>撘箇掩<EFBFBD>页<EFBFBD><EFBFBD>滚<EFBFBD>蝡臬<EFBFBD>鈭怎掩<EFBFBD>见<EFBFBD>銋?(shared-types)<29>? |
| *<EFBFBD>瑕<EFBFBD>摨? | Tailwind CSS | 蝏煺<EFBFBD> UI 憌擧聢嚗<E881A2>翰<EFBFBD>笔<EFBFBD><E7AC94>㻫<EFBFBD>? |
| *<EFBFBD>暹<EFBFBD>摨? | Lucide React | 憌擧聢蝏煺<EFBFBD><EFBFBD><EFBFBD>蝠<EFBFBD>讐漣 SVG <20>暹<EFBFBD><E69AB9>? |
| 頝舐眏 | React Router v6 | 蝞∠<EFBFBD> Portal 銝𤾸<E98A9D>銝?Tool 銋钅𡢿<E99285><F0A1A2BF>楝<EFBFBD>勗<EFBFBD>憟𨰜<E6869F>? |
| <EFBFBD>唳旿霂瑟<EFBFBD> | SWR <20>?TanStack Query | 憭<EFBFBD><EFBFBD> API 霂瑟<E99C82><E7919F><EFBFBD><EFBFBD>摮塩<E691AE><E5A1A9>誑<EFBFBD>𠹺遙<F0A0B9BA>∠𠶖<E288A0><F0A0B696><EFBFBD>頧株砭 (Polling)<EFBFBD>? |
2.2 <20>𡒊垢<F0A1928A>𡁶鍂<F0A181B6>?(Backend Core)
| 蝏<EFBFBD>辣 | <EFBFBD>匧<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|
| *餈鞱<EFBFBD><EFBFBD>? | Node.js 22 (LTS) | 靽脲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?LTS <20><>𧋦<EFBFBD>? |
| Web 獢<>沲 | Fastify 5.x | 擃䀹<EFBFBD>扯<EFBFBD>嚗䔶<EFBFBD>撘<EFBFBD><EFBFBD><EFBFBD>嚗玺chema <20>⊿<EFBFBD><E28ABF>见末<E8A781>? |
| ORM | Prisma 6 | 蝐餃<EFBFBD>摰匧<EFBFBD><EFBFBD><EFBFBD>㺭<EFBFBD>桀<EFBFBD><EFBFBD>滢<EFBFBD>嚗峕𣈲<EFBFBD>?Schema Migration<6F>? |
| <EFBFBD><EFBFBD>㺭<EFBFBD>⊿<EFBFBD> | Zod | 餈鞱<EFBFBD><EFBFBD>?Schema <20>⊿<EFBFBD>嚗<EFBFBD>虾<EFBFBD><E899BE><EFBFBD> TypeScript 蝐餃<E89D90><E9A483>? |
| <EFBFBD>亙<EFBFBD> | Winston / Pino | 蝏𤘪<EFBFBD><EFBFBD>?JSON <20>亙<EFBFBD><E4BA99>? |
2.3 <20>箇<EFBFBD>霈暹鴌<E69AB9>?(Infrastructure)
| 蝏<EFBFBD>辣 | <EFBFBD>匧<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|
| *<EFBFBD>唳旿摨? | PostgreSQL 15 | 摮睃<EFBFBD><EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD>遙<EFBFBD>~<EFBFBD><EFBFBD><EFBFBD>鈭批<EFBFBD><EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝏𤘪<EFBFBD> (JSONB)<29>? |
| 蝻枏<EFBFBD>/<2F>笔<EFBFBD> | Redis 7 | 餈䠷<EFBFBD><EFBFBD>?Redis <20>W<EFBFBD>蝻枏<E89DBB>嚗䔶<E59A97><E494B6>?BullMQ <20><><EFBFBD>蝡胯<E89DA1>? |
| <EFBFBD><EFBFBD>辣摮睃<EFBFBD> | MinIO / AWS S3 | 摮睃<EFBFBD><EFBFBD>冽<EFBFBD>銝𠹺<EFBFBD><EFBFBD>?Excel<65><6C>DF 隞亙<E99A9E><E4BA99><EFBFBD><EFBFBD><EFBFBD><EFBFBD>葉<EFBFBD>湔<EFBFBD>隞嗚<E99A9E>? |
3. 璅∪<E79285>銝梶鍂<E6A2B6><E98D82><EFBFBD>舀<EFBFBD> (Module-Specific Stack)
<EFBFBD><EFBFBD>笆銝滚<EFBFBD><EFBFBD>箸艶<EFBFBD><EFBFBD>鸌畾𢠃<EFBFBD>瘙<EFBFBD><EFBFBD><EFBFBD><EFBFBD>極<EFBFBD>瑕<EFBFBD><EFBFBD>乩<EFBFBD><EFBFBD>孵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>舐<EFBFBD>隞嗚<EFBFBD>?
3.1 撌亙<E6928C> A嚗朞<E59A97>蝥批<E89DA5>撟嗅膥 (IO 撖<><E69296><EFBFBD>?
*<2A>詨<EFBFBD><E8A9A8>烐<EFBFBD>嚗𡁜之<F0A1819C><E4B98B>辣瘚<E8BEA3><E7989A>憭<EFBFBD><E686AD><EFBFBD><EFBFBD>𠯫<EFBFBD>蠘圾<E8A098>僐<EFBFBD><E58390><EFBFBD>撣<EFBFBD>龪<EFBFBD>溻<EFBFBD>?
| 憸<EFBFBD><EFBFBD> | 銝梶鍂蝏<EFBFBD>辣 | <EFBFBD>匧<EFBFBD><EFBFBD><EFBFBD>眏 |
|---|---|---|
| <EFBFBD>𡒊垢 (Excel) | ExcelJS | <EFBFBD>豢<EFBFBD> SheetJS嚗<53><E59A97>撖?Stream (瘚? <20><>𣈲<EFBFBD><F0A388B2>凒憟踝<E6869F><E8B89D>賢<EFBFBD><E8B3A2><EFBFBD><EFBFBD>餈<EFBFBD><E9A488>摮㗛<E691AE><E3979B>嗥<EFBFBD>憭扳<E686AD>隞嗚<E99A9E>? |
| <EFBFBD>𡒊垢 (Date) | Day.js + CustomParseFormat | 閫<EFBFBD><EFBFBD> Excel <20><>僚<EFBFBD><E5839A>𠯫<EFBFBD><F0A0AFAB>聢撘?(44927, 2023/1/1)嚗諹蝠<E8ABB9>譍<EFBFBD>撘箏之<E7AE8F>? |
| 撘<EFBFBD>郊<EFBFBD>笔<EFBFBD> | BullMQ | 憭<EFBFBD><EFBFBD><EFBFBD>埈𧒄<EFBFBD><EFBFBD>僎隞餃𦛚嚗峕𣈲<EFBFBD><EFBFBD><EFBFBD>摨行<EFBFBD><EFBFBD>乓<EFBFBD>? |
| <EFBFBD>滨垢蝏<EFBFBD>辣 | Ant Design Steps / Upload | 敹恍<EFBFBD>笔<EFBFBD><EFBFBD>啣<EFBFBD>撖澆<EFBFBD> UI<55>? |
3.2 撌亙<E6928C> B嚗𡁶<E59A97><F0A181B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>箏膥鈭?(API/霈∠<E99C88>撖<EFBFBD><E69296><EFBFBD>?
*<2A>詨<EFBFBD><E8A9A8>烐<EFBFBD>嚗匁LM 蝻𡝗<E89DBB><F0A19D97><EFBFBD><EFBFBD>璅∪<E79285>撟嗅<E6929F><E59785><EFBFBD><EFBFBD><EFBFBD>祆<EFBFBD>撖嫘<E69296>?
| 憸<EFBFBD><EFBFBD> | 銝梶鍂蝏<EFBFBD>辣 | <EFBFBD>匧<EFBFBD><EFBFBD><EFBFBD>眏 |
|---|---|---|
| <EFBFBD>𡒊垢 (AI) | LangChain.js | 蝏煺<EFBFBD> DeepSeek <20>?Qwen <20><><EFBFBD><EFBFBD>冽𦻖<E586BD><F0A6BB96><EFBFBD>蝞∠<E89D9E> Prompt Template<74>? |
| <EFBFBD>𡒊垢 (Diff) | diff-match-patch (Google) | 霈∠<EFBFBD>銝支葵璅∪<EFBFBD>颲枏枂<EFBFBD><EFBFBD><EFBFBD><EFBFBD>砍榆撘<EFBFBD><EFBFBD><EFBFBD>𤥁<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>擃䀝漁雿滨蔭<EFBFBD>? |
| <EFBFBD>𡒊垢 (瘥𥪜笆) | Lodash / Dice Coefficient | <EFBFBD>其<EFBFBD> JSON 撖寡情<E5AFA1><E68385>楛撅<E6A59B><E69285>撖孵<E69296>摮㛖泵銝脩㮾隡澆漲霈∠<E99C88><E288A0>? |
| <EFBFBD>滨垢 (Grid) | TanStack Table (Headless) | <EFBFBD>牐蛹<EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD>摨血<EFBFBD><EFBFBD>嗯<EFBFBD>𨅯<EFBFBD>蝒<EFBFBD><EFBFBD><EFBFBD><EFBFBD>聢<EFBFBD>萘<EFBFBD> UI (撌血𢰧撟嗆<E6929F><E59786>厰僼)嚗峵eadless 摨𤘪<E691A8> AntD Table <20>渡<EFBFBD>瘣颯<E798A3>? |
3.3 撌亙<E6928C> C嚗𡁶<E59A97><F0A181B6>娍㺭<E5A88D>桃<EFBFBD>颲穃膥 (鈭支<E988AD>撖<EFBFBD><E69296><EFBFBD>?
*<2A>詨<EFBFBD><E8A9A8>烐<EFBFBD>嚗𡁜<E59A97>蝡舫<E89DA1><E888AB>扯<EFBFBD>皜脫<E79A9C><E884AB><EFBFBD>𧋦<EFBFBD>啗恣蝞𨰜<E89D9E><F0A8B09C>伃<EFBFBD><E4BC83><EFBFBD>滚<EFBFBD><E6BB9A>?
| 憸<EFBFBD><EFBFBD> | 銝梶鍂蝏<EFBFBD>辣 | <EFBFBD>匧<EFBFBD><EFBFBD><EFBFBD>眏 |
|---|---|---|
| <EFBFBD>滨垢 (Grid) | AG Grid Community | <EFBFBD>詨<EFBFBD>蝏<EFBFBD>辣<EFBFBD><EFBFBD>𣈲銝<EFBFBD><EFBFBD>賢<EFBFBD>韐寞𣈲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>具<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡝗嗻<EFBFBD><EFBFBD>xcel 蝥找漱鈭垍<E988AD>摨瓐<E691A8>? |
| <EFBFBD>滨垢 (Storage) | Dexie.js (IndexedDB) | Local-First <20>嗆<EFBFBD><E59786>詨<EFBFBD><EFBFBD><EFBFBD>銁瘚讛<EFBFBD><EFBFBD>函垢摮睃<EFBFBD> 5-10 銝<><E98A9D><EFBFBD>唳旿嚗屸<E59A97><E5B1B8>漤<EFBFBD>蝜<EFBFBD><E89D9C>蝏𡏭窈瘙<E7AA88><E79899>? |
| <EFBFBD>滨垢 (State) | Zustand + Immer | <EFBFBD>拍鍂 Immer <20>?Patches <20>蠘<EFBFBD>摰䂿緵 Undo/Redo (<28>日<EFBFBD><E697A5>滚<EFBFBD>) <20><><EFBFBD>? |
| <EFBFBD>滨垢 (Calc) | Math.js | 閫<EFBFBD><EFBFBD> JS 瘚桃<E7989A><E6A183>啁移摨阡䔮憸矋<E686B8>閫<EFBFBD><E996AB><EFBFBD>冽<EFBFBD>颲枏<E9A2B2><E69E8F><EFBFBD>龫摮血<E691AE>撘?(ln, pow)<29>? |
| <EFBFBD>滨垢 (Chart) | Ant Design Charts (G2) | <EFBFBD>冽惣<EFBFBD>賭儒颲寞<EFBFBD>銝剔<EFBFBD><EFBFBD>嗥凒<EFBFBD>孵㦛<EFBFBD>屸<EFBFBD>甈∪㦛<EFBFBD>? |
4. <20>唳旿鈭支<E988AD><E694AF><EFBFBD><EFBFBD> (Data Standards)
銝箔<EFBFBD><EFBFBD>㯄<EFBFBD>?A -> B -> C <20><><EFBFBD>頧穿<E9A0A7>敹<EFBFBD>◆摰帋<E691B0>蝏煺<E89D8F><E785BA><EFBFBD>㺭<EFBFBD>桐漱<E6A190>X聢撘譌<E69298>?
4.1 <20><><EFBFBD>瘚<EFBFBD>蓮<EFBFBD>澆<EFBFBD>
- *<EFBFBD><EFBFBD>辣<EFBFBD>拍<EFBFBD><EFBFBD>澆<EFBFBD>嚗? 蝏煺<E89D8F>雿輻鍂 CSV (UTF-8 with BOM) <20>?JSON Lines (.jsonl)<EFBFBD>?
- *<2A><>眏嚗? Stream 憭<><E686AD><EFBFBD><EFBFBD>敹恬<E695B9>銝𥪯<E98A9D>靘肽<E99D98> Excel 憭齿<E686AD><E9BDBF>?XML 蝏𤘪<E89D8F><F0A498AA>?
- *<EFBFBD>交<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗? <20><><EFBFBD>匧極<E58CA7>瑚漣<E7919A>箇<EFBFBD><E7AE87>交<EFBFBD>嚗<EFBFBD><E59A97>憿餃<E686BF>銝<EFBFBD><E98A9D>碶蛹 YYYY-MM-DD 摮㛖泵銝脯<E98A9D>?
- 蝛箏<EFBFBD>潭<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 蝏煺<E89D8F>銝?null (JSON) <20>?"" (CSV)嚗䔶艇蝳<E88987>蝙<EFBFBD>?"NA", "-"<22>?
4.2 API <20>滚<EFBFBD>蝏𤘪<E89D8F> (Standard Response)
interface ApiResponse<T> {
code: number; // 0: <20>𣂼<EFBFBD>, >0: <20>躰秤<E8BAB0>?
data: T; // 銝𡁜𦛚<F0A1819C>唳旿
message?: string; // <20>躰秤<E8BAB0>鞟內
meta?: { // <20><>△<EFBFBD>硋<EFBFBD><E7A18B>唳旿
total?: number;
traceId: string;
}
}
5. 撘<><E69298>𤑳㴓憓<E3B493><E68693><EFBFBD>函蔡 (DevOps)
- <EFBFBD><EFBFBD>恣<EFBFBD><EFBFBD><EFBFBD> pnpm (<28>刻<EFBFBD>嚗諹<E59A97><E8ABB9><EFBFBD><EFBFBD><EFBFBD>条征<E69DA1>湛<EFBFBD>摰㕑<E691B0>敹?<3F>?
- *Monorepo (<28>舫<EFBFBD>?嚗? 撱箄悅雿輻鍂 Turborepo <20>?Nx 蝞∠<E89D9E> frontend, backend-api, worker-merger, worker-ai 蝑匧<E89D91>嚗<EFBFBD><E59A97>鈭怎掩<E6808E>见<EFBFBD>銋剹<E98A8B>?
- 摰孵膥<EFBFBD>吔<EFBFBD>
- API Service: <20>删𠶖<E588A0><F0A0B696><EFBFBD><EFBFBD>舀偌撟單<E6929F>撅𨰻<E69285>?
- Worker Service: <20>閧𡠺<E996A7>函蔡嚗峕覔<E5B395>?CPU/<2F><><EFBFBD>韐蠘蝸餈𥡝<E9A488><F0A5A19D>拙捆嚗<E68D86>鸌<EFBFBD>急糓 Worker A 憭<><E686AD>憭扳<E686AD>隞嗆𧒄<E59786><F0A79284><EFBFBD>瘨<EFBFBD><E798A8>堒之嚗剹<E59A97>