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%)
28 KiB
DC<EFBFBD>唳旿皜<EFBFBD><EFBFBD><EFBFBD>渡<EFBFBD>璅∪<EFBFBD> - 敶枏<E695B6><E69E8F>嗆<EFBFBD><E59786><EFBFBD>撘<EFBFBD><E69298>烐<EFBFBD><E78390>?
*<EFBFBD><EFBFBD>﹝<EFBFBD><EFBFBD>𧋦嚗? v3.4
*<EFBFBD>𥕦遣<EFBFBD>交<EFBFBD>嚗? 2025-11-28
蝏湔擪<EFBFBD><EFBFBD><EFBFBD> DC璅∪<E79285>撘<EFBFBD><E69298>穃𣪧<E7A983>? <EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD> 2025-12-22 <20><> *Tool C撘<43>郊<EFBFBD>嗆<EFBFBD>+<2B>扯<EFBFBD>隡睃<E99AA1>摰峕<E691B0>嚗?
<EFBFBD>滚之<EFBFBD>𣬚<EFBFBD>蝣𡢅<EFBFBD> Tool C Postgres-Only撘<79>郊<EFBFBD>嗆<EFBFBD><E59786>寥<EFBFBD>?+ <20>扯<EFBFBD>隡睃<E99AA1>嚗?99%嚗? 憭𡁏<E686AD><F0A1818F><EFBFBD>蓮<EFBFBD>? *<EFBFBD><EFBFBD>﹝<EFBFBD>桃<EFBFBD>嚗? <20>齿<EFBFBD>璅∪<E79285><E288AA>笔<EFBFBD><E7AC94>嗆<EFBFBD><E59786><EFBFBD>霈啣<E99C88>撘<EFBFBD><E69298>穃<EFBFBD>蝔?
<EFBFBD>𩤃<EFBFBD> <20>滩<EFBFBD>鈭衤辣霈啣<E99C88>
隞<EFBFBD><EFBFBD>銝W仃鈭衤辣嚗?025-11-28嚗?
鈭衤辣<EFBFBD>讛膩嚗?- <20>?025-11-27撘<37><E69298>𤑳<EFBFBD>DC璅∪<E79285>Tool B隞<42><E99A9E>摰<EFBFBD><E691B0>銝W仃
- <EFBFBD>笔<EFBFBD>嚗鋴ursor銝湔𧒄蝻枏<EFBFBD>銝W仃嚗䔶誨<EFBFBD><EFBFBD>𧊋<EFBFBD>𦠜𧒄<EFBFBD>𣂷漱<EFBFBD>蚣it
- 敶勗<EFBFBD><EFBFBD><EFBFBD>凒嚗? - <20>?<3F><><EFBFBD>农ervice撅<65>誨<EFBFBD><E8AAA8><EFBFBD>4銝芣<E98A9D><E88AA3>∴<EFBFBD>
- <EFBFBD>?Controller撅<72>誨<EFBFBD>? - <20>?Routes<65>滨蔭
- <EFBFBD>?<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`<60>𥕦遣嚗? **<2A>躰悌銝擧㺿餈?*嚗?- <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> **<2A>喲睸<E596B2>桅<EFBFBD>**嚗鋴ursor<6F><72>owerShell蝏<6C>垢<EFBFBD>䭾<EFBFBD>甇<EFBFBD>虜<EFBFBD>曄內颲枏枂嚗<E69E82>紡<EFBFBD>游<EFBFBD>甈∪<E79488>霂訫仃韐?
<EFBFBD><EFBFBD> <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>? 銝𤾸<EFBFBD>隞𡝗<EFBFBD>獢<EFBFBD><EFBFBD><EFBFBD>喟頂嚗?- **<2A>祆<EFBFBD>獢<EFBFBD><E78DA2>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>嚗?- **<2A><><EFBFBD>航挽霈⊥<E99C88>獢?*嚗䥅ow to do嚗<6F>挽霈⊥䲮獢<E4B2AE><E78DA2>
<EFBFBD>㴓 璅∪<E79285>璁<EFBFBD>膩
<EFBFBD>詨<EFBFBD><EFBFBD>蠘<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>?
敶枏<EFBFBD><EFBFBD>嗆<EFBFBD>?- **撘<><E69298>煾𧫴畾?*嚗尠<E59A97> Tool B MVP摰峕<E691B0> + <20>?Tool C MVP摰峕<E691B0> + <20><> *Postgres-Only <20>嗆<EFBFBD><E59786>寥<EFBFBD>惩<EFBFBD><E683A9>?
- 撌脣<EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD>?*嚗? - <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>?<EFBFBD><EFBFBD> Tool B Postgres-Only <20>嗆<EFBFBD><E59786>寥<EFBFBD>?*嚗?025-12-13嚗釶hase 7嚗㚁<E59A97>
- <EFBFBD>?<3F>箄<EFBFBD><E7AE84>峕芋撘誩<E69298><E8AAA9><EFBFBD><EFBFBD><50<35>∠凒<E288A0>伐<EFBFBD><E4BC90>?0<>⊿<EFBFBD><E28ABF>梹<EFBFBD>
- <EFBFBD>?隞餃𦛚<E9A483><F0A69B9A><EFBFBD><EFBFBD>箏<EFBFBD>嚗?000<30>﹦<EFBFBD>20<32>對<EFBFBD>
- <EFBFBD>?<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>
- <EFBFBD>?Python敺格<E695BA><E6A0BC>∴<EFBFBD>~2400銵䕘<E98AB5>Day 1 + NA憭<41><E686AD>隡睃<E99AA1> + 憭𡁏<E686AD><F0A1818F><EFBFBD>蓮<EFBFBD>g<EFBFBD>
- <EFBFBD>?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>
- <EFBFBD>?<EFBFBD>𡁶鍂 Chat 蝏<>辣嚗ǚ968銵䕘<EFBFBD>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>嚗<EFBFBD><EFBFBD>隡牐<EFBFBD>頞<EFBFBD>𧒄嚗𡦀orker<EFBFBD>𤾸蝱憭<EFBFBD><EFBFBD>嚗㷉ay 10嚗? - <20>?<EFBFBD>扯<EFBFBD>隡睃<EFBFBD>**嚗Ếlean data蝻枏<E89DBB>嚗?99%<25>埈𧒄嚗㷉ay 10嚗? - *<EFBFBD>餉恣嚗鰺16500銵? | 摰峕<EFBFBD>摨佗<EFBFBD>99%
- <EFBFBD>滚之<EFBFBD>𣂼停嚗? - <20><> *<EFBFBD>滨垢<EFBFBD>𡁶鍂<EFBFBD>賢<EFBFBD>撅<EFBFBD>遣霈曉<EFBFBD><EFBFBD>?
- <EFBFBD>?<3F>箔<EFBFBD> Ant Design X <20>?Chat 蝏<>辣摨? - <20><> Platform-Only <20>嗆<EFBFBD><E59786>𥟇鰵嚗<EFBFBD><EFBFBD> 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>撟嗅膥
- <EFBFBD>?蝻箏仃<E7AE8F>澆‵銵伐<E98AB5><E4BC90><EFBFBD><EFBFBD>?銝凋<E98A9D><E5878B>?隡埈㺭/<2F>箏<EFBFBD><E7AE8F>潘<EFBFBD>
- <EFBFBD>?憭𡁻<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嚗?
<EFBFBD>喲睸<EFBFBD>𣬚<EFBFBD>蝣?
Tool B - <20><><EFBFBD>蝏𤘪<E89D8F><F0A498AA>𡝗㦤<F0A19D97>其犖:
- <EFBFBD>?2025-11-22嚗?*Day 2摰峕<E691B0>**嚗<><E59A97>甈∪<E79488><E288AA>𡢅<EFBFBD>
- <EFBFBD>唳旿摨廍chema霈曇恣嚗?銝芾”嚗? - 4銝芣<E98A9D><E88AA3>⊿爸<E28ABF>嗅<EFBFBD>撱? - LLMFactory瘚贝<E7989A><E8B49D>朞<EFBFBD>
- <EFBFBD>?2025-11-23嚗?*Day 3摰峕<E691B0>**嚗<><E59A97>甈∪<E79488><E288AA>𡢅<EFBFBD>
- HealthCheckService摰峕㟲摰䂿緵
- TemplateService摰峕㟲摰䂿緵嚗?銝芷<E98A9D>霈暹芋<E69AB9>選<EFBFBD>
- API瘚贝<EFBFBD><EFBFBD>朞<EFBFBD>
- <EFBFBD>?2025-11-27嚗?隞<EFBFBD><EFBFBD>摰<EFBFBD><EFBFBD>銝W仃*
- <EFBFBD>?2025-11-28嚗?隞<EFBFBD><EFBFBD><EFBFBD>滚遣摰峕<EFBFBD>*
- 4銝杵ervice<EFBFBD>滚遣嚗𠃍ealthCheck<EFBFBD><EFBFBD>emplate<EFBFBD><EFBFBD>ualModel<EFBFBD><EFBFBD>onflict嚗? - 1銝杭ontroller<65>滚遣嚗?銝服PI蝡舐<E89DA1>嚗? - Routes<65><73><EFBFBD><EFBFBD>唬蜓摨𠉛鍂
- Git<EFBFBD>𣂷漱靽脲擪
- <EFBFBD>?2025-12-02嚗?Portal憿菟𢒰摰峕<EFBFBD>*
- 撌乩<EFBFBD><EFBFBD>啁<EFBFBD><EFBFBD>W<EFBFBD><EFBFBD>穃<EFBFBD><EFBFBD>? - UI隡睃<E99AA1>嚗<EFBFBD>龪<EFBFBD>滚<EFBFBD><E6BB9A>贝挽霈? - 銝𡒊頂蝏罸▲<E7BDB8>典紡<E585B8>芷<EFBFBD><E88AB7>?- <20>?2025-12-03嚗?Tool B MVP<56><50>𧋦摰峕<E691B0>* <20><>
- <EFBFBD>滨垢5甇亙極雿𨀣<EFBFBD>嚗ǚ1400銵䔶誨<EFBFBD><EFBFBD><EFBFBD>
- API摰峕㟲撖寞𦻖嚗㇊hase 1-5嚗? - <20>笔<EFBFBD>LLM靚<4D>鍂撉諹<E69289><E8ABB9>朞<EFBFBD>
- <EFBFBD>峕芋<EFBFBD>𧢲<EFBFBD><EFBFBD>𡝗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>霂? - Excel撖澆枂<E6BE86>蠘<EFBFBD><E8A098>舐鍂
**Tool C - 蝘𤑳<E89D98><F0A491B3>唳旿蝻𤥁<E89DBB><F0A4A581>?*:
-
<EFBFBD>?2025-12-06嚗?Day 1摰峕<E691B0>* - Python敺格<E695BA><E6A0BC>?<3F><>
-
<EFBFBD>?2025-12-06嚗?Day 2摰峕<E691B0>* - Session蝞∠<E89D9E>
-
<EFBFBD>?2025-12-07嚗?Day 3摰峕<E691B0>* - AI隞<49><E99A9E><EFBFBD><EFBFBD><EFBFBD>
-
<EFBFBD>?2025-12-07嚗?Day 4摰峕<E691B0>* - <20>滨垢<E6BBA8>箇<EFBFBD>獢<EFBFBD>沲
-
<EFBFBD>?2025-12-07嚗?Day 5摰峕<E691B0>* - AI Chat<61>X踎 + Ant Design X <20><><EFBFBD> <20><>
-
<EFBFBD>?2025-12-07嚗?UI隡睃<EFBFBD>摰峕<EFBFBD>* - 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><>
-
<EFBFBD>?2025-12-09嚗?Day 7摰峕<E691B0>* - 霈∠<E99C88><E288A0>埈䲮獢㇂ + UX隡睃<E99AA1>
-
<EFBFBD>?2025-12-10嚗?Day 8摰峕<E691B0>* - UX<55>滚之<E6BB9A>寡<EFBFBD> <20><>
- Python敺格<EFBFBD><EFBFBD>⊥<EFBFBD>撅𤏪<EFBFBD>~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>
- <EFBFBD>滨垢<EFBFBD>屸𢒰摰<EFBFBD><EFBFBD>嚗<EFBFBD><EFBFBD><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隡睃<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>蹱𧊋<EFBFBD>匧<EFBFBD>+<2B>笔<EFBFBD><E7AC94>烾◇摨𧶏<E691A8>
- 霈∠<EFBFBD><EFBFBD>埈䲮獢㇂嚗<EFBFBD><EFBFBD><EFBFBD>典<EFBFBD><EFBFBD>齿<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>
- <EFBFBD>?皛𡁜𢆡<F0A1819C>∩耨憭㵪<E686AD>靽格㺿MainLayout嚗峕㟲銝芷△<E88AB7>X<EFBFBD>皛𡁜𢆡<F0A1819C>∴<EFBFBD>
- <EFBFBD>?<3F>券<EFBFBD><E588B8>唳旿嚗<E697BF><E59A97><EFBFBD>漤<EFBFBD><E6BCA4>?0銵䕘<E98AB5>蝑偦<E89D91>厩移蝖殷<E89D96>
- <EFBFBD>?<3F>𣳇膄憸<E88684><E686B8><EFBFBD>鞟內<E99E9F>? - 瘚贝<E7989A><E8B49D>朞<EFBFBD><E69C9E><EFBFBD><EFBFBD>90%+
- Tool C 摰峕<E691B0>摨佗<E691A8>98% <20>?
-
<EFBFBD>?2025-12-06嚗?Day 2摰峕<E691B0>* - Session蝞∠<E89D9E> <20>? - SessionService.ts嚗?83銵䕘<E98AB5>+ DataProcessService.ts嚗?03銵䕘<E98AB5>
- SessionController.ts嚗?00銵䕘<E98AB5>
- <EFBFBD>唳旿摨栞”嚗飱c_tool_c_sessions嚗?2摮埈挾嚗? - 6銝杵ession API蝡舐<E89DA1>
- OSS摮睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗<EFBFBD>妟<EFBFBD>賜<EFBFBD>嚗? - 瘚贝<E7989A><E8B49D>朞<EFBFBD><E69C9E><EFBFBD><EFBFBD>100% (7/7)
-
<EFBFBD>?2025-12-07嚗?Day 3摰峕<E691B0>* - AI隞<49><E99A9E><EFBFBD><EFBFBD><EFBFBD> <20>? - AICodeService.ts嚗?50銵䕘<E98AB5>+ AIController.ts嚗?57銵䕘<E98AB5>
- <EFBFBD>唳旿摨栞”嚗飱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>
- 瘚贝<EFBFBD><EFBFBD>朞<EFBFBD><EFBFBD><EFBFBD><EFBFBD>81.8% (9/11<31>箸艶)
-
<EFBFBD>?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>舐鍂
- <EFBFBD>颱誨<EFBFBD><EFBFBD><EFBFBD>~1106銵? - <20>蠘<EFBFBD>撉諹<E69289>100%<25>朞<EFBFBD>
<EFBFBD><EFBFBD>儭?<3F><><EFBFBD>舀沲<E88880>?
<EFBFBD><EFBFBD><EFBFBD>舀<EFBFBD>
<EFBFBD>滨垢
獢<EFBFBD>沲: React 19 + TypeScript 5
頝舐眏: React Router DOM v6
<0A>嗆<EFBFBD><E59786>恣<EFBFBD>? @tanstack/react-query (React Query v5)
UI蝏<49>辣: Ant Design v5
<0A>瑕<EFBFBD>: TailwindCSS v3
<0A><>遣撌亙<E6928C>: Vite v5
<0A>𩤃<EFBFBD> <20>嗆<EFBFBD><E59786><EFBFBD>隞<EFBFBD><E99A9E>Placeholder嚗峕<E59A97><E5B395>笔<EFBFBD>隞<EFBFBD><E99A9E>
<EFBFBD>𡒊垢
獢<EFBFBD>沲: Fastify v4 (Node.js 22)
<0A>唳旿摨? PostgreSQL 16 + Prisma 6
LLM SDK: <20>芰<EFBFBD> LLMFactory (蝏煺<E89D8F><E785BA><EFBFBD><EFBFBD>撅?
璅∪<E79285>: DeepSeek-V3, Qwen-Max
<0A>亙<EFBFBD>: Winston
Excel憭<6C><E686AD>: xlsx 摨橒<E691A8><E6A992><EFBFBD><EFBFBD>璅∪<E79285>嚗?撟嗅<E6929F><E59785>批<EFBFBD>: p-limit嚗<74><E59A97><EFBFBD>貳LM撟嗅<E6929F><E59785>堆<EFBFBD>
<0A>?<3F>嗆<EFBFBD><E59786><EFBFBD>隞<EFBFBD><E99A9E>撌脤<E6928C>撱綽<E692B1>100%<25>蠘<EFBFBD><E8A098>W<EFBFBD>
<EFBFBD>箇<EFBFBD>霈暹鴌嚗<EFBFBD><EFBFBD><EFBFBD>毺<EFBFBD> + <20><> Postgres-Only <20>嗆<EFBFBD>嚗?```
<EFBFBD>唳旿摨? PostgreSQL 16 with Schema isolation Schema: dc_schema (<28>祉<EFBFBD><E7A589>𠉛氖) 摮睃<E691AE>: storage<67>滚𦛚嚗㇉SS <20>?LocalFS嚗? <0A><> Postgres-Only <20>嗆<EFBFBD>嚗?025-12-13 <20>寥<EFBFBD>惩<EFBFBD><E683A9>琜<EFBFBD>: <0A>鎿<EFBFBD><E98EBF><EFBFBD> 蝏煺<E89D8F>蝻枏<E89DBB>: platform_schema.app_cache (PostgresCacheAdapter) <0A>鎿<EFBFBD><E98EBF><EFBFBD> 蝏煺<E89D8F><E785BA>笔<EFBFBD>: platform_schema.job (PgBossQueue, pg-boss) <0A>鎿<EFBFBD><E98EBF><EFBFBD> 隞餃𦛚蝞∠<E89D9E>: job.data 蝏煺<E89D8F>摮睃<E691AE>嚗<EFBFBD><E59A97><EFBFBD>其<EFBFBD><E585B6>∟”銝哨<E98A9D> <0A>婙<EFBFBD><E5A999><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>霈暹鴌 <0A>?<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>梁鍂嚗? <EFBFBD><EFBFBD><EFBFBD>臭<EFBFBD><EFBFBD>選<EFBFBD>- <EFBFBD>?<3F>園<EFBFBD>憭𡝗<E686AD><F0A19D97>穿<EFBFBD><E7A9BF>𣳇<EFBFBD> Redis嚗?- <20>?蝏煺<E89D8F><E785BA>嗆<EFBFBD>嚗<EFBFBD><E59A97> ASL 銝<><E98A9D>湛<EFBFBD>
- <EFBFBD>?擃睃虾<E79D83>䭾<EFBFBD>改<EFBFBD><E694B9>芸𢆡<E88AB8>滩<EFBFBD><E6BBA9><EFBFBD>鱏<EFBFBD>寧賒隡𩤃<E99AA1>
- <EFBFBD>?<3F>𤘪<EFBFBD>撅𤏪<E69285><F0A48FAA>芣䔉璅∪<E79285><E288AA>湔𦻖憭滨鍂嚗?
<EFBFBD><EFBFBD> <20>笔<EFBFBD>隞<EFBFBD><E99A9E>蝏𤘪<E89D8F>
<EFBFBD>滨垢隞<EFBFBD><EFBFBD>蝏𤘪<EFBFBD>
frontend-v2/src/modules/dc/
<0A>鎿<EFBFBD><E98EBF><EFBFBD> index.tsx # <20>?隞<>laceholder嚗峕<E59A97><E5B395>笔<EFBFBD><E7AC94>蠘<EFBFBD>
<0A>鎿<EFBFBD><E98EBF><EFBFBD> components/ # <20><> 蝛箸<E89D9B>隞嗅允
<0A>鎿<EFBFBD><E98EBF><EFBFBD> pages/ # <20><> 蝛箸<E89D9B>隞嗅允蝏𤘪<E89D8F>
<0A>? <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>隞嗅允
<0A>𩤃<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/ <0A>鎿<EFBFBD><E98EBF><EFBFBD> index.ts # <20>?璅∪<E79285><E288AA>亙藁嚗?17銵䕘<E98AB5> <0A>? <20>鎿<EFBFBD><E98EBF><EFBFBD> registerDCRoutes() # 頝舐眏瘜典<E7989C><E585B8>賣㺭 <0A>? <20>婙<EFBFBD><E5A999><EFBFBD> initDCModule() # <20>嘥<EFBFBD><E598A5>硋遆<E7A18B>堆<EFBFBD><E5A086>急㺭<E680A5>桀<EFBFBD>璉<EFBFBD><E79289>伐<EFBFBD> <0A>鎿<EFBFBD><E98EBF><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> <0A>? <20>? <20>鎿<EFBFBD><E98EBF><EFBFBD> HealthCheckService.ts # <20>?190銵?- Excel<65>亙熒璉<E78692><E79289>?<3F>? <20>? <20>鎿<EFBFBD><E98EBF><EFBFBD> TemplateService.ts # <20>?243銵?- 憸<>挽璅⊥踎蝞∠<E89D9E> <0A>? <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> <0A>? <20>? <20>婙<EFBFBD><E5A999><EFBFBD> ExtractionController.ts # <20>?388銵?- 6銝服PI蝡舐<E89DA1> <0A>? <20>鎿<EFBFBD><E98EBF><EFBFBD> routes/ # <20>?頝舐眏撅?<3F>? <20>? <20>婙<EFBFBD><E5A999><EFBFBD> index.ts # <20>?115銵?- 頝舐眏<E88890>滨蔭 <0A>? <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> <0A>鎿<EFBFBD><E98EBF><EFBFBD> tool-c/ # <20><> 蝛綽<E89D9B><E7B6BD>芸<EFBFBD><E88AB8>𡢅<EFBFBD> <0A>鎿<EFBFBD><E98EBF><EFBFBD> portal/ # <20><> 蝛綽<E89D9B><E7B6BD>芸<EFBFBD><E88AB8>𡢅<EFBFBD> <0A>婙<EFBFBD><E5A999><EFBFBD> shared/ # <20><> 蝛綽<E89D9B>憸<EFBFBD><E686B8><EFBFBD>曹澈隞<E6BE88><E99A9E>嚗? <0A>?<3F>笔<EFBFBD><E7AC94>嗆<EFBFBD><E59786><EFBFBD>Tool B<>𡒊垢隞<E59EA2><E99A9E>摰峕㟲嚗<E39FB2><E59A97>霈?1,658 銵?```
<EFBFBD>𡒊垢隞<EFBFBD><EFBFBD>蝏蠘恣嚗<EFBFBD><EFBFBD>撱箏<EFBFBD><EFBFBD>琜<EFBFBD>嚗?- <EFBFBD>餅<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銵?- 璅∪<EFBFBD><EFBFBD>亙藁嚗?銝波ndex.ts嚗?17銵?
<EFBFBD><EFBFBD>儭?<3F>唳旿摨栞挽霈?
Schema<EFBFBD>𠉛氖
-- DC璅∪<E79285><E288AA>祉<EFBFBD>Schema
dc_schema (<EFBFBD>祉<EFBFBD><EFBFBD>𠉛氖嚗<EFBFBD><EFBFBD><EFBFBD>?銝芾”)
<EFBFBD>唳旿銵刻挽霈?
1. dc_health_checks嚗<73><E59A97>摨瑟<E691A8><E7919F>亥扇敶𤏪<E695B6>
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>
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>
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>
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")
}
<EFBFBD>唳旿摨梶𠶖<EFBFBD>?
<EFBFBD>?*撌脤<EFBFBD>霂<EFBFBD><EFBFBD><EFBFBD>琜<EFBFBD>2025-12-02嚗?
**撉諹<E69289>蝏𤘪<E89D8F>**嚗?- <20>?dc_schema: 撌脣<E6928C><E884A3>?- <20>?dc_health_checks: 撌脣<E6928C>撱綽<E692B1>2<EFBFBD>∟扇敶𤏪<E695B6>
- <EFBFBD>?dc_templates: 撌脣<E6928C>撱綽<E692B1>**3<>⊿<EFBFBD>霈暹芋<E69AB9>?*嚗?- <20>?dc_extraction_tasks: 撌脣<E6928C>撱綽<E692B1>1<EFBFBD>∟扇敶𤏪<E695B6>
- <EFBFBD>?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)
撉諹<EFBFBD><EFBFBD>𡁏𧋦嚗?```bash
璉<EFBFBD><EFBFBD>交㺭<EFBFBD>桀<EFBFBD>銵函𠶖<EFBFBD>?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>亥砭隞餃𦛚餈𥕦漲
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>
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>
POST /items/:itemId/resolve
Body: {
resolvedData: object // <20>冽<EFBFBD>蝖株恕<E6A0AA><E68195><EFBFBD>蝏<EFBFBD><E89D8F><EFBFBD>?}
Response: {
success: true,
itemId: string,
finalResult: object
}
<EFBFBD>綫 <20>滨垢UI霈曇恣
V4<EFBFBD>笔<EFBFBD>霈曇恣
<EFBFBD><EFBFBD>辣雿滨蔭嚗?- 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>撠?```
- <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>U<EFBFBD><EFBFBD>秄霂𠺪<EFBFBD>
- <EFBFBD>芸𢆡<EFBFBD>㰘蝸憸<EFBFBD>挽璅⊥踎
- <EFBFBD>曄內<EFBFBD>格<EFBFBD>摮埈挾嚗<EFBFBD>虾靚<EFBFBD>㟲嚗?```
Step 3嚗𡁜<E59A97><F0A1819C><EFBFBD><EFBFBD>摨?```
- 摰墧𧒄餈𥕦漲<EFBFBD>?- 敶枏<E695B6>憭<EFBFBD><E686AD>銵<EFBFBD>噡
- Token瘨<EFBFBD><EFBFBD>㛖<EFBFBD>霈?- <20>鞉𧋦憸<F0A78BA6>摯
- 撟嗅<EFBFBD>隞餃𦛚<EFBFBD>曄內嚗㇄eepSeek + Qwen<65>峕𧒄餈鞱<E9A488>嚗?```
Step 4嚗𡁜<E59A97>蝒<EFBFBD><E89D92>霂?```
- <EFBFBD>脩<EFBFBD><EFBFBD>𡑒”嚗<EFBFBD>”<EFBFBD>潭遬蝷綽<EFBFBD>
- <EFBFBD>峕芋<EFBFBD>讠<EFBFBD><EFBFBD>𨅯笆瘥䈑<EFBFBD>撌血𢰧<EFBFBD><EFBFBD><EFBFBD>嚗?- <20><><EFBFBD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD>遬蝷?- <20>脩<EFBFBD>摮埈挾擃䀝漁
- 敹恍<EFBFBD>毺&霈斗<EFBFBD><EFBFBD>?```
Step 5嚗𡁶<E59A97><F0A181B6>𨅯紡<F0A885AF>?```
- 蝏蠘恣璁<EFBFBD><EFBFBD>嚗<EFBFBD><EFBFBD>餅㺭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>脩<EFBFBD><EFBFBD><EFBFBD>歇閫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>仃韐伐<EFBFBD>
- Excel撖澆枂<EFBFBD>厰僼
- 4銝杵heet嚗? 1. 摰峕㟲蝏𤘪<E89D8F> 2. <20>惩<EFBFBD>蝒<EFBFBD>★ 3. <20>脩<EFBFBD>憿對<E686BF>撌脰圾<E884B0>喉<EFBFBD> 4. 憭梯揖憿?```
<EFBFBD>𩤃<EFBFBD> <20>嗆<EFBFBD><E59786><EFBFBD>霈曇恣摰峕<E691B0>嚗䔶誨<E494B6><E8AAA8>𧊋摰䂿緵
<EFBFBD>圲 <20><><EFBFBD>臬<EFBFBD><E887AC>啁<EFBFBD><E59581>?
1. <20>亙熒璉<E78692><E79289>交㦤<E4BAA4>?
摰䂿緵雿滨蔭嚗䫤HealthCheckService.ts`嚗?90銵䕘<E98AB5>
**<2A>詨<EFBFBD><E8A9A8>蠘<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瘨<EFBFBD><EFBFBD>𦯀摯蝞梹<EFBFBD><EFBFBD>箔<EFBFBD>撟喳<EFBFBD><EFBFBD>踹漲 <20> 4 <20> 銵峕㺭嚗?- <20>行⏛蝑𣇉裦嚗? - 蝛箏<E89D9B>潛<EFBFBD> >50%嚗尠<E59A97> rejected
- 蝛箏<EFBFBD>潛<EFBFBD> 30-50%嚗尠<E59A97>儭?warning
- 蝛箏<EFBFBD>潛<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<EFBFBD>望<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>溻<EFBFBD><EFBFBD>澈隞質<EFBFBD><EFBFBD>瘀<EFBFBD>
- 3撅<EFBFBD>SON閫<EFBFBD><EFBFBD>嚗<EFBFBD>捆<EFBFBD>蹱㦤<EFBFBD>塚<EFBFBD>嚗? 1. <20><><EFBFBD>JSON閫<4E><E996AB> 2. <20>駁膄Markdown隞<6E><E99A9E><EFBFBD>堒<EFBFBD>閫<EFBFBD><E996AB> 3. 甇<><E79487><EFBFBD>𣂼<EFBFBD>JSON撖寡情
- <EFBFBD>滩<EFBFBD><EFBFBD>箏<EFBFBD>嚗<EFBFBD><EFBFBD>憭?甈∴<E79488>
- Token蝏蠘恣銝擧<EFBFBD><EFBFBD>祈恣蝞?
**鈭穃<E988AD><E7A983>毺鸌<E6AFBA>?*嚗?- <20>?憭滨鍂
LLMFactory.getLLM() - <EFBFBD>?憭滨鍂
jobQueue.add()嚗<EFBFBD><EFBFBD>甇乩遙<EFBFBD>∴<EFBFBD> - <EFBFBD>?憭滨鍂
logger.info()嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>亙<EFBFBD>嚗?
3. <20>脩<EFBFBD>璉<EFBFBD>瘚讠<E7989A>瘜?
摰䂿緵雿滨蔭嚗䫤ConflictDetectionService.ts`嚗?15銵䕘<E98AB5>
**<2A>詨<EFBFBD><E8A9A8>蠘<EFBFBD>**嚗?- 摮埈挾蝥批笆瘥䈑<E798A5><E48891>𣂼<EFBFBD>畾菜<E795BE>颲<EFBFBD>eepSeek<65>熑wen蝏𤘪<E89D8F>嚗?- <20>澆<EFBFBD>銝<EFBFBD><E98A9D>吔<EFBFBD><E59094>駁膄蝛箸聢<E7AEB8><E881A2><EFBFBD>銝<EFBFBD>憭批<E686AD><E689B9>辷<EFBFBD>
- <EFBFBD>啣<EFBFBD>澆捆撌殷<EFBFBD><EFBFBD>詨笆霂臬榆 <5%閫<>蛹銝<E89BB9><E98A9D>湛<EFBFBD>
- 霂凋<EFBFBD><EFBFBD>訾撮摨佗<EFBFBD>憸<EFBFBD><EFBFBD><EFBFBD>亙藁嚗<EFBFBD>虾<EFBFBD>亙<EFBFBD>embedding嚗?- <20>脩<EFBFBD>摮埈挾<E59F88>𡑒”<F0A19192><E2809D><EFBFBD>
**<2A>嗆<EFBFBD><E59786>ế<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. **<2A>箇<EFBFBD><E7AE87><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璅⊥踎**嚗?```
雿䭾糓銝<E7B393>銝芯<E98A9D>銝𡁶<E98A9D><F0A181B6>餃郎靽⊥<E99DBD><E28AA5>𣂼<EFBFBD><F0A382BC>拇<EFBFBD><E68B87><EFBFBD>窈隞𦒘誑銝讠<E98A9D><E8AEA0><EFBFBD><EFBFBD><EFBFBD>砌葉<E7A08C>𣂼<EFBFBD><F0A382BC>喲睸靽⊥<E99DBD>...
<0A>曄<EFBFBD>蝐餃<E89D90>嚗㝯diseaseType}
<0A>亙<EFBFBD>蝐餃<E89D90>嚗㝯reportType}
<0A>格<EFBFBD>摮埈挾嚗㝯fields}
<0A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?{originalText}
霂瑚艇<E7919A>潭<EFBFBD><E6BDAD>克SON<4F>澆<EFBFBD>颲枏枂...
<EFBFBD>?撌脰圾<E884B0>喟<EFBFBD><E5969F>桅<EFBFBD>
1. <20>唳旿摨栞”<E6A09E>嗆<EFBFBD><E59786><EFBFBD>霂?<3F>?撌脣<E6928C><E884A3>琜<EFBFBD>2025-12-02嚗?
<EFBFBD>桅<EFBFBD><EFBFBD>讛膩嚗?- 隞<><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`
- <EFBFBD>?撉諹<E69289>蝖株恕<E6A0AA><E68195><EFBFBD>㕑”撌脣<E6928C>撱?- <20>?撉諹<E69289>蝖株恕憸<E68195>挽璅⊥踎撌脣<E6928C>憪见<E686AA>
**撉諹<E69289>蝏𤘪<E89D8F>**嚗?- <20>?dc_schema摮睃銁
- <EFBFBD>?4銝芾”<E88ABE>券<EFBFBD>摮睃銁
- <EFBFBD>?3銝芷<E98A9D>霈暹芋<E69AB9>踹歇<E8B8B9>嘥<EFBFBD><E598A5>?- <20>?<3F>㗇<EFBFBD>霂閙㺭<E99699>桀虾<E6A180>? 蝏栞捏嚗𡁏㺭<EFBFBD>桀<EFBFBD>摰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撠梁貌嚗<EFBFBD>虾隞亦凒<EFBFBD>乩蝙<EFBFBD>剁<EFBFBD>
<EFBFBD>𩤃<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>
- <EFBFBD>?<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>嚗?撠𤩺𧒄
- <EFBFBD>餉恣嚗?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>
- 瘝⊥<EFBFBD>餈鞱<EFBFBD>餈<EFBFBD><EFBFBD>摰䂿<EFBFBD>API瘚贝<EFBFBD>
- 瘝⊥<EFBFBD>撉諹<EFBFBD>餈䜶LM靚<EFBFBD>鍂<EFBFBD>臬炏甇<EFBFBD>虜
憌𡡞埯嚗?- <20>𩤃<EFBFBD> <20>航<EFBFBD>摮睃銁<E79D83>芸<EFBFBD><E88AB8>啁<EFBFBD>bug
- <EFBFBD>𩤃<EFBFBD> 摰鮋<E691B0>LLM<4C>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD><EFBFBD>芷<EFBFBD>霂?
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?1. <20><><EFBFBD>銵䈣npx prisma db push
<EFBFBD>𥕦遣銵?2. <20>臬𢆡<E887AC>𡒊垢嚗䫤npm run dev
- 雿輻鍂REST Client瘚贝<E7989A>6銝服PI蝡舐<E89DA1>
- 銝𠹺<EFBFBD><EFBFBD>笔<EFBFBD>Excel<EFBFBD><EFBFBD>辣瘚贝<EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD><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>賭誘颲枏枂
- 撖潸稲<EFBFBD>䭾<EFBFBD>餈鞱<EFBFBD><EFBFBD>唳旿摨𤘪<EFBFBD><EFBFBD>亥<EFBFBD><EFBFBD>?- 瘚芾晶鈭<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>
<EFBFBD><EFBFBD> 銝衤<E98A9D>甇亙<E79487><E4BA99>𤏸恣<F0A48FB8>?
蝡见朖<EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝝扳<EFBFBD>伐<EFBFBD>
-
撉諹<EFBFBD><EFBFBD>唳旿摨栞” <20>𣞁
cd backend npx prisma db push npx prisma studio # <20>航<EFBFBD><E888AA>𣇉&霈? ``` -
<EFBFBD>𡒊垢API瘚贝<EFBFBD> <20>𣞁
- <EFBFBD>臬𢆡<EFBFBD>𡒊垢<EFBFBD>滚𦛚
- 瘚贝<EFBFBD>6銝服PI蝡舐<EFBFBD>
- 撉諹<EFBFBD>LLM靚<EFBFBD>鍂
- 蝖株恕<EFBFBD>峕芋<EFBFBD>𧢲<EFBFBD><EFBFBD>㚚<EFBFBD>餉<EFBFBD>
-
Git<EFBFBD>齿活<EFBFBD>𣂷漱 <20>𣞁
- 蝖桐<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>滨垢UI撘<EFBFBD><EFBFBD>? <20>𣞁嚗<F0A39E81><E59A97>霈?-3憭抬<E686AD>
- <EFBFBD>箔<EFBFBD>V4<EFBFBD>笔<EFBFBD>摰䂿緵5銝杵tep
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>SL璅∪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡臭誨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? - 雿輻鍂React Query蝞∠<E89D9E>API靚<49>鍂
- 雿輻鍂Ant Design蝏<6E>辣
-
*蝡臬<EFBFBD>蝡舀<EFBFBD>霂? <20>椬
- <EFBFBD>笔<EFBFBD>Excel<EFBFBD><EFBFBD>辣瘚贝<EFBFBD>
- <EFBFBD>脩<EFBFBD>閫<EFBFBD><EFBFBD>瘚<EFBFBD><EFBFBD>瘚贝<EFBFBD>
- 撖澆枂<EFBFBD>蠘<EFBFBD>瘚贝<EFBFBD>
銝剜<EFBFBD>隡睃<EFBFBD>隞餃𦛚嚗<EFBFBD><EFBFBD><EFBFBD>剁<EFBFBD>
- <EFBFBD>扯<EFBFBD>隡睃<EFBFBD> <20>椬
- 瘛餃<EFBFBD>撟嗅<EFBFBD><EFBFBD>批<EFBFBD>嚗ī-limit嚗? - 隡睃<E99AA1>Excel憭扳<E686AD>隞嗅<E99A9E><E59785>? - 瘛餃<E7989B>餈𥕦漲摰墧𧒄<E5A2A7>券<EFBFBD><E588B8><EFBFBD>WebSocket嚗?
- <EFBFBD>躰秤憭<EFBFBD><EFBFBD>隡睃<EFBFBD> <20>椬
- 摰<EFBFBD><EFBFBD><EFBFBD>躰秤<EFBFBD>鞟內
- 瘛餃<EFBFBD><EFBFBD>滩<EFBFBD><EFBFBD>箏<EFBFBD>
- 憭梯揖隞餃𦛚<EFBFBD>W<EFBFBD>
<EFBFBD><EFBFBD> <20>詨<EFBFBD><E8A9A8><EFBFBD>﹝
霈曇恣<EFBFBD><EFBFBD>﹝
- [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霈曇恣<EFBFBD><EFBFBD>﹝
- UI<EFBFBD>笔<EFBFBD>霈曇恣
撘<EFBFBD><EFBFBD>𤏸扇敶?- Day2摰峕<EFBFBD><EFBFBD>餌<EFBFBD>嚗<EFBFBD>腺憭勗<EFBFBD>嚗?- Day3摰峕<EFBFBD><EFBFBD>餌<EFBFBD>嚗<EFBFBD>腺憭勗<EFBFBD>嚗?- DC璅∪<EFBFBD><EFBFBD>滚遣摰峕<EFBFBD><EFBFBD>餌<EFBFBD>嚗<EFBFBD><EFBFBD>撱箏<EFBFBD>嚗?
閫<EFBFBD><EFBFBD><EFBFBD><EFBFBD>﹝
- [鈭穃<E988AD><E7A983>笔<EFBFBD><E7AC94>𤏸<EFBFBD><F0A48FB8><EFBFBD>(../../04-撘<><E69298>𤏸<EFBFBD><F0A48FB8>?08-鈭穃<E988AD><E7A983>笔<EFBFBD><E7AC94>𤏸<EFBFBD><F0A48FB8>?md)
- Git<EFBFBD>𣂷漱閫<EFBFBD><EFBFBD>嚗<EFBFBD>歇<EFBFBD>湔鰵嚗<EFBFBD>撩<EFBFBD>嗆<EFBFBD><EFBFBD>交<EFBFBD>鈭歹<EFBFBD>
<EFBFBD><EFBFBD> 蝏蹱鰵撘<E9B0B5><E69298>𤏸<EFBFBD><F0A48FB8><EFBFBD><EFBFBD>鞟內
敹恍<EFBFBD>煺<EFBFBD><EFBFBD>?
-
鈭<EFBFBD>圾隞<EFBFBD><EFBFBD>銝W仃鈭衤辣
- <EFBFBD><EFBFBD>粉<EFBFBD>祆<EFBFBD>獢<EFBFBD><EFBFBD>"<22>滩<EFBFBD>鈭衤辣霈啣<E99C88>"<22>典<EFBFBD>
- <EFBFBD><EFBFBD>圾銝箔<EFBFBD>銋<EFBFBD><EFBFBD>瘥𤩺𠯫Git<EFBFBD>𣂷漱
-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡒊垢隞<EFBFBD><EFBFBD>
- <EFBFBD><EFBFBD><EFBFBD>
backend/src/modules/dc/index.ts鈭<EFBFBD>圾璅∪<EFBFBD>蝏𤘪<EFBFBD> - <EFBFBD><EFBFBD>粉4銝杵ervice<EFBFBD><EFBFBD>誨<EFBFBD><EFBFBD>釣<EFBFBD>? - 餈鞱<E9A488>Prisma Studio<69>亦<EFBFBD><E4BAA6>唳旿摨栞”
- <EFBFBD><EFBFBD><EFBFBD>
-
*<EFBFBD><EFBFBD>圾鈭穃<EFBFBD><EFBFBD><EFBFBD>沲<EFBFBD>?
- <EFBFBD><EFBFBD>粉`鈭穃<E988AD><E7A983>笔<EFBFBD><E7AC94>𤏸<EFBFBD><F0A48FB8><EFBFBD>
- 鈭<EFBFBD>圾憒<EFBFBD><EFBFBD>憭滨鍂撟喳蝱<EFBFBD>箇<EFBFBD>霈暹鴌
- 蝳<EFBFBD>迫嚗𡁏𧋦<EFBFBD>唳<EFBFBD>隞嗅<EFBFBD><EFBFBD>具<EFBFBD><EFBFBD><EFBFBD>摮条<EFBFBD>摮塩<EFBFBD><EFBFBD>′蝻𣇉<EFBFBD><EFBFBD>滨蔭
-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>SL璅∪<EFBFBD>
- DC璅∪<EFBFBD><EFBFBD>滨垢摨𠉛掩隡劈SL璅∪<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡舐<EFBFBD><EFBFBD>? - 憭滨鍂ASL<53><4C>ooks<6B><73><EFBFBD>隞嗅<E99A9E>撌亙<E6928C><E4BA99>賣㺭
- 靽脲<EFBFBD>銝<EFBFBD><EFBFBD>渡<EFBFBD>隞<EFBFBD><EFBFBD>憌擧聢
撣貉<EFBFBD><EFBFBD>琿𩐠
<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()摮睃<EFBFBD><EFBFBD><EFBFBD>辣
2. 雿輻鍂cache.set()蝻枏<EFBFBD><EFBFBD>唳旿
3. 瘥誩予銝讠号<EFBFBD>滚<EFBFBD>憿腐it<EFBFBD>𣂷漱
4. 憭齿<E686AD><E9BDBF>𡁏𧋦<F0A1818F>典<EFBFBD><E585B8>沌owerShell餈鞱<E9A488>
<EFBFBD><EFBFBD> 璅∪<E79285>蝏蠘恣
隞<EFBFBD><EFBFBD><EFBFBD>讐<EFBFBD>霈∴<EFBFBD>敶枏<EFBFBD>嚗?```
<EFBFBD>𡒊垢隞<EFBFBD><EFBFBD>嚗<EFBFBD>歇摰峕<EFBFBD>嚗㚁<EFBFBD>
- TypeScript<EFBFBD><EFBFBD>辣嚗?銝?- <20>餉<EFBFBD><E9A489>堆<EFBFBD>蝥?,658銵?- <20>滚𦛚撅<F0A69B9A><E69285>4銝芣<E98A9D><E88AA3>∴<EFBFBD>1,038銵?- <20>批<EFBFBD><E689B9>典<EFBFBD>嚗?88銵?- 頝舐眏撅<E79C8F><E69285>115銵? <0A>滨垢隞<E59EA2><E99A9E>嚗<EFBFBD>𧊋撘<F0A78A8B><E69298>𡢅<EFBFBD>嚗?- TypeScript/TSX<53><58>辣嚗?銝迎<E98A9D>Placeholder嚗?- <20>餉<EFBFBD><E9A489>堆<EFBFBD>14銵?- <20>笔<EFBFBD><E7AC94>蠘<EFBFBD>嚗?%
<EFBFBD>唳旿摨橒<EFBFBD>
- 銵冽㺭<EFBFBD>𧶏<EFBFBD>4銝迎<EFBFBD>Prisma Schema撌脣<E6928C>銋㚁<E98A8B>
- 摰鮋<EFBFBD><EFBFBD>𥕦遣嚗尠<EFBFBD>儭?<3F>芰&霈?```
撘<EFBFBD><EFBFBD>𤏸<EFBFBD>摨?```
<EFBFBD>港<EFBFBD>餈𥕦漲嚗𡁶漲35%
- Tool B<>𡒊垢嚗?00% <20>?- Tool B<>滨垢嚗?% <20>?- Tool A嚗?% <20>?- Tool C嚗?% <20>?- Portal嚗?% <20>?```
<EFBFBD><EFBFBD> <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