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%)
725 lines
28 KiB
Markdown
725 lines
28 KiB
Markdown
# DC<44>唳旿皜<E697BF><E79A9C><EFBFBD>渡<EFBFBD>璅∪<E79285> - 敶枏<E695B6><E69E8F>嗆<EFBFBD><E59786><EFBFBD>撘<EFBFBD><E69298>烐<EFBFBD><E78390>?
|
||
> **<2A><>﹝<EFBFBD><EFB99D>𧋦嚗?* v3.4
|
||
> **<2A>𥕦遣<F0A595A6>交<EFBFBD>嚗?* 2025-11-28
|
||
> **蝏湔擪<E6B994><E693AA><EFBFBD>** DC璅∪<E79285>撘<EFBFBD><E69298>穃𣪧<E7A983>?
|
||
> **<2A><><EFBFBD>擧凒<E693A7>堆<EFBFBD>** 2025-12-22 <20><> **Tool C撘<43>郊<EFBFBD>嗆<EFBFBD>+<2B>扯<EFBFBD>隡睃<E99AA1>摰峕<E691B0>嚗?*
|
||
> **<2A>滚之<E6BB9A>𣬚<EFBFBD>蝣𡢅<E89DA3>** Tool C Postgres-Only撘<79>郊<EFBFBD>嗆<EFBFBD><E59786>寥<EFBFBD>?+ <20>扯<EFBFBD>隡睃<E99AA1>嚗?99%嚗? 憭𡁏<E686AD><F0A1818F><EFBFBD>蓮<EFBFBD>?
|
||
> **<2A><>﹝<EFBFBD>桃<EFBFBD>嚗?* <20>齿<EFBFBD>璅∪<E79285><E288AA>笔<EFBFBD><E7AC94>嗆<EFBFBD><E59786><EFBFBD>霈啣<E99C88>撘<EFBFBD><E69298>穃<EFBFBD>蝔?
|
||
---
|
||
|
||
## <20>𩤃<EFBFBD> <20>滩<EFBFBD>鈭衤辣霈啣<E99C88>
|
||
|
||
### 隞<><E99A9E>銝W仃鈭衤辣嚗?025-11-28嚗?
|
||
**鈭衤辣<E8A1A4>讛膩**嚗?- <20>?025-11-27撘<37><E69298>𤑳<EFBFBD>DC璅∪<E79285>Tool B隞<42><E99A9E>摰<EFBFBD><E691B0>銝W仃
|
||
- <20>笔<EFBFBD>嚗鋴ursor銝湔𧒄蝻枏<E89DBB>銝W仃嚗䔶誨<E494B6><E8AAA8>𧊋<EFBFBD>𦠜𧒄<F0A6A09C>𣂷漱<F0A382B7>蚣it
|
||
- 敶勗<E695B6><E58B97><EFBFBD>凒嚗? - <20>?<3F><><EFBFBD>农ervice撅<65>誨<EFBFBD><E8AAA8><EFBFBD>4銝芣<E98A9D><E88AA3>∴<EFBFBD>
|
||
- <20>?Controller撅<72>誨<EFBFBD>? - <20>?Routes<65>滨蔭
|
||
- <20>?<3F>唳旿摨栞<E691A8>蝘艋QL<51><4C>辣嚗Ǒ20251127_add_dc_tool_b_tables/migration.sql`銝箇征嚗? - <20>?霈曇恣<E69B87><E681A3>﹝靽萘<E99DBD>嚗㇊RD<52><44><EFBFBD><EFBFBD>航挽霈~<E99C88><EFBD9E>PI霈曇恣<E69B87><E681A3>㺭<EFBFBD>桀<EFBFBD>霈曇恣<E69B87><E681A3>I<EFBFBD>笔<EFBFBD>嚗? - <20>?撘<><E69298>𤏸扇敶蓥<E695B6><E893A5>辷<EFBFBD>Day2<79><32>ay3摰峕<E691B0><E5B395>餌<EFBFBD>嚗? - <20>?Prisma Schema摰帋<E691B0>靽萘<E99DBD>嚗?銝芾”璅∪<E79285>嚗?
|
||
**<2A>滚遣撌乩<E6928C>**嚗?- <20>?2025-11-28嚗𡁜<E59A97><F0A1819C>湧<EFBFBD>撱箏<E692B1>蝡臭誨<E887AD><E8AAA8><EFBFBD>100%<25>蠘<EFBFBD><E8A098>W<EFBFBD>嚗?- <20>?Git<69>𣂷漱嚗𡁻俈甇W<E79487>甈∩腺憭?- <20>𩤃<EFBFBD> <20>唳旿摨栞”<E6A09E>嗆<EFBFBD><E59786><EFBFBD>**<2A>芰&霈?*嚗<><E59A97>瘜閗<E7989C><E99697>仿<EFBFBD>霂<EFBFBD><E99C82>雿<EFBFBD>虾<EFBFBD>𤩺𧒄<F0A4A9BA>朞<EFBFBD>`npx prisma db push`<EFBFBD>𥕦遣嚗?
|
||
**<EFBFBD>躰悌銝擧㺿餈?*嚗?- <20>?<3F>湔鰵鈭<E9B0B5>it<69>𣂷漱閫<E6BCB1><E996AB>嚗𡁜撩<F0A1819C>嗆<EFBFBD><E59786>交<EFBFBD>鈭?- <20>?皜<><E79A9C>鈭<EFBFBD><E988AD><EFBFBD>㗇㺭<E39787>桀<EFBFBD>璉<EFBFBD><E79289>亥<EFBFBD><E4BAA5>穿<EFBFBD>蝏<EFBFBD>垢颲枏枂<E69E8F>桅<EFBFBD><E6A185>䭾<EFBFBD>閫<EFBFBD><E996AB>嚗?- <20>𩤃<EFBFBD> **<EFBFBD>喲睸<EFBFBD>桅<EFBFBD>**嚗鋴ursor<6F><72>owerShell蝏<6C>垢<EFBFBD>䭾<EFBFBD>甇<EFBFBD>虜<EFBFBD>曄內颲枏枂嚗<E69E82>紡<EFBFBD>游<EFBFBD>甈∪<E79488>霂訫仃韐?
|
||
---
|
||
|
||
## <20><> <20><>﹝霂湔<E99C82>
|
||
|
||
<EFBFBD>祆<EFBFBD>獢<EFBFBD>糓DC<EFBFBD>唳旿皜<EFBFBD><EFBFBD><EFBFBD>渡<EFBFBD>璅∪<EFBFBD><EFBFBD>?*<2A>笔<EFBFBD><E7AC94>嗆<EFBFBD><E59786>翰<EFBFBD>?*嚗<><E59A97>摰噼扇敶蓥誨<E893A5><E8AAA8>腺憭晞<E686AD><E6999E><EFBFBD>撱箄<E692B1>蝔见<E89D94>敶枏<E695B6><E69E8F>笔<EFBFBD><E7AC94>嗅<EFBFBD><E59785>?
|
||
**銝𤾸<E98A9D>隞𡝗<E99A9E>獢<EFBFBD><E78DA2><EFBFBD>喟頂**嚗?- **<EFBFBD>祆<EFBFBD>獢<EFBFBD><EFBFBD>00-璅∪<E79285>敶枏<E695B6><E69E8F>嗆<EFBFBD><E59786><EFBFBD>**嚗阳hat is嚗<73><E59A97>摰䂿𠶖<E482BF><F0A0B696><EFBFBD><EFBFBD><EFBFBD>𡠺<EFBFBD>桅<EFBFBD>嚗?- **撘<><E69298>𤏸恣<F0A48FB8>埝<EFBFBD>獢?*嚗阳hat to do嚗<6F><E59A97>霈∪<E99C88>嚗?- **撘<><E69298>𤏸扇敶閙<E695B6>獢?*嚗阳hat done嚗<65><E59A97><EFBFBD>砌腺憭勗<E686AD><E58B97><EFBFBD>ay2-3霈啣<E99C88>嚗?- **<EFBFBD><EFBFBD><EFBFBD>航挽霈⊥<EFBFBD>獢?*嚗䥅ow to do嚗<6F>挽霈⊥䲮獢<E4B2AE><E78DA2>
|
||
|
||
---
|
||
|
||
## <20>㴓 璅∪<E79285>璁<EFBFBD>膩
|
||
|
||
### <20>詨<EFBFBD><E8A9A8>蠘<EFBFBD>
|
||
DC<EFBFBD>唳旿皜<EFBFBD><EFBFBD><EFBFBD>渡<EFBFBD>璅∪<EFBFBD><EFBFBD>𣂷<EFBFBD>4銝芣惣<EFBFBD>賢極<EFBFBD>瘀<EFBFBD>撣桀𨭌<EFBFBD>𠉛弦鈭箏<EFBFBD>皜<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㟲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>硋龫<EFBFBD>埈㺭<EFBFBD>柴<EFBFBD>?
|
||
### 敶枏<E695B6><E69E8F>嗆<EFBFBD>?- **撘<><E69298>煾𧫴畾?*嚗尠<E59A97> **Tool B MVP摰峕<E691B0>** + <20>?**Tool C MVP摰峕<E691B0>** + <20><> **Postgres-Only <20>嗆<EFBFBD><E59786>寥<EFBFBD>惩<EFBFBD><E683A9>?*
|
||
- **撌脣<E6928C><E884A3>𣂼<EFBFBD><F0A382BC>?*嚗? - <20>?Portal嚗𡁏惣<F0A1818F>賣㺭<E8B3A3>格<EFBFBD>瘣堒極雿𨅯蝱嚗?025-12-02嚗? - <20>?Tool B <20>𡒊垢嚗𡁶<E59A97><F0A181B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>箏膥鈭綽<E988AD>2025-11-28<32>滚遣摰峕<E691B0>嚗? - <20>?Tool B <20>滨垢嚗?甇亙極雿𨀣<E99BBF>摰峕㟲摰䂿緵嚗?025-12-03嚗? - <20>?Tool B API撖寞𦻖嚗?銝芰垢<E88AB0>孵<EFBFBD><E5ADB5>券<EFBFBD><E588B8>琜<EFBFBD>2025-12-03嚗? - <20>?**<2A><> Tool B Postgres-Only <20>嗆<EFBFBD><E59786>寥<EFBFBD>?*嚗?025-12-13嚗釶hase 7嚗㚁<E59A97>
|
||
- <20>?<3F>箄<EFBFBD><E7AE84>峕芋撘誩<E69298><E8AAA9><EFBFBD><EFBFBD><50<35>∠凒<E288A0>伐<EFBFBD><E4BC90>?0<>⊿<EFBFBD><E28ABF>梹<EFBFBD>
|
||
- <20>?隞餃𦛚<E9A483><F0A69B9A><EFBFBD><EFBFBD>箏<EFBFBD>嚗?000<30>﹦<EFBFBD>20<32>對<EFBFBD>
|
||
- <20>?<3F>剔<EFBFBD>蝏凋<E89D8F><E5878B>舀<EFBFBD>嚗<EFBFBD>𣈲<EFBFBD><F0A388B2>鵭<EFBFBD>園𡢿<E59C92>𣂼<EFBFBD>隞餃𦛚嚗? - <20>?Platform撅<6D><E69285>銝<EFBFBD>蝞∠<E89D9E>嚗àob.data摮睃<E691AE>嚗? - <20>?Worker瘜典<E7989C>嚗ỀxtractionWorker.ts嚗? - <20>?**Tool C 摰峕㟲摰䂿緵**嚗?025-12-06 ~ 2025-12-22嚗㚁<E59A97>
|
||
- <20>?Python敺格<E695BA><E6A0BC>∴<EFBFBD>~2400銵䕘<E98AB5>Day 1 + NA憭<41><E686AD>隡睃<E99AA1> + 憭𡁏<E686AD><F0A1818F><EFBFBD>蓮<EFBFBD>g<EFBFBD>
|
||
- <20>?Node.js<6A>𡒊垢嚗ǚ3900銵䕘<E98AB5>Day 2-3 + Day 5-10 + 撘<>郊<EFBFBD>嗆<EFBFBD> + Worker嚗? - <20>?<3F>滨垢<E6BBA8>屸𢒰嚗ǚ4500銵䕘<E98AB5>Day 4-10 + React Query頧株砭 + 餈𥕦漲<F0A595A6>∴<EFBFBD>
|
||
- <20>?**<2A>𡁶鍂 Chat 蝏<>辣**嚗ǚ968銵䕘<E98AB5>Day 5嚗咓<E59A97>? - <20>?7銝芸<E98A9D><E88AB8>賣<EFBFBD><E8B3A3>殷<EFBFBD>Day 6嚗? - <20>?NA憭<41><E686AD>隡睃<E99AA1>嚗?銝芸<E98A9D><E88AB8>踝<EFBFBD>Day 7嚗? - <20>?Pivot<6F>烾◇摨譍<E691A8><E8AD8D>吔<EFBFBD>Day 7-8嚗? - <20>?霈∠<E99C88><E288A0>埈䲮獢㇂嚗<E38782><E59A97><EFBFBD>典<EFBFBD><E585B8>齿<EFBFBD>撠<EFBFBD><E692A0>Day 7-8嚗? - <20>?**UX<55>滚之<E6BB9A>寡<EFBFBD>**嚗<><E59A97>憭渡<E686AD><E6B8A1>?銵<>噡/皛𡁜𢆡<F0A1819C>∩耨憭?<3F>券<EFBFBD><E588B8>唳旿嚗㷉ay 8嚗? - <20>?**憭𡁏<E686AD><F0A1818F><EFBFBD>蓮<EFBFBD>?*嚗<>䲮<EFBFBD>?+2嚗峕惣<E5B395>賢<EFBFBD>蝏<EFBFBD><E89D8F><EFBFBD>笔<EFBFBD>憿箏<E686BF>靽脲<E99DBD>嚗㷉ay 9嚗? - <20>?**Postgres-Only撘<79>郊<EFBFBD>嗆<EFBFBD>**嚗<><E59A97>隡牐<E99AA1>頞<EFBFBD>𧒄嚗𡦀orker<65>𤾸蝱憭<E89DB1><E686AD>嚗㷉ay 10嚗? - <20>?**<2A>扯<EFBFBD>隡睃<E99AA1>**嚗Ếlean data蝻枏<E89DBB>嚗?99%<25>埈𧒄嚗㷉ay 10嚗? - **<EFBFBD>餉恣嚗鰺16500銵?* | **摰峕<E691B0>摨佗<E691A8>99%**
|
||
- **<2A>滚之<E6BB9A>𣂼停**嚗? - <20><> **<EFBFBD>滨垢<EFBFBD>𡁶鍂<EFBFBD>賢<EFBFBD>撅<EFBFBD>遣霈曉<EFBFBD><EFBFBD>?*
|
||
- <20>?<3F>箔<EFBFBD> Ant Design X <20>?Chat 蝏<>辣摨? - <20><> **Platform-Only <20>嗆<EFBFBD><E59786>𥟇鰵**嚗<><E59A97> ASL 蝏煺<E89D8F><E785BA>嗆<EFBFBD>嚗? - <20><> <20>臬<EFBFBD><E887AC>其<EFBFBD> AIA<49><41>KB<4B><42>ool C 蝑㗇芋<E39787>? - <20>?**NA憭<41><E686AD><EFBFBD>券𢒰<E588B8>舀<EFBFBD>**嚗𡁏㺭<F0A1818F>潭<EFBFBD>撠<EFBFBD><E692A0><EFBFBD><EFBFBD>蝞晞<E89D9E><E6999E>辺隞嗥<E99A9E><E597A5>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD><EFBFBD>? - <20>?**Pivot隡睃<E99AA1>**嚗帋<E59A97><E5B88B>蹱𧊋<E8B9B1>匧<EFBFBD>+<2B>笔<EFBFBD><E7AC94>烾◇摨? - <20>?**UX<55>滚之<E6BB9A>寡<EFBFBD>**嚗𡁜<E59A97>憭渡<E686AD><E6B8A1>㚁<EFBFBD>Excel憌擧聢嚗? 銵<>噡<EFBFBD>?+ 皛𡁜𢆡<F0A1819C>∩耨憭?+ <20>券<EFBFBD><E588B8>唳旿憭<E697BF><E686AD>
|
||
- **<2A>芸<EFBFBD><E88AB8>穃<EFBFBD><E7A983>?*嚗? - <20>?Tool A嚗𡁜龫<F0A1819C>埈㺭<E59F88>株<EFBFBD>蝥批<E89DA5>撟嗅膥
|
||
- <20>?蝻箏仃<E7AE8F>澆‵銵伐<E98AB5><E4BC90><EFBFBD><EFBFBD>?銝凋<E98A9D><E5878B>?隡埈㺭/<2F>箏<EFBFBD><E7AE8F>潘<EFBFBD>
|
||
- <20>?憭𡁻<E686AD><F0A181BB>坿‘嚗㇈ICE嚗?- **璅∪<E79285><E288AA>舀<EFBFBD>**嚗鋽eepSeek-V3 + Qwen-Max <20>峕芋<E5B395>衤漱<E8A1A4>厰<EFBFBD>霂<EFBFBD><E99C82>撌脤<E6928C>霂<EFBFBD>虾<EFBFBD>剁<EFBFBD>
|
||
- **<2A>函蔡<E587BD>嗆<EFBFBD>?*嚗尠<E59A97> <20>滚<EFBFBD>蝡臬<E89DA1><E887AC>游虾<E6B8B8>剁<EFBFBD><E58981>唳旿摨栞”撌脩&霈文<E99C88><E69687>典僎甇<E5838E>虜撌乩<E6928C>
|
||
- **撌脩䰻<E884A9>桅<EFBFBD>**嚗?銝芣<E98A9D><E88AA3>臬<EFBFBD>箏𦛚嚗<F0A69B9A><E59A97>`07-<2D><><EFBFBD>臬<EFBFBD>箏𦛚/Tool-B<><42><EFBFBD>臬<EFBFBD>箏𦛚皜<F0A69B9A><E79A9C>.md`嚗?
|
||
### <20>喲睸<E596B2>𣬚<EFBFBD>蝣?
|
||
**Tool B - <20><><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𡝗㦤<F0A19D97>其犖**:
|
||
- <20>?2025-11-22嚗?*Day 2摰峕<E691B0>**嚗<><E59A97>甈∪<E79488><E288AA>𡢅<EFBFBD>
|
||
- <20>唳旿摨廍chema霈曇恣嚗?銝芾”嚗? - 4銝芣<E98A9D><E88AA3>⊿爸<E28ABF>嗅<EFBFBD>撱? - LLMFactory瘚贝<E7989A><E8B49D>朞<EFBFBD>
|
||
- <20>?2025-11-23嚗?*Day 3摰峕<E691B0>**嚗<><E59A97>甈∪<E79488><E288AA>𡢅<EFBFBD>
|
||
- HealthCheckService摰峕㟲摰䂿緵
|
||
- TemplateService摰峕㟲摰䂿緵嚗?銝芷<E98A9D>霈暹芋<E69AB9>選<EFBFBD>
|
||
- API瘚贝<E7989A><E8B49D>朞<EFBFBD>
|
||
- <20>?2025-11-27嚗?*隞<><E99A9E>摰<EFBFBD><E691B0>銝W仃**
|
||
- <20>?2025-11-28嚗?*隞<><E99A9E><EFBFBD>滚遣摰峕<E691B0>**
|
||
- 4銝杵ervice<63>滚遣嚗𠃍ealthCheck<63><6B>emplate<74><65>ualModel<65><6C>onflict嚗? - 1銝杭ontroller<65>滚遣嚗?銝服PI蝡舐<E89DA1>嚗? - Routes<65><73><EFBFBD><EFBFBD>唬蜓摨𠉛鍂
|
||
- Git<69>𣂷漱靽脲擪
|
||
- <20>?2025-12-02嚗?*Portal憿菟𢒰摰峕<E691B0>**
|
||
- 撌乩<E6928C><E4B9A9>啁<EFBFBD><E59581>W<EFBFBD><EFBCB7>穃<EFBFBD><E7A983>? - UI隡睃<E99AA1>嚗<EFBFBD>龪<EFBFBD>滚<EFBFBD><E6BB9A>贝挽霈? - 銝𡒊頂蝏罸▲<E7BDB8>典紡<E585B8>芷<EFBFBD><E88AB7>?- <20>?2025-12-03嚗?*Tool B MVP<56><50>𧋦摰峕<E691B0>** <20><>
|
||
- <20>滨垢5甇亙極雿𨀣<E99BBF>嚗ǚ1400銵䔶誨<E494B6><E8AAA8><EFBFBD>
|
||
- API摰峕㟲撖寞𦻖嚗㇊hase 1-5嚗? - <20>笔<EFBFBD>LLM靚<4D>鍂撉諹<E69289><E8ABB9>朞<EFBFBD>
|
||
- <20>峕芋<E5B395>𧢲<EFBFBD><F0A7A2B2>𡝗<EFBFBD><F0A19D97><EFBFBD><EFBFBD>霂? - Excel撖澆枂<E6BE86>蠘<EFBFBD><E8A098>舐鍂
|
||
|
||
**Tool C - 蝘𤑳<E89D98><F0A491B3>唳旿蝻𤥁<E89DBB><F0A4A581>?*:
|
||
- <20>?2025-12-06嚗?*Day 1摰峕<E691B0>** - Python敺格<E695BA><E6A0BC>?<3F><>
|
||
- <20>?2025-12-06嚗?*Day 2摰峕<E691B0>** - Session蝞∠<E89D9E>
|
||
- <20>?2025-12-07嚗?*Day 3摰峕<E691B0>** - AI隞<49><E99A9E><EFBFBD><EFBFBD><EFBFBD>
|
||
- <20>?2025-12-07嚗?*Day 4摰峕<E691B0>** - <20>滨垢<E6BBA8>箇<EFBFBD>獢<EFBFBD>沲
|
||
- <20>?2025-12-07嚗?*Day 5摰峕<E691B0>** - AI Chat<61>X踎 + Ant Design X <20><><EFBFBD> <20><>
|
||
- <20>?2025-12-07嚗?*UI隡睃<E99AA1>摰峕<E691B0>** - 7銝芷䔮憸䀝耨憭?- <20>?2025-12-07嚗?*MVP 摰峕<E691B0>** - 蝡臬<E89DA1>蝡臬虾<E887AC>?<3F>?- <20>?2025-12-08嚗?*Day 6摰峕<E691B0>** - 7銝芸<E98A9D><E88AB8>賣<EFBFBD><E8B3A3>桀<EFBFBD><E6A180>?<3F><>
|
||
- <20>?2025-12-09嚗?*Day 7摰峕<E691B0>** - 霈∠<E99C88><E288A0>埈䲮獢㇂ + UX隡睃<E99AA1>
|
||
- <20>?2025-12-10嚗?*Day 8摰峕<E691B0>** - UX<55>滚之<E6BB9A>寡<EFBFBD> <20><>
|
||
- Python敺格<E695BA><E6A0BC>⊥<EFBFBD>撅𤏪<E69285>~1800銵䕘<E98AB5><E49598>俏A憭<41><E686AD> + <20>券<EFBFBD><E588B8>唳旿憭<E697BF><E686AD>嚗? - Node.js<6A>𡒊垢隡睃<E99AA1>嚗<EFBFBD><E59A97><EFBFBD>讛<EFBFBD><E8AE9B>痹<EFBFBD>5憭<35>誨<EFBFBD><E8AAA8>耨<EFBFBD>對<EFBFBD>
|
||
- <20>滨垢<E6BBA8>屸𢒰摰<F0A292B0><E691B0>嚗<EFBFBD><E59A97><EFBFBD>?銵<>噡/皛𡁜𢆡<F0A1819C>?<3F>券<EFBFBD><E588B8>㰘蝸嚗? - 7銝芸<E98A9D><E88AB8>賣<EFBFBD><E8B3A3>殷<EFBFBD>蝑偦<E89D91>剹<EFBFBD><E589B9><EFBFBD>撠<EFBFBD><E692A0><EFBFBD><EFBFBD>蝞晞<E89D9E><E6999E>辺隞嗚<E99A9E><E5979A><EFBFBD>NA<4E><41>恣蝞𨰜<E89D9E><F0A8B09C>ivot嚗? - 4銝芸<E98A9D><E88AB8>賣𣈲<E8B3A3><F0A388B2>A憭<41><E686AD>嚗<EFBFBD><E59A97>撠<EFBFBD><E692A0><EFBFBD><EFBFBD><EFBFBD>剹<EFBFBD><E589B9><EFBFBD>蝞晞<E89D9E><E6999E>辺隞塚<E99A9E>
|
||
- Pivot隡睃<E99AA1>嚗<EFBFBD><E59A97><EFBFBD>蹱𧊋<E8B9B1>匧<EFBFBD>+<2B>笔<EFBFBD><E7AC94>烾◇摨𧶏<E691A8>
|
||
- 霈∠<E99C88><E288A0>埈䲮獢㇂嚗<E38782><E59A97><EFBFBD>典<EFBFBD><E585B8>齿<EFBFBD>撠?+ <20>刻<EFBFBD>摮㛖泵頧祆揢嚗? - **UX<55>滚之<E6BB9A>寡<EFBFBD>**嚗? - <20>?<3F>堒仍蝑偦<E89D91>㚁<EFBFBD>Excel憌擧聢嚗龦ommunity<74><79>𧋦嚗䔶葉<E494B6><E89189>𧋦<EFBFBD>啣<EFBFBD>嚗? - <20>?銵<>噡<EFBFBD>梹<EFBFBD><E6A2B9>箏<EFBFBD>撌虫儒嚗𣬚<E59A97><F0A3AC9A>脰<EFBFBD><E884B0>荔<EFBFBD>
|
||
- <20>?皛𡁜𢆡<F0A1819C>∩耨憭㵪<E686AD>靽格㺿MainLayout嚗峕㟲銝芷△<E88AB7>X<EFBFBD>皛𡁜𢆡<F0A1819C>∴<EFBFBD>
|
||
- <20>?<3F>券<EFBFBD><E588B8>唳旿嚗<E697BF><E59A97><EFBFBD>漤<EFBFBD><E6BCA4>?0銵䕘<E98AB5>蝑偦<E89D91>厩移蝖殷<E89D96>
|
||
- <20>?<3F>𣳇膄憸<E88684><E686B8><EFBFBD>鞟內<E99E9F>? - 瘚贝<E7989A><E8B49D>朞<EFBFBD><E69C9E><EFBFBD><EFBFBD>90%+
|
||
- **Tool C 摰峕<E691B0>摨佗<E691A8>98%** <20>?
|
||
- <20>?2025-12-06嚗?*Day 2摰峕<E691B0>** - Session蝞∠<E89D9E> <20>? - SessionService.ts嚗?83銵䕘<E98AB5>+ DataProcessService.ts嚗?03銵䕘<E98AB5>
|
||
- SessionController.ts嚗?00銵䕘<E98AB5>
|
||
- <20>唳旿摨栞”嚗飱c_tool_c_sessions嚗?2摮埈挾嚗? - 6銝杵ession API蝡舐<E89DA1>
|
||
- OSS摮睃<E691AE><E79D83><EFBFBD><EFBFBD>嚗<EFBFBD>妟<EFBFBD>賜<EFBFBD>嚗? - 瘚贝<E7989A><E8B49D>朞<EFBFBD><E69C9E><EFBFBD><EFBFBD>100% (7/7)
|
||
|
||
- <20>?2025-12-07嚗?*Day 3摰峕<E691B0>** - AI隞<49><E99A9E><EFBFBD><EFBFBD><EFBFBD> <20>? - AICodeService.ts嚗?50銵䕘<E98AB5>+ AIController.ts嚗?57銵䕘<E98AB5>
|
||
- <20>唳旿摨栞”嚗飱c_tool_c_ai_history嚗?4摮埈挾嚗? - 10銝東ew-shot蝷箔<E89DB7>嚗𡿨evel 1-4嚗? - <20>芣<EFBFBD>靽格迤<E6A0BC>箏<EFBFBD>嚗<EFBFBD><E59A97>憭?甈⊿<E79488>霂𤏪<E99C82>
|
||
- 4銝服I API蝡舐<E89DA1>
|
||
- 瘚贝<E7989A><E8B49D>朞<EFBFBD><E69C9E><EFBFBD><EFBFBD>81.8% (9/11<31>箸艶)
|
||
|
||
- <20>?2025-12-07嚗?*Day 4摰峕<E691B0>** - <20>滨垢<E6BBA8>箇<EFBFBD>獢<EFBFBD>沲 <20>? - index.tsx嚗?58銵䕘<E98AB5>- 銝餃<E98A9D><E9A483>?<3F>嗆<EFBFBD><E59786>恣<EFBFBD>? - Header.tsx嚗?1銵䕘<E98AB5>+ Toolbar.tsx嚗?04銵䕘<E98AB5>
|
||
- DataGrid.tsx嚗?11銵䕘<E98AB5>- AG Grid Community<74><79><EFBFBD>
|
||
- Sidebar.tsx嚗?49銵䕘<E98AB5>- 撉冽沲<E586BD>? - API撠<49><E692A0>toolC.ts嚗?18銵䕘<E98AB5>8銝芣䲮瘜𤏪<E7989C>
|
||
- AG Grid<69>芸<EFBFBD>銋㗇甅撘𧶏<E69298>Emerald蝏輯𠧧銝駁<E98A9D>嚗? - 頝舐眏<E88890>滨蔭 + Portal<61>舐鍂
|
||
- <20>颱誨<E9A2B1><E8AAA8><EFBFBD>~1106銵? - <20>蠘<EFBFBD>撉諹<E69289>100%<25>朞<EFBFBD>
|
||
|
||
---
|
||
|
||
## <20><>儭?<3F><><EFBFBD>舀沲<E88880>?
|
||
### <20><><EFBFBD>舀<EFBFBD>
|
||
|
||
#### <20>滨垢
|
||
```
|
||
獢<EFBFBD>沲: React 19 + TypeScript 5
|
||
頝舐眏: React Router DOM v6
|
||
<EFBFBD>嗆<EFBFBD><EFBFBD>恣<EFBFBD>? @tanstack/react-query (React Query v5)
|
||
UI蝏<EFBFBD>辣: Ant Design v5
|
||
<EFBFBD>瑕<EFBFBD>: TailwindCSS v3
|
||
<EFBFBD><EFBFBD>遣撌亙<EFBFBD>: Vite v5
|
||
|
||
<EFBFBD>𩤃<EFBFBD> <20>嗆<EFBFBD><E59786><EFBFBD>隞<EFBFBD><E99A9E>Placeholder嚗峕<E59A97><E5B395>笔<EFBFBD>隞<EFBFBD><E99A9E>
|
||
```
|
||
|
||
#### <20>𡒊垢
|
||
```
|
||
獢<EFBFBD>沲: Fastify v4 (Node.js 22)
|
||
<EFBFBD>唳旿摨? PostgreSQL 16 + Prisma 6
|
||
LLM SDK: <20>芰<EFBFBD> LLMFactory (蝏煺<E89D8F><E785BA><EFBFBD><EFBFBD>撅?
|
||
璅∪<EFBFBD>: DeepSeek-V3, Qwen-Max
|
||
<EFBFBD>亙<EFBFBD>: Winston
|
||
Excel憭<EFBFBD><EFBFBD>: xlsx 摨橒<E691A8><E6A992><EFBFBD><EFBFBD>璅∪<E79285>嚗?撟嗅<E6929F><E59785>批<EFBFBD>: p-limit嚗<74><E59A97><EFBFBD>貳LM撟嗅<E6929F><E59785>堆<EFBFBD>
|
||
|
||
<EFBFBD>?<3F>嗆<EFBFBD><E59786><EFBFBD>隞<EFBFBD><E99A9E>撌脤<E6928C>撱綽<E692B1>100%<25>蠘<EFBFBD><E8A098>W<EFBFBD>
|
||
```
|
||
|
||
#### <20>箇<EFBFBD>霈暹鴌嚗<E9B48C><E59A97><EFBFBD>毺<EFBFBD> + <20><> Postgres-Only <20>嗆<EFBFBD>嚗?```
|
||
<EFBFBD>唳旿摨? PostgreSQL 16 with Schema isolation
|
||
Schema: dc_schema (<28>祉<EFBFBD><E7A589>𠉛氖)
|
||
摮睃<EFBFBD>: storage<67>滚𦛚嚗㇉SS <20>?LocalFS嚗?
|
||
<EFBFBD><EFBFBD> Postgres-Only <20>嗆<EFBFBD>嚗?025-12-13 <20>寥<EFBFBD>惩<EFBFBD><E683A9>琜<EFBFBD>:
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> 蝏煺<E89D8F>蝻枏<E89DBB>: platform_schema.app_cache (PostgresCacheAdapter)
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> 蝏煺<E89D8F><E785BA>笔<EFBFBD>: platform_schema.job (PgBossQueue, pg-boss)
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> 隞餃𦛚蝞∠<E89D9E>: job.data 蝏煺<E89D8F>摮睃<E691AE>嚗<EFBFBD><E59A97><EFBFBD>其<EFBFBD><E585B6>∟”銝哨<E98A9D>
|
||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> <20>剔<EFBFBD>蝏凋<E89D8F>: CheckpointService (<28>滢<EFBFBD> job.data嚗屸<E59A97>𡁶鍂)
|
||
|
||
<EFBFBD>亙<EFBFBD>: logger<65>滚𦛚嚗Áinston蝏𤘪<E89D8F><F0A498AA>吔<EFBFBD>
|
||
|
||
<EFBFBD>?<3F>嗆<EFBFBD><E59786><EFBFBD>100%憭滨鍂撟喳蝱<E596B3>箇<EFBFBD>霈暹鴌
|
||
<EFBFBD>?<3F>嗆<EFBFBD>嚗䥪latform-Only 璅∪<E79285>嚗䔶<E59A97> ASL 蝏煺<E89D8F>
|
||
```
|
||
|
||
#### <20><> Postgres-Only <20>嗆<EFBFBD>鈭桃<E988AD>嚗㇍ool B嚗?
|
||
**<2A>箄<EFBFBD><E7AE84>峕芋撘誩<E69298><E8AAA9><EFBFBD><EFBFBD>**
|
||
```typescript
|
||
const QUEUE_THRESHOLD = 50;
|
||
|
||
if (records.length >= 50) {
|
||
// <20>笔<EFBFBD>璅∪<E79285>嚗𡁜虾<F0A1819C>䭾<EFBFBD>找<EFBFBD><E689BE>? - 隞餃𦛚<E9A483><F0A69B9A><EFBFBD>嚗?0<>?<3F>對<EFBFBD>
|
||
- <20>剔<EFBFBD>蝏凋<E89D8F>嚗<EFBFBD><E59A97>10<31>∩<EFBFBD>摮矋<E691AE>
|
||
- <20>舀<EFBFBD><E88880>踵𧒄<E8B8B5>湔<EFBFBD><E6B994>吔<EFBFBD>2-24撠𤩺𧒄嚗? - 摰硺<E691B0><E7A1BA>滚鍳<E6BB9A>舀<EFBFBD>憭?} else {
|
||
// <20>湔𦻖璅∪<E79285>嚗𡁏<E59A97>扯<EFBFBD>隡睃<E99AA1>
|
||
- 敹恍<E695B9>笔<EFBFBD>摨䈑<E691A8><1<><31><EFBFBD>嚗? - <20>𣳇<EFBFBD><F0A3B387>堒辣餈?}
|
||
```
|
||
|
||
**<EFBFBD>詨<EFBFBD>蝏<EFBFBD>辣嚗?*
|
||
- `ExtractionController.ts`嚗𡁏惣<EFBFBD>賡<EFBFBD><EFBFBD>澆ế<EFBFBD>哨<EFBFBD><EFBFBD>券<EFBFBD><EFBFBD>鸌甈∩遙<EFBFBD>?- `extractionWorker.ts`嚗𡁏鸌甈∪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>剔<EFBFBD>蝏凋<EFBFBD>
|
||
- `CheckpointService`嚗𡁏<EFBFBD>雿?job.data嚗<61><E59A97> ASL <20>梁鍂嚗?
|
||
**<2A><><EFBFBD>臭<EFBFBD><E887AD>選<EFBFBD>**
|
||
- <20>?<3F>園<EFBFBD>憭𡝗<E686AD><F0A19D97>穿<EFBFBD><E7A9BF>𣳇<EFBFBD> Redis嚗?- <20>?蝏煺<E89D8F><E785BA>嗆<EFBFBD>嚗<EFBFBD><E59A97> ASL 銝<><E98A9D>湛<EFBFBD>
|
||
- <20>?擃睃虾<E79D83>䭾<EFBFBD>改<EFBFBD><E694B9>芸𢆡<E88AB8>滩<EFBFBD><E6BBA9><EFBFBD>鱏<EFBFBD>寧賒隡𩤃<E99AA1>
|
||
- <20>?<3F>𤘪<EFBFBD>撅𤏪<E69285><F0A48FAA>芣䔉璅∪<E79285><E288AA>湔𦻖憭滨鍂嚗?
|
||
---
|
||
|
||
## <20><> <20>笔<EFBFBD>隞<EFBFBD><E99A9E>蝏𤘪<E89D8F>
|
||
|
||
### <20>滨垢隞<E59EA2><E99A9E>蝏𤘪<E89D8F>
|
||
|
||
```
|
||
frontend-v2/src/modules/dc/
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> index.tsx # <20>?隞<>laceholder嚗峕<E59A97><E5B395>笔<EFBFBD><E7AC94>蠘<EFBFBD>
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> components/ # <20><> 蝛箸<E89D9B>隞嗅允
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> pages/ # <20><> 蝛箸<E89D9B>隞嗅允蝏𤘪<E89D8F>
|
||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> tool-a/ # <20><> 蝛?<3F>? <20>鎿<EFBFBD><E98EBF><EFBFBD> tool-b/ # <20><> 蝛綽<E89D9B>摨𥪜<E691A8><F0A5AA9C>訓4<E8A893>笔<EFBFBD>嚗?<3F>? <20>婙<EFBFBD><E5A999><EFBFBD> tool-c/ # <20><> 蝛?<3F>婙<EFBFBD><E5A999><EFBFBD> types/ # <20><> 蝛箸<E89D9B>隞嗅允
|
||
|
||
<EFBFBD>𩤃<EFBFBD> <20>笔<EFBFBD><E7AC94>嗆<EFBFBD><E59786><EFBFBD><EFBFBD>滨垢摰<E59EA2><E691B0><EFBFBD>芸<EFBFBD><E88AB8>𡢅<EFBFBD><F0A1A285>芣<EFBFBD><E88AA3>牐<EFBFBD>蝚?```
|
||
|
||
**<2A>滨垢敺<E59EA2><E695BA><EFBFBD>啣<EFBFBD><E595A3>?*嚗<>抅鈭竚4<E7AB9A>笔<EFBFBD>霈曇恣嚗㚁<E59A97>
|
||
1. **Step 1**嚗𡁏<E59A97>隞嗡<E99A9E>隡牐<E99AA1><E78990>烾<EFBFBD>㗇𥋘
|
||
2. **Step 2**嚗锭chema<6D>惩<EFBFBD>嚗<EFBFBD>𪆴<EFBFBD><F0AA86B4>掩<EFBFBD>卝<EFBFBD><E58D9D>𥁒<EFBFBD>羓掩<E7BE93>卝<EFBFBD><E58D9D>𤌍<EFBFBD><F0A48C8D><EFBFBD>畾蛛<E795BE>
|
||
3. **Step 3**嚗𡁜<E59A97><F0A1819C><EFBFBD><EFBFBD>摨衣<E691A8><E8A1A3>改<EFBFBD>摰墧𧒄餈𥕦漲<F0A595A6><E6BCB2>僎<EFBFBD>睲遙<E79DB2>⊥遬蝷綽<E89DB7>
|
||
4. **Step 4**嚗𡁜<E59A97>蝒<EFBFBD><E89D92>霂<EFBFBD>極雿𨅯蝱嚗<E89DB1><E59A97>璅∪<E79285>撖寞<E69296><E5AF9E><EFBFBD><EFBFBD>銝𧢲<E98A9D><F0A7A2B2>曄內嚗?5. **Step 5**嚗𡁶<E59A97><F0A181B6>𨅯紡<F0A885AF>綽<EFBFBD>Excel銝贝蝸嚗?
|
||
### <20>𡒊垢隞<E59EA2><E99A9E>蝏𤘪<E89D8F>
|
||
|
||
```
|
||
backend/src/modules/dc/
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> index.ts # <20>?璅∪<E79285><E288AA>亙藁嚗?17銵䕘<E98AB5>
|
||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> registerDCRoutes() # 頝舐眏瘜典<E7989C><E585B8>賣㺭
|
||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD> initDCModule() # <20>嘥<EFBFBD><E598A5>硋遆<E7A18B>堆<EFBFBD><E5A086>急㺭<E680A5>桀<EFBFBD>璉<EFBFBD><E79289>伐<EFBFBD>
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> tool-b/ # <20>?撌亙<E6928C>B嚗𡁶<E59A97><F0A181B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>箏膥鈭?<3F>? <20>鎿<EFBFBD><E98EBF><EFBFBD> services/ # <20>?<3F>滚𦛚撅<F0A69B9A><E69285>4銝芣瓲敹<E793B2><E695B9><EFBFBD>∴<EFBFBD>
|
||
<EFBFBD>? <20>? <20>鎿<EFBFBD><E98EBF><EFBFBD> HealthCheckService.ts # <20>?190銵?- Excel<65>亙熒璉<E78692><E79289>?<3F>? <20>? <20>鎿<EFBFBD><E98EBF><EFBFBD> TemplateService.ts # <20>?243銵?- 憸<>挽璅⊥踎蝞∠<E89D9E>
|
||
<EFBFBD>? <20>? <20>鎿<EFBFBD><E98EBF><EFBFBD> DualModelExtractionService.ts # <20>?390銵?- <20>峕芋<E5B395>𧢲<EFBFBD><F0A7A2B2>?<3F>? <20>? <20>婙<EFBFBD><E5A999><EFBFBD> ConflictDetectionService.ts # <20>?215銵?- <20>脩<EFBFBD>璉<EFBFBD>瘚讠<E7989A>瘜?<3F>? <20>鎿<EFBFBD><E98EBF><EFBFBD> controllers/ # <20>?<3F>批<EFBFBD><E689B9>典<EFBFBD>
|
||
<EFBFBD>? <20>? <20>婙<EFBFBD><E5A999><EFBFBD> ExtractionController.ts # <20>?388銵?- 6銝服PI蝡舐<E89DA1>
|
||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> routes/ # <20>?頝舐眏撅?<3F>? <20>? <20>婙<EFBFBD><E5A999><EFBFBD> index.ts # <20>?115銵?- 頝舐眏<E88890>滨蔭
|
||
<EFBFBD>? <20>鎿<EFBFBD><E98EBF><EFBFBD> utils/ # <20><> 蝛綽<E89D9B>憸<EFBFBD><E686B8>嚗?<3F>? <20>婙<EFBFBD><E5A999><EFBFBD> workers/ # <20><> 蝛綽<E89D9B>憸<EFBFBD><E686B8>撘<EFBFBD>郊隞餃𦛚嚗?<3F>鎿<EFBFBD><E98EBF><EFBFBD> tool-a/ # <20><> 蝛綽<E89D9B><E7B6BD>芸<EFBFBD><E88AB8>𡢅<EFBFBD>
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> tool-c/ # <20><> 蝛綽<E89D9B><E7B6BD>芸<EFBFBD><E88AB8>𡢅<EFBFBD>
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> portal/ # <20><> 蝛綽<E89D9B><E7B6BD>芸<EFBFBD><E88AB8>𡢅<EFBFBD>
|
||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> shared/ # <20><> 蝛綽<E89D9B>憸<EFBFBD><E686B8><EFBFBD>曹澈隞<E6BE88><E99A9E>嚗?
|
||
<EFBFBD>?<3F>笔<EFBFBD><E7AC94>嗆<EFBFBD><E59786><EFBFBD>Tool B<>𡒊垢隞<E59EA2><E99A9E>摰峕㟲嚗<E39FB2><E59A97>霈?1,658 銵?```
|
||
|
||
**<2A>𡒊垢隞<E59EA2><E99A9E>蝏蠘恣**嚗<><E59A97>撱箏<E692B1><E7AE8F>琜<EFBFBD>嚗?- **<2A>餅<EFBFBD>隞嗆㺭**嚗?銝枚ypeScript<70><74>辣
|
||
- **<2A>颱誨<E9A2B1><E8AAA8><EFBFBD>**嚗𡁶漲1,658銵䕘<E98AB5>銝滚鉄瘜券<E7989C><E588B8>𣬚征銵䕘<E98AB5>
|
||
- **<2A>滚𦛚撅?*嚗?銝芣<E98A9D><E88AA3>∴<EFBFBD>1,038銵?- **<2A>批<EFBFBD><E689B9>典<EFBFBD>**嚗?銝芣綉<E88AA3>嗅膥嚗?88銵?- **頝舐眏撅?*嚗?銝芾楝<E88ABE>望<EFBFBD>隞塚<E99A9E>115銵?- **璅∪<E79285><E288AA>亙藁**嚗?銝波ndex.ts嚗?17銵?
|
||
---
|
||
|
||
## <20><>儭?<3F>唳旿摨栞挽霈?
|
||
### Schema<6D>𠉛氖
|
||
|
||
```sql
|
||
-- DC璅∪<E79285><E288AA>祉<EFBFBD>Schema
|
||
dc_schema (<28>祉<EFBFBD><E7A589>𠉛氖嚗<E6B096><E59A97><EFBFBD>?銝芾”)
|
||
```
|
||
|
||
### <20>唳旿銵刻挽霈?
|
||
#### 1. dc_health_checks嚗<73><E59A97>摨瑟<E691A8><E7919F>亥扇敶𤏪<E695B6>
|
||
```prisma
|
||
model DcHealthCheck {
|
||
id String @id @default(uuid())
|
||
userId String
|
||
fileName String
|
||
columnName String
|
||
emptyRate Float // 蝛箏<E89D9B>潛<EFBFBD>
|
||
avgLength Float // 撟喳<E6929F><E596B3>踹漲
|
||
totalRows Int // <20>餉<EFBFBD><E9A489>? estimatedTokens Int // 隡啁<E99AA1>Token瘨<6E><E798A8>? status String // pass | warning | rejected
|
||
message String // <20>行⏛<E8A18C>笔<EFBFBD>
|
||
createdAt DateTime @default(now())
|
||
|
||
@@schema("dc_schema")
|
||
@@map("dc_health_checks")
|
||
}
|
||
```
|
||
|
||
#### 2. dc_templates嚗<73><E59A97>霈暹芋<E69AB9>選<EFBFBD>
|
||
```prisma
|
||
model DcTemplate {
|
||
id String @id @default(uuid())
|
||
diseaseType String // <20>曄<EFBFBD>蝐餃<E89D90>嚗ēung_cancer, diabetes, hypertension嚗? reportType String // <20>亙<EFBFBD>蝐餃<E89D90>嚗īathology, admission, outpatient嚗? displayName String // <20>曄內<E69B84>滨妍
|
||
fields Json // <20>格<EFBFBD>摮埈挾摰帋<E691B0>
|
||
promptTemplate String // Prompt璅⊥踎
|
||
createdAt DateTime @default(now())
|
||
updatedAt DateTime @updatedAt
|
||
|
||
@@unique([diseaseType, reportType])
|
||
@@schema("dc_schema")
|
||
@@map("dc_templates")
|
||
}
|
||
```
|
||
|
||
#### 3. dc_extraction_tasks嚗<73><E59A97><EFBFBD>碶遙<E7A2B6>∴<EFBFBD>
|
||
```prisma
|
||
model DcExtractionTask {
|
||
id String @id @default(uuid())
|
||
userId String
|
||
projectName String
|
||
sourceFileKey String // OSS摮睃<E691AE>頝臬<E9A09D>
|
||
textColumn String // 敺<><E695BA><EFBFBD>硋<EFBFBD><E7A18B>? diseaseType String
|
||
reportType String
|
||
targetFields Json // <20>格<EFBFBD>摮埈挾
|
||
modelA String @default("deepseek-v3")
|
||
modelB String @default("qwen3-72b")
|
||
status String @default("pending")
|
||
totalCount Int @default(0)
|
||
processedCount Int @default(0)
|
||
cleanCount Int @default(0) // <20>惩<EFBFBD>蝒? conflictCount Int @default(0) // <20>匧<EFBFBD>蝒? failedCount Int @default(0)
|
||
totalTokens Int @default(0)
|
||
totalCost Float @default(0)
|
||
error String?
|
||
createdAt DateTime @default(now())
|
||
startedAt DateTime?
|
||
completedAt DateTime?
|
||
|
||
items DcExtractionItem[]
|
||
|
||
@@schema("dc_schema")
|
||
@@map("dc_extraction_tasks")
|
||
}
|
||
```
|
||
|
||
#### 4. dc_extraction_items嚗<73><E59A97><EFBFBD>𡝗<EFBFBD>蝏<EFBFBD><E89D8F>
|
||
```prisma
|
||
model DcExtractionItem {
|
||
id String @id @default(uuid())
|
||
taskId String
|
||
rowIndex Int // Excel銵<6C>噡
|
||
originalText String @db.Text
|
||
resultA Json? // DeepSeek蝏𤘪<E89D8F>
|
||
resultB Json? // Qwen蝏𤘪<E89D8F>
|
||
status String @default("pending")
|
||
conflictFields String[] @default([]) // <20>脩<EFBFBD>摮埈挾<E59F88>𡑒”
|
||
finalResult Json? // <20><>蝏<EFBFBD><E89D8F><EFBFBD>? tokensA Int @default(0)
|
||
tokensB Int @default(0)
|
||
error String?
|
||
createdAt DateTime @default(now())
|
||
resolvedAt DateTime?
|
||
|
||
task DcExtractionTask @relation(fields: [taskId], references: [id], onDelete: Cascade)
|
||
|
||
@@schema("dc_schema")
|
||
@@map("dc_extraction_items")
|
||
}
|
||
```
|
||
|
||
### <20>唳旿摨梶𠶖<E6A2B6>?
|
||
<EFBFBD>?**撌脤<E6928C>霂<EFBFBD><E99C82><EFBFBD>琜<EFBFBD>2025-12-02嚗?*
|
||
|
||
**撉諹<E69289>蝏𤘪<E89D8F>**嚗?- <20>?**dc_schema**: 撌脣<E6928C><E884A3>?- <20>?**dc_health_checks**: 撌脣<E6928C>撱綽<E692B1>2<EFBFBD>∟扇敶𤏪<E695B6>
|
||
- <20>?**dc_templates**: 撌脣<E6928C>撱綽<E692B1>**3<>⊿<EFBFBD>霈暹芋<E69AB9>?*嚗?- <20>?**dc_extraction_tasks**: 撌脣<E6928C>撱綽<E692B1>1<EFBFBD>∟扇敶𤏪<E695B6>
|
||
- <20>?**dc_extraction_items**: 撌脣<E6928C>撱綽<E692B1>4<EFBFBD>∟扇敶𤏪<E695B6>
|
||
|
||
**憸<>挽璅⊥踎<E28AA5>𡑒”**嚗?1. <20>箇<EFBFBD><E7AE87><EFBFBD><EFBFBD><EFBFBD>亙<EFBFBD> (lung_cancer/pathology)
|
||
2. 蝟硋倏<E7A18B><E5808F><EFBFBD><EFBFBD>Z扇敶?(diabetes/admission)
|
||
3. 擃䁅<E69383><E48185>钅秄霂羓<E99C82><E7BE93>?(hypertension/outpatient)
|
||
|
||
**撉諹<E69289><E8ABB9>𡁏𧋦**嚗?```bash
|
||
# 璉<><E79289>交㺭<E4BAA4>桀<EFBFBD>銵函𠶖<E587BD>?cd backend
|
||
node scripts/check-dc-tables.mjs
|
||
```
|
||
|
||
**蝏栞捏**嚗尠<E59A97> <20>唳旿摨枏<E691A8><E69E8F>典<EFBFBD>憭<EFBFBD>停蝏迎<E89D8F><E8BF8E>𡒊垢API摨磰砲<E7A3B0>臭誑<E887AD>湔𦻖雿輻鍂嚗?
|
||
---
|
||
|
||
## <20><> API<50>亙藁
|
||
|
||
### 頝舐眏<E88890>滨<EFBFBD>
|
||
```
|
||
/api/v1/dc/tool-b
|
||
```
|
||
|
||
### 撌脣<E6928C><E884A3>蚊PI嚗?銝芰垢<E88AB0>對<EFBFBD>
|
||
|
||
#### 1. <20>亙熒璉<E78692><E79289>?```typescript
|
||
POST /health-check
|
||
Content-Type: multipart/form-data
|
||
|
||
Body:
|
||
- file: Excel<65><6C>辣
|
||
- columnName: 敺<><E695BA><EFBFBD>亙<EFBFBD><E4BA99>?
|
||
Response: {
|
||
status: 'pass' | 'warning' | 'rejected',
|
||
emptyRate: number,
|
||
avgLength: number,
|
||
totalRows: number,
|
||
estimatedTokens: number,
|
||
message: string
|
||
}
|
||
```
|
||
|
||
#### 2. <20>瑕<EFBFBD><E79195><EFBFBD><EFBFBD>㗇芋<E39787>?```typescript
|
||
GET /templates
|
||
|
||
Response: {
|
||
templates: Array<{
|
||
id: string,
|
||
diseaseType: string,
|
||
reportType: string,
|
||
displayName: string,
|
||
fields: object
|
||
}>
|
||
}
|
||
```
|
||
|
||
#### 3. <20>𥕦遣<F0A595A6>𣂼<EFBFBD>隞餃𦛚
|
||
```typescript
|
||
POST /tasks
|
||
Content-Type: multipart/form-data
|
||
|
||
Body:
|
||
- file: Excel<65><6C>辣
|
||
- projectName: 憿寧𤌍<E5AFA7>滨妍
|
||
- textColumn: <20><>𧋦<EFBFBD>堒<EFBFBD>
|
||
- diseaseType: <20>曄<EFBFBD>蝐餃<E89D90>
|
||
- reportType: <20>亙<EFBFBD>蝐餃<E89D90>
|
||
- targetFields: JSON摮㛖泵銝?
|
||
Response: {
|
||
taskId: string,
|
||
status: 'pending',
|
||
message: '隞餃𦛚<E9A483>𥕦遣<F0A595A6>𣂼<EFBFBD>'
|
||
}
|
||
```
|
||
|
||
#### 4. <20>亥砭隞餃𦛚餈𥕦漲
|
||
```typescript
|
||
GET /tasks/:taskId/progress
|
||
|
||
Response: {
|
||
taskId: string,
|
||
status: 'pending' | 'processing' | 'completed' | 'failed',
|
||
totalCount: number,
|
||
processedCount: number,
|
||
cleanCount: number,
|
||
conflictCount: number,
|
||
failedCount: number,
|
||
totalTokens: number,
|
||
totalCost: number,
|
||
progress: number, // <20>曉<EFBFBD>瘥? error?: string
|
||
}
|
||
```
|
||
|
||
#### 5. <20>瑕<EFBFBD>隞餃𦛚<E9A483>𡒊<EFBFBD>
|
||
```typescript
|
||
GET /tasks/:taskId/items?status=conflict
|
||
|
||
Query:
|
||
- status: 'conflict' | 'clean' | 'failed' | 'all'
|
||
- page: number (default: 1)
|
||
- pageSize: number (default: 20)
|
||
|
||
Response: {
|
||
items: Array<{
|
||
id: string,
|
||
rowIndex: number,
|
||
originalText: string,
|
||
resultA: object,
|
||
resultB: object,
|
||
conflictFields: string[],
|
||
finalResult?: object,
|
||
status: string
|
||
}>,
|
||
pagination: {
|
||
total: number,
|
||
page: number,
|
||
pageSize: number,
|
||
totalPages: number
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 6. 閫<><E996AB><EFBFBD>脩<EFBFBD>
|
||
```typescript
|
||
POST /items/:itemId/resolve
|
||
|
||
Body: {
|
||
resolvedData: object // <20>冽<EFBFBD>蝖株恕<E6A0AA><E68195><EFBFBD>蝏<EFBFBD><E89D8F><EFBFBD>?}
|
||
|
||
Response: {
|
||
success: true,
|
||
itemId: string,
|
||
finalResult: object
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## <20>綫 <20>滨垢UI霈曇恣
|
||
|
||
### V4<56>笔<EFBFBD>霈曇恣
|
||
|
||
**<2A><>辣雿滨蔭**嚗?- `docs/03-銝𡁜𦛚璅∪<E79285>/DC-<2D>唳旿皜<E697BF><E79A9C><EFBFBD>渡<EFBFBD>/03-UI霈曇恣/撌亙<E6928C>B_<42><5F><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𡝗㦤<F0A19D97>其犖_<E78A96>笔<EFBFBD>霈曇恣_V4.tsx`
|
||
|
||
**5銝杵tep瘚<70><E7989A>**嚗?
|
||
#### Step 1嚗帋<E59A97>隡牐<E99AA1>Schema
|
||
```
|
||
- Excel<65><6C>辣銝𠹺<E98A9D>嚗<EFBFBD><E59A97><EFBFBD>賣<EFBFBD><E8B3A3>㗇𥋘嚗?- <20>芸𢆡璉<F0A286A1>瘚见<E7989A><E8A781>?- <20>㗇𥋘<E39787><F0A58B98>𧋦<EFBFBD>梹<EFBFBD>敺<EFBFBD><E695BA><EFBFBD>吔<EFBFBD>
|
||
```
|
||
|
||
#### Step 2嚗𡁻<E59A97>蝵格<E89DB5>撠?```
|
||
- <20>㗇𥋘<E39787>曄<EFBFBD>蝐餃<E89D90>嚗<EFBFBD><E59A97><EFBFBD>䎚<EFBFBD><E48E9A><EFBFBD>撠輻<E692A0><E8BCBB><EFBFBD><EFBFBD>銵<EFBFBD><E98AB5>页<EFBFBD>
|
||
- <20>㗇𥋘<E39787>亙<EFBFBD>蝐餃<E89D90>嚗<EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><EFBCB5>秄霂𠺪<E99C82>
|
||
- <20>芸𢆡<E88AB8>㰘蝸憸<E89DB8>挽璅⊥踎
|
||
- <20>曄內<E69B84>格<EFBFBD>摮埈挾嚗<E68CBE>虾靚<E899BE>㟲嚗?```
|
||
|
||
#### Step 3嚗𡁜<E59A97><F0A1819C><EFBFBD><EFBFBD>摨?```
|
||
- 摰墧𧒄餈𥕦漲<F0A595A6>?- 敶枏<E695B6>憭<EFBFBD><E686AD>銵<EFBFBD>噡
|
||
- Token瘨<6E><E798A8>㛖<EFBFBD>霈?- <20>鞉𧋦憸<F0A78BA6>摯
|
||
- 撟嗅<E6929F>隞餃𦛚<E9A483>曄內嚗㇄eepSeek + Qwen<65>峕𧒄餈鞱<E9A488>嚗?```
|
||
|
||
#### Step 4嚗𡁜<E59A97>蝒<EFBFBD><E89D92>霂?```
|
||
- <20>脩<EFBFBD><E884A9>𡑒”嚗<E2809D>”<EFBFBD>潭遬蝷綽<E89DB7>
|
||
- <20>峕芋<E5B395>讠<EFBFBD><E8AEA0>𨅯笆瘥䈑<E798A5>撌血𢰧<E8A180><F0A2B0A7><EFBFBD>嚗?- <20><><EFBFBD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD>遬蝷?- <20>脩<EFBFBD>摮埈挾擃䀝漁
|
||
- 敹恍<E695B9>毺&霈斗<E99C88><E69697>?```
|
||
|
||
#### Step 5嚗𡁶<E59A97><F0A181B6>𨅯紡<F0A885AF>?```
|
||
- 蝏蠘恣璁<E681A3><E79281>嚗<EFBFBD><E59A97>餅㺭<E9A485><E3BAAD><EFBFBD><EFBFBD>脩<EFBFBD><E884A9><EFBFBD>歇閫<E6AD87><E996AB><EFBFBD><EFBFBD>仃韐伐<E99F90>
|
||
- Excel撖澆枂<E6BE86>厰僼
|
||
- 4銝杵heet嚗? 1. 摰峕㟲蝏𤘪<E89D8F>
|
||
2. <20>惩<EFBFBD>蝒<EFBFBD>★
|
||
3. <20>脩<EFBFBD>憿對<E686BF>撌脰圾<E884B0>喉<EFBFBD>
|
||
4. 憭梯揖憿?```
|
||
|
||
**<2A>𩤃<EFBFBD> <20>嗆<EFBFBD><E59786><EFBFBD>霈曇恣摰峕<E691B0>嚗䔶誨<E494B6><E8AAA8>𧊋摰䂿緵**
|
||
|
||
---
|
||
|
||
## <20>圲 <20><><EFBFBD>臬<EFBFBD><E887AC>啁<EFBFBD><E59581>?
|
||
### 1. <20>亙熒璉<E78692><E79289>交㦤<E4BAA4>?
|
||
**摰䂿緵雿滨蔭**嚗䫤HealthCheckService.ts`嚗?90銵䕘<E98AB5>
|
||
|
||
**<EFBFBD>詨<EFBFBD><EFBFBD>蠘<EFBFBD>**嚗?- Excel<65><6C><EFBFBD>閫<EFBFBD><E996AB>嚗ūlsx摨橒<E691A8><E6A992>𣳇<EFBFBD><F0A3B387>賜<EFBFBD>嚗?- 蝛箏<E89D9B>潛<EFBFBD>霈∠<E99C88>嚗<EFBFBD>㜃<EFBFBD>?>50%嚗?- 撟喳<E6929F><E596B3><EFBFBD>𧋦<EFBFBD>踹漲霈∠<E99C88>
|
||
- Token瘨<6E><E798A8>𦯀摯蝞梹<E89D9E><E6A2B9>箔<EFBFBD>撟喳<E6929F><E596B3>踹漲 <20> 4 <20> 銵峕㺭嚗?- <20>行⏛蝑𣇉裦嚗? - 蝛箏<E89D9B>潛<EFBFBD> >50%嚗尠<E59A97> rejected
|
||
- 蝛箏<E89D9B>潛<EFBFBD> 30-50%嚗尠<E59A97>儭?warning
|
||
- 蝛箏<E89D9B>潛<EFBFBD> <30%嚗尠<E59A97> pass
|
||
|
||
**鈭穃<E988AD><E7A983>毺鸌<E6AFBA>?*嚗?- <20>?憭滨鍂`storage.getFileBuffer()`嚗㇉SS摮睃<EFBFBD>嚗?- <20>?憭滨鍂`cache.set()`嚗<EFBFBD><EFBFBD><EFBFBD>𦦵<EFBFBD>摮?撠𤩺𧒄嚗?- <20>?<3F><><EFBFBD>憭<EFBFBD><E686AD>嚗<EFBFBD>妟<EFBFBD>賜<EFBFBD>嚗?
|
||
### 2. <20>峕芋<E5B395>𧢲<EFBFBD><F0A7A2B2>?
|
||
**摰䂿緵雿滨蔭**嚗䫤DualModelExtractionService.ts`嚗?90銵䕘<E98AB5>
|
||
|
||
**<2A>詨<EFBFBD><E8A9A8>蠘<EFBFBD>**嚗?- 撟嗅<E6929F>靚<EFBFBD>鍂DeepSeek-V3<56>熑wen-Max
|
||
- PII<49>望<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>溻<EFBFBD><E6BABB>澈隞質<E99A9E><E8B3AA>瘀<EFBFBD>
|
||
- 3撅<33>SON閫<4E><E996AB>嚗<EFBFBD>捆<EFBFBD>蹱㦤<E8B9B1>塚<EFBFBD>嚗? 1. <20><><EFBFBD>JSON閫<4E><E996AB>
|
||
2. <20>駁膄Markdown隞<6E><E99A9E><EFBFBD>堒<EFBFBD>閫<EFBFBD><E996AB>
|
||
3. 甇<><E79487><EFBFBD>𣂼<EFBFBD>JSON撖寡情
|
||
- <20>滩<EFBFBD><E6BBA9>箏<EFBFBD>嚗<EFBFBD><E59A97>憭?甈∴<E79488>
|
||
- Token蝏蠘恣銝擧<E98A9D><E693A7>祈恣蝞?
|
||
**鈭穃<E988AD><E7A983>毺鸌<E6AFBA>?*嚗?- <20>?憭滨鍂`LLMFactory.getLLM()`
|
||
- <20>?憭滨鍂`jobQueue.add()`嚗<><E59A97>甇乩遙<E4B9A9>∴<EFBFBD>
|
||
- <20>?憭滨鍂`logger.info()`嚗<><E59A97><EFBFBD><EFBFBD><EFBFBD><EFBFBD>亙<EFBFBD>嚗?
|
||
### 3. <20>脩<EFBFBD>璉<EFBFBD>瘚讠<E7989A>瘜?
|
||
**摰䂿緵雿滨蔭**嚗䫤ConflictDetectionService.ts`嚗?15銵䕘<E98AB5>
|
||
|
||
**<EFBFBD>詨<EFBFBD><EFBFBD>蠘<EFBFBD>**嚗?- 摮埈挾蝥批笆瘥䈑<E798A5><E48891>𣂼<EFBFBD>畾菜<E795BE>颲<EFBFBD>eepSeek<65>熑wen蝏𤘪<E89D8F>嚗?- <20>澆<EFBFBD>銝<EFBFBD><E98A9D>吔<EFBFBD><E59094>駁膄蝛箸聢<E7AEB8><E881A2><EFBFBD>銝<EFBFBD>憭批<E686AD><E689B9>辷<EFBFBD>
|
||
- <20>啣<EFBFBD>澆捆撌殷<E6928C><E6AEB7>詨笆霂臬榆 <5%閫<>蛹銝<E89BB9><E98A9D>湛<EFBFBD>
|
||
- 霂凋<E99C82><E5878B>訾撮摨佗<E691A8>憸<EFBFBD><E686B8><EFBFBD>亙藁嚗<E89781>虾<EFBFBD>亙<EFBFBD>embedding嚗?- <20>脩<EFBFBD>摮埈挾<E59F88>𡑒”<F0A19192><E2809D><EFBFBD>
|
||
|
||
**<EFBFBD>嗆<EFBFBD><EFBFBD>ế<EFBFBD>?*嚗?```typescript
|
||
if (conflictFields.length === 0) {
|
||
status = 'clean' // <20>惩<EFBFBD>蝒<EFBFBD><E89D92><EFBFBD>芸𢆡<E88AB8>朞<EFBFBD>
|
||
} else {
|
||
status = 'conflict' // <20>匧<EFBFBD>蝒<EFBFBD><E89D92><EFBFBD><EFBFBD>鈭箏極蝖株恕
|
||
}
|
||
```
|
||
|
||
### 4. 璅⊥踎蝞∠<E89D9E>
|
||
|
||
**摰䂿緵雿滨蔭**嚗䫤TemplateService.ts`嚗?43銵䕘<E98AB5>
|
||
|
||
**憸<>挽璅⊥踎**嚗?銝迎<E98A9D>嚗?1. **<EFBFBD>箇<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>亙<EFBFBD>**嚗ēung_cancer/pathology嚗? - 14銝芸<E98A9D>畾蛛<E795BE><E89B9B>輻𠈔蝐餃<E89D90><E9A483><EFBFBD><EFBFBD><EFBFBD>麄<EFBFBD><E9BA84>抅<EFBFBD>删<EFBFBD><E588A0>条<EFBFBD>
|
||
2. **蝟硋倏<E7A18B><E5808F><EFBFBD><EFBFBD>Z扇敶?*嚗Ê̌iabetes/admission嚗? - 12銝芸<E98A9D>畾蛛<E795BE>銵<EFBFBD>蝟硔<E89D9F><E7A194><EFBFBD><EFBFBD>𤥁<EFBFBD>蝥Z<E89DA5><EFBCBA>賬<EFBFBD><E8B3AC>僎<EFBFBD>𤑳<EFBFBD>蝑?3. **擃䁅<E69383><E48185>钅秄霂𡃏扇敶?*嚗áypertension/outpatient嚗? - 10銝芸<E98A9D>畾蛛<E795BE>銵<EFBFBD><E98AB5>卝<EFBFBD><E58D9D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鍂<EFBFBD>舐<EFBFBD>
|
||
|
||
**Prompt璅⊥踎**嚗?```
|
||
雿䭾糓銝<EFBFBD>銝芯<EFBFBD>銝𡁶<EFBFBD><EFBFBD>餃郎靽⊥<EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD>拇<EFBFBD><EFBFBD><EFBFBD>窈隞𦒘誑銝讠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>砌葉<EFBFBD>𣂼<EFBFBD><EFBFBD>喲睸靽⊥<EFBFBD>...
|
||
|
||
<EFBFBD>曄<EFBFBD>蝐餃<EFBFBD>嚗㝯diseaseType}
|
||
<EFBFBD>亙<EFBFBD>蝐餃<EFBFBD>嚗㝯reportType}
|
||
<EFBFBD>格<EFBFBD>摮埈挾嚗㝯fields}
|
||
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?{originalText}
|
||
|
||
霂瑚艇<EFBFBD>潭<EFBFBD><EFBFBD>克SON<EFBFBD>澆<EFBFBD>颲枏枂...
|
||
```
|
||
|
||
---
|
||
|
||
## <20>?撌脰圾<E884B0>喟<EFBFBD><E5969F>桅<EFBFBD>
|
||
|
||
### 1. <20>唳旿摨栞”<E6A09E>嗆<EFBFBD><E59786><EFBFBD>霂?<3F>?撌脣<E6928C><E884A3>琜<EFBFBD>2025-12-02嚗?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- 隞<><E99A9E>銝W仃<EFBCB7>擧<EFBFBD>瘜閧&霈斗㺭<E69697>桀<EFBFBD>銵冽糓<E586BD>血<EFBFBD><E8A180>?- 餈<>宏<EFBFBD><E5AE8F>辣銝W仃嚗Ǒmigration.sql`銝箇征嚗?
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?- <20>?<3F>𥕦遣鈭<E981A3>㺭<EFBFBD>桀<EFBFBD>璉<EFBFBD><E79289>亥<EFBFBD><E4BAA5>?`backend/scripts/check-dc-tables.mjs`
|
||
- <20>?撉諹<E69289>蝖株恕<E6A0AA><E68195><EFBFBD>㕑”撌脣<E6928C>撱?- <20>?撉諹<E69289>蝖株恕憸<E68195>挽璅⊥踎撌脣<E6928C>憪见<E686AA>
|
||
|
||
**撉諹<E69289>蝏𤘪<E89D8F>**嚗?- <20>?dc_schema摮睃銁
|
||
- <20>?4銝芾”<E88ABE>券<EFBFBD>摮睃銁
|
||
- <20>?3銝芷<E98A9D>霈暹芋<E69AB9>踹歇<E8B8B9>嘥<EFBFBD><E598A5>?- <20>?<3F>㗇<EFBFBD>霂閙㺭<E99699>桀虾<E6A180>?
|
||
**蝏栞捏**嚗𡁏㺭<F0A1818F>桀<EFBFBD>摰<EFBFBD><E691B0><EFBFBD><EFBFBD><EFBFBD>撠梁貌嚗<E8B28C>虾隞亦凒<E4BAA6>乩蝙<E4B9A9>剁<EFBFBD>
|
||
|
||
---
|
||
|
||
## <20>𩤃<EFBFBD> 敶枏<E695B6>摮睃銁<E79D83><E98A81>䔮憸?
|
||
### 2. <20>滨垢摰<E59EA2><E691B0><EFBFBD>芸<EFBFBD><E88AB8>?<3F>𣞁 擃䀝<E69383><E4809D><EFBFBD>漣
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- <20>芣<EFBFBD>Placeholder<65>牐<EFBFBD>蝚?- V4<56>笔<EFBFBD>霈曇恣撌脣<E6928C><E884A3>琜<EFBFBD>雿<EFBFBD><E99BBF>隞颱<E99A9E>摰䂿緵隞<E7B7B5><E99A9E>
|
||
|
||
**敶勗<E695B6>**嚗?- <20>?<3F>䭾<EFBFBD>餈𥡝<E9A488>摰峕㟲<E5B395><E39FB2>垢<EFBFBD>啁垢瘚贝<E7989A>
|
||
- <20>?<3F>䭾<EFBFBD>瞍𠉛內蝏嗵鍂<E597B5>?
|
||
**撌乩<E6928C><E4B9A9>譍摯蝞?*嚗?- Step 1嚗<31><E59A97>隡牐<E99AA1>Schema嚗㚁<E59A97>4撠𤩺𧒄
|
||
- Step 2嚗<32><E59A97>蝵格<E89DB5>撠<EFBFBD><E692A0>嚗?撠𤩺𧒄
|
||
- Step 3嚗<33><E59A97><EFBFBD><EFBFBD><EFBFBD>摨佗<E691A8>嚗?撠𤩺𧒄
|
||
- Step 4嚗<34><E59A97>蝒<EFBFBD><E89D92>霂<EFBFBD><E99C82>嚗?撠𤩺𧒄嚗<F0A79284><E59A97>憭齿<E686AD>嚗?- Step 5嚗<35><E59A97><EFBFBD>𨅯紡<F0A885AF>綽<EFBFBD>嚗?撠𤩺𧒄
|
||
- **<2A>餉恣**嚗?8撠𤩺𧒄嚗<F0A79284>漲2-3憭抬<E686AD>
|
||
|
||
**隡睃<E99AA1>蝥?*嚗𡄻<E59A97>?擃矋<E69383><E79F8B>餃<EFBFBD>摰峕㟲<E5B395>蠘<EFBFBD>嚗?
|
||
---
|
||
|
||
### 3. <20>𡒊垢<F0A1928A>芰<EFBFBD><E88AB0>笔<EFBFBD>瘚贝<E7989A> <20>椬 銝凋<E98A9D><E5878B><EFBFBD>漣
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- 隞<><E99A9E><EFBFBD>臬抅鈭舘挽霈⊥<E99C88>獢<EFBFBD><E78DA2>撱箇<E692B1>
|
||
- 瘝⊥<E7989D>餈鞱<E9A488>餈<EFBFBD><E9A488>摰䂿<E691B0>API瘚贝<E7989A>
|
||
- 瘝⊥<E7989D>撉諹<E69289>餈䜶LM靚<4D>鍂<EFBFBD>臬炏甇<E7828F>虜
|
||
|
||
**憌𡡞埯**嚗?- <20>𩤃<EFBFBD> <20>航<EFBFBD>摮睃銁<E79D83>芸<EFBFBD><E88AB8>啁<EFBFBD>bug
|
||
- <20>𩤃<EFBFBD> 摰鮋<E691B0>LLM<4C>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD><EFBFBD>芷<EFBFBD>霂?
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?1. <20><><EFBFBD>銵䈣npx prisma db push`<60>𥕦遣銵?2. <20>臬𢆡<E887AC>𡒊垢嚗䫤npm run dev`
|
||
3. 雿輻鍂REST Client瘚贝<E7989A>6銝服PI蝡舐<E89DA1>
|
||
4. 銝𠹺<E98A9D><F0A0B9BA>笔<EFBFBD>Excel<65><6C>辣瘚贝<E7989A><E8B49D>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD>
|
||
|
||
**隡睃<E99AA1>蝥?*嚗𡄻<E59A97>?銝哨<E98A9D><E593A8>滨垢撘<E59EA2><E69298>穃<EFBFBD>摨𥪜<E691A8><F0A5AA9C>琜<EFBFBD>
|
||
|
||
---
|
||
|
||
### 4. Cursor蝏<72>垢颲枏枂<E69E8F>桅<EFBFBD> <20>叚 雿𦒘<E99BBF><F0A69298><EFBFBD>漣
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- PowerShell蝏<6C>垢<EFBFBD>䭾<EFBFBD>甇<EFBFBD>虜<EFBFBD>曄內<E69B84>賭誘颲枏枂
|
||
- 撖潸稲<E6BDB8>䭾<EFBFBD>餈鞱<E9A488><E99EB1>唳旿摨𤘪<E691A8><F0A498AA>亥<EFBFBD><E4BAA5>?- 瘚芾晶鈭<E699B6>之<EFBFBD>𤩺𧒄<F0A4A9BA>游<EFBFBD>霂蓥<E99C82><E893A5>峕䲮瘜?
|
||
**敶勗<E695B6>**嚗?- <20>𩤃<EFBFBD> 撘<><E69298>𤏸<EFBFBD>霂蓥<E99C82>靘?- <20>𩤃<EFBFBD> <20>䭾<EFBFBD>摰墧𧒄<E5A2A7>亦<EFBFBD><E4BAA6>亙<EFBFBD>
|
||
|
||
**銝湔𧒄閫<F0A79284><E996AB><EFBFBD>寞<EFBFBD>**嚗?- 雿輻鍂憭㚚<E686AD>PowerShell<6C>𥟟MD蝒堒藁
|
||
- 雿輻鍂Prisma Studio<69>航<EFBFBD><E888AA>硋極<E7A18B>?- <20>湔𦻖<E6B994>臬𢆡<E887AC>𡒊垢<F0A1928A>亦<EFBFBD><E4BAA6>臬𢆡<E887AC>亙<EFBFBD>
|
||
|
||
**隡睃<E99AA1>蝥?*嚗𡄻<E59A97>?雿𠬍<E99BBF><F0A0AC8D>㗇𤜯隞<F0A49CAF>䲮獢<E4B2AE><E78DA2>
|
||
|
||
---
|
||
|
||
## <20><> 銝衤<E98A9D>甇亙<E79487><E4BA99>𤏸恣<F0A48FB8>?
|
||
### 蝡见朖<E8A781><E69C96>閬<EFBFBD><E996AC><EFBFBD><EFBFBD><EFBFBD>蝝扳<E89D9D>伐<EFBFBD>
|
||
|
||
1. **撉諹<E69289><E8ABB9>唳旿摨栞”** <20>𣞁
|
||
```bash
|
||
cd backend
|
||
npx prisma db push
|
||
npx prisma studio # <20>航<EFBFBD><E888AA>𣇉&霈? ```
|
||
|
||
2. **<2A>𡒊垢API瘚贝<E7989A>** <20>𣞁
|
||
- <20>臬𢆡<E887AC>𡒊垢<F0A1928A>滚𦛚
|
||
- 瘚贝<E7989A>6銝服PI蝡舐<E89DA1>
|
||
- 撉諹<E69289>LLM靚<4D>鍂
|
||
- 蝖株恕<E6A0AA>峕芋<E5B395>𧢲<EFBFBD><F0A7A2B2>㚚<EFBFBD>餉<EFBFBD>
|
||
|
||
3. **Git<69>齿活<E9BDBF>𣂷漱** <20>𣞁
|
||
- 蝖桐<E89D96><E6A190><EFBFBD><EFBFBD>劐誨<E58A90><E8AAA8>歇<EFBFBD>𣂷漱
|
||
- <20>券<EFBFBD><E588B8><EFBFBD>餈𦦵<E9A488>隞枏<E99A9E>嚗<EFBFBD><E59A97><EFBFBD>𨀣<EFBFBD>嚗?
|
||
### <20>剜<EFBFBD>撘<EFBFBD><E69298>睲遙<E79DB2>∴<EFBFBD><E288B4>砍𪂹嚗?
|
||
4. **<2A>滨垢UI撘<49><E69298>?* <20>𣞁嚗<F0A39E81><E59A97>霈?-3憭抬<E686AD>
|
||
- <20>箔<EFBFBD>V4<56>笔<EFBFBD>摰䂿緵5銝杵tep
|
||
- <20><><EFBFBD><EFBFBD>SL璅∪<E79285><E288AA><EFBFBD><EFBFBD>蝡臭誨<E887AD><E8AAA8><EFBFBD><EFBFBD>? - 雿輻鍂React Query蝞∠<E89D9E>API靚<49>鍂
|
||
- 雿輻鍂Ant Design蝏<6E>辣
|
||
|
||
5. **蝡臬<E89DA1>蝡舀<E89DA1>霂?* <20>椬
|
||
- <20>笔<EFBFBD>Excel<65><6C>辣瘚贝<E7989A>
|
||
- <20>脩<EFBFBD>閫<EFBFBD><E996AB>瘚<EFBFBD><E7989A>瘚贝<E7989A>
|
||
- 撖澆枂<E6BE86>蠘<EFBFBD>瘚贝<E7989A>
|
||
|
||
### 銝剜<E98A9D>隡睃<E99AA1>隞餃𦛚嚗<F0A69B9A><E59A97><EFBFBD>剁<EFBFBD>
|
||
|
||
6. **<2A>扯<EFBFBD>隡睃<E99AA1>** <20>椬
|
||
- 瘛餃<E7989B>撟嗅<E6929F><E59785>批<EFBFBD>嚗ī-limit嚗? - 隡睃<E99AA1>Excel憭扳<E686AD>隞嗅<E99A9E><E59785>? - 瘛餃<E7989B>餈𥕦漲摰墧𧒄<E5A2A7>券<EFBFBD><E588B8><EFBFBD>WebSocket嚗?
|
||
7. **<2A>躰秤憭<E7A7A4><E686AD>隡睃<E99AA1>** <20>椬
|
||
- 摰<><E691B0><EFBFBD>躰秤<E8BAB0>鞟內
|
||
- 瘛餃<E7989B><E9A483>滩<EFBFBD><E6BBA9>箏<EFBFBD>
|
||
- 憭梯揖隞餃𦛚<E9A483>W<EFBFBD>
|
||
|
||
---
|
||
|
||
## <20><> <20>詨<EFBFBD><E8A9A8><EFBFBD>﹝
|
||
|
||
### 霈曇恣<E69B87><E681A3>﹝
|
||
- [PRD<52><44>瘙<EFBFBD><E79899>獢β(./01-<2D><>瘙<EFBFBD><E79899><EFBFBD>?)
|
||
- [<5B><><EFBFBD>航挽霈⊥<E99C88>獢β(./02-<2D><><EFBFBD>航挽霈?<3F><><EFBFBD>航挽霈⊥<E99C88>獢<EFBFBD><E78DA2>撌亙<E6928C> B - <20><><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𡝗㦤<F0A19D97>其犖 (The AI Structurer).md)
|
||
- [<5B>唳旿摨栞挽霈⊥<E99C88>獢β(./02-<2D><><EFBFBD>航挽霈?<3F>唳旿摨栞挽霈⊥<E99C88>獢?DC璅∪<E79285>嚗<EFBFBD><E59A97><EFBFBD>渡<EFBFBD>嚗?md)
|
||
- [API霈曇恣<E69B87><E681A3>﹝](./02-<2D><><EFBFBD>航挽霈?API霈曇恣<E69B87><E681A3>﹝-DC璅∪<E79285>嚗<EFBFBD><E59A97><EFBFBD>渡<EFBFBD>嚗?md)
|
||
- [UI<55>笔<EFBFBD>霈曇恣](./03-UI霈曇恣/撌亙<E6928C>B_<42><5F><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𡝗㦤<F0A19D97>其犖_<E78A96>笔<EFBFBD>霈曇恣_V4.tsx)
|
||
|
||
### 撘<><E69298>𤏸扇敶?- [Day2摰峕<E691B0><E5B395>餌<EFBFBD>](./06-撘<><E69298>𤏸扇敶?Day2摰峕<E691B0><E5B395>餌<EFBFBD>.md)嚗<>腺憭勗<E686AD>嚗?- [Day3摰峕<E691B0><E5B395>餌<EFBFBD>](./06-撘<><E69298>𤏸扇敶?Day3摰峕<E691B0><E5B395>餌<EFBFBD>.md)嚗<>腺憭勗<E686AD>嚗?- [DC璅∪<E79285><E288AA>滚遣摰峕<E691B0><E5B395>餌<EFBFBD>](./06-撘<><E69298>𤏸扇敶?DC璅∪<E79285><E288AA>滚遣摰峕<E691B0><E5B395>餌<EFBFBD>-Day1.md)嚗<><E59A97>撱箏<E692B1>嚗?
|
||
### 閫<><E996AB><EFBFBD><EFBFBD>﹝
|
||
- [鈭穃<E988AD><E7A983>笔<EFBFBD><E7AC94>𤏸<EFBFBD><F0A48FB8><EFBFBD>(../../04-撘<><E69298>𤏸<EFBFBD><F0A48FB8>?08-鈭穃<E988AD><E7A983>笔<EFBFBD><E7AC94>𤏸<EFBFBD><F0A48FB8>?md)
|
||
- [Git<69>𣂷漱閫<E6BCB1><E996AB>](../../04-撘<><E69298>𤏸<EFBFBD><F0A48FB8>?06-Git<69>𣂷漱閫<E6BCB1><E996AB>.md)嚗<>歇<EFBFBD>湔鰵嚗<E9B0B5>撩<EFBFBD>嗆<EFBFBD><E59786>交<EFBFBD>鈭歹<E988AD>
|
||
|
||
---
|
||
|
||
## <20><> 蝏蹱鰵撘<E9B0B5><E69298>𤏸<EFBFBD><F0A48FB8><EFBFBD><EFBFBD>鞟內
|
||
|
||
### 敹恍<E695B9>煺<EFBFBD><E785BA>?
|
||
1. **鈭<>圾隞<E59CBE><E99A9E>銝W仃鈭衤辣**
|
||
- <20><>粉<EFBFBD>祆<EFBFBD>獢<EFBFBD><E78DA2>"<22>滩<EFBFBD>鈭衤辣霈啣<E99C88>"<22>典<EFBFBD>
|
||
- <20><>圾銝箔<E98A9D>銋<EFBFBD><E98A8B>瘥𤩺𠯫Git<69>𣂷漱
|
||
|
||
2. **<2A><><EFBFBD><EFBFBD>𡒊垢隞<E59EA2><E99A9E>**
|
||
- <20><><EFBFBD>`backend/src/modules/dc/index.ts`鈭<>圾璅∪<E79285>蝏𤘪<E89D8F>
|
||
- <20><>粉4銝杵ervice<63><65>誨<EFBFBD><E8AAA8>釣<EFBFBD>? - 餈鞱<E9A488>Prisma Studio<69>亦<EFBFBD><E4BAA6>唳旿摨栞”
|
||
|
||
3. **<2A><>圾鈭穃<E988AD><E7A983><EFBFBD>沲<EFBFBD>?*
|
||
- <20><>粉`鈭穃<EFBFBD><EFBFBD>笔<EFBFBD><EFBFBD>𤏸<EFBFBD><EFBFBD><EFBFBD>
|
||
- 鈭<>圾憒<E59CBE><E68692>憭滨鍂撟喳蝱<E596B3>箇<EFBFBD>霈暹鴌
|
||
- **蝳<>迫**嚗𡁏𧋦<F0A1818F>唳<EFBFBD>隞嗅<E99A9E><E59785>具<EFBFBD><E585B7><EFBFBD>摮条<E691AE>摮塩<E691AE><E5A1A9>′蝻𣇉<E89DBB><F0A38789>滨蔭
|
||
|
||
4. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>SL璅∪<EFBFBD>**
|
||
- DC璅∪<E79285><E288AA>滨垢摨𠉛掩隡劈SL璅∪<E79285><E288AA><EFBFBD><EFBFBD>蝡舐<E89DA1><E88890>? - 憭滨鍂ASL<53><4C>ooks<6B><73><EFBFBD>隞嗅<E99A9E>撌亙<E6928C><E4BA99>賣㺭
|
||
- 靽脲<E99DBD>銝<EFBFBD><E98A9D>渡<EFBFBD>隞<EFBFBD><E99A9E>憌擧聢
|
||
|
||
### 撣貉<E692A3><E8B289>琿𩐠
|
||
|
||
<EFBFBD>?**銝滩<E98A9D>餈蹱甅<E8B9B1>?*嚗?1. <20>砍𧑐撘<F0A79190><E69298>烐𧒄<E78390>湔𦻖<E6B994>総fs.writeFileSync()`嚗<><E59A97><EFBFBD>滢<EFBFBD><E6BBA2>毺<EFBFBD>閫<EFBFBD><E996AB>嚗?2. 雿輻鍂<E8BCBB>典<EFBFBD><E585B8>㗛<EFBFBD>蝻枏<E89DBB><E69E8F>唳旿嚗𠄎erverless<73>臬<EFBFBD>銝滚虾<E6BB9A>𩤃<EFBFBD>
|
||
3. 敹䁅扇瘥𤩺𠯫Git<69>𣂷漱嚗<E6BCB1>誨<EFBFBD><E8AAA8>虾<EFBFBD>賭腺憭梧<E686AD>
|
||
4. <20>每ursor蝏<72>垢餈鞱<E9A488>憭齿<E686AD><E9BDBF>𡁏𧋦嚗<F0A78BA6><E59A97><EFBFBD>粹䔮憸矋<E686B8>
|
||
|
||
<EFBFBD>?**摨磰砲餈蹱甅<E8B9B1>?*嚗?1. 雿輻鍂`storage.uploadBuffer()`摮睃<E691AE><E79D83><EFBFBD>辣
|
||
2. 雿輻鍂`cache.set()`蝻枏<E89DBB><E69E8F>唳旿
|
||
3. **瘥誩予銝讠号<E8AEA0>滚<EFBFBD>憿腐it<69>𣂷漱**
|
||
4. 憭齿<E686AD><E9BDBF>𡁏𧋦<F0A1818F>典<EFBFBD><E585B8>沌owerShell餈鞱<E9A488>
|
||
|
||
---
|
||
|
||
## <20><> 璅∪<E79285>蝏蠘恣
|
||
|
||
### 隞<><E99A9E><EFBFBD>讐<EFBFBD>霈∴<E99C88>敶枏<E695B6>嚗?```
|
||
<EFBFBD>𡒊垢隞<EFBFBD><EFBFBD>嚗<EFBFBD>歇摰峕<EFBFBD>嚗㚁<EFBFBD>
|
||
- TypeScript<70><74>辣嚗?銝?- <20>餉<EFBFBD><E9A489>堆<EFBFBD>蝥?,658銵?- <20>滚𦛚撅<F0A69B9A><E69285>4銝芣<E98A9D><E88AA3>∴<EFBFBD>1,038銵?- <20>批<EFBFBD><E689B9>典<EFBFBD>嚗?88銵?- 頝舐眏撅<E79C8F><E69285>115銵?
|
||
<EFBFBD>滨垢隞<EFBFBD><EFBFBD>嚗<EFBFBD>𧊋撘<EFBFBD><EFBFBD>𡢅<EFBFBD>嚗?- TypeScript/TSX<53><58>辣嚗?銝迎<E98A9D>Placeholder嚗?- <20>餉<EFBFBD><E9A489>堆<EFBFBD>14銵?- <20>笔<EFBFBD><E7AC94>蠘<EFBFBD>嚗?%
|
||
|
||
<EFBFBD>唳旿摨橒<EFBFBD>
|
||
- 銵冽㺭<E586BD>𧶏<EFBFBD>4銝迎<E98A9D>Prisma Schema撌脣<E6928C>銋㚁<E98A8B>
|
||
- 摰鮋<E691B0><E9AE8B>𥕦遣嚗尠<E59A97>儭?<3F>芰&霈?```
|
||
|
||
### 撘<><E69298>𤏸<EFBFBD>摨?```
|
||
<EFBFBD>港<EFBFBD>餈𥕦漲嚗𡁶漲35%
|
||
|
||
- Tool B<>𡒊垢嚗?00% <20>?- Tool B<>滨垢嚗?% <20>?- Tool A嚗?% <20>?- Tool C嚗?% <20>?- Portal嚗?% <20>?```
|
||
|
||
---
|
||
|
||
## <20><> <20>渲陝
|
||
|
||
<EFBFBD>蠘陝<EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD>銝𥟠C璅∪<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>頞喉<EFBFBD>隞乩噶<EFBFBD>游末<EFBFBD>啗<EFBFBD><EFBFBD>鍦<EFBFBD>蝏剖極雿栶<EFBFBD>?*
|
||
|
||
---
|
||
|
||
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD>** 2025-12-10
|
||
**<EFBFBD><EFBFBD>﹝蝏湔擪嚗?* DC璅∪<E79285>撘<EFBFBD><E69298>穃𣪧<E7A983>?
|
||
**<EFBFBD>𠉛頂<EFBFBD>孵<EFBFBD>嚗?* 憿寧𤌍Issues
|
||
|
||
|
||
|
||
|
||
|