Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/01-需求分析/PRD:Tool A - 医疗数据超级合并器 (The Super Merger).md
HaHafeng 1b53ab9d52 feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
2026-01-14 19:15:01 +08:00

5.5 KiB
Raw Blame History

PRD嚗関ool A - <20><EFBFBD><E9A48C>唳旿頞<E697BF><EFBFBD><E6BCA3><EFBFBD>?(The Super Merger)

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦 V2.0 (<28><EFBFBD><E7AE8F>𡁜<EFBFBD><F0A1819C>?
*鈭批<EFBFBD><EFBFBD>? Web 蝡臬極<E887AC><EFBFBD><E79880><EFBFBD><EFBFBD>穃紡撘?Wizard嚗?
*<EFBFBD><EFBFBD>隞瑕<EFBFBD>? *<EFBFBD><EFBFBD>銝游<EFBFBD>蝘𤑳<EFBFBD>銝凌<EFBFBD><EFBFBD>撖孵<EFBFBD><EFBFBD>脲㺭<EFBFBD>桀笆朣鞾𠗕憸塩<EFBFBD>? <20><EFBFBD><E7AE94>𡏭挪閫<E68CAA><E996AB>Visit嚗争<E59A97><EFBFBD><E598A5>𨀣𧒄<F0A880A3><EFBFBD><E6B8A1><EFBFBD><EFBFBD><EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD><E5839A><EFBFBD>撉䎚<E69289><E48E9A><EFBFBD><EFBFBD>交㺭<E4BAA4>桃移<E6A183><E7A7BB><EFBFBD>頧賢<E9A0A7>雿誯堺/<2F><EFBFBD>霈啣<E99C88>銝𨳍<E98A9D>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 銝游<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𥪜𨭌<EFBFBD>?

<EFBFBD><EFBFBD>?鈭批<E988AD><EFBFBD><E7989A><EFBFBD>?(User Flow)

1. <20>唳旿鋆<E697BF>蝸 (Payload) -> 2. 摰𡁜抅<F0A1819C>?(Anchor & Window) -> 3. <20><EFBFBD>銝𡡞<E98A9D>閫?(Schema) -> 4. <20><EFBFBD><E7AE84><EFBFBD>僎 -> 5. 蝏𤘪<E89D8F>銝擧<E98A9D>頧?

鈭䎚<EFBFBD>?<3F><EFBFBD><E8A9A8><EFBFBD><E8A098><EFBFBD>瘙?(Functional Requirements)

1. 甇仿炊銝<E7828A>嚗𡁏㺭<F0A1818F><EFBFBD>頧?(Payload)

  • P0: 憭𡁏<EFBFBD>隞嗡<EFBFBD>隡𩤃<EFBFBD> <20><EFBFBD><E88880>𡝗嗻銝𠹺<E98A9D> .xlsx, .csv<73><76>遣霈桀之撠?< 50MB/<2F><><EFBFBD>?
  • P0: *<EFBFBD>芸𢆡憸<EFBFBD><EFBFBD> (Pre-flight Check)嚗?
    • 銝𠹺<EFBFBD><EFBFBD>唾圾<EFBFBD>鞱”憭氬<EFBFBD>?
    • *<EFBFBD><EFBFBD>行⏛嚗? <20><><EFBFBD><EFBFBD><E683A9><EFBFBD>”憭港蛹蝛箝<E89D9B><E7AE9D><EFBFBD>隞嗆<E99A9E><E59786>?-> 蝳<>迫銝衤<E98A9D>甇乓<E79487>?
  • P1: *<EFBFBD>㰘蝸<EFBFBD>滨蔭/璅⊥踎嚗? <20>亦鍂<E4BAA6><EFBFBD><E7919A><EFBFBD>摮䁅<E691AE><E48185>𡏭<EFBFBD><F0A18FAD>屸秄霂𠰴<E99C82>撟嗉<E6929F><E59789><EFBFBD><EFBFBD><E59885><EFBFBD>捂銝<E68D82><E98A9D><EFBFBD>頧踝<E9A0A7>頝唾<E9A09D><E594BE>𡒊賒<F0A1928A>滨蔭<E6BBA8>?

2. 甇仿炊鈭䕘<E988AD>摰𡁜抅<F0A1819C>?(The Anchor) <20><EFBFBD>?<3F><EFBFBD>蝞埈<E89D9E><E59F88><EFBFBD>

甇斗郊撉文<EFBFBD>摰帋<EFBFBD><EFBFBD><EFBFBD><EFBFBD>之銵函<EFBFBD><EFBFBD>𣈯爸<EFBFBD><EFBFBD><EFBFBD>銵峕㺭嚗匧<EFBFBD><EFBFBD>𨅯<EFBFBD>蝐駁<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?

2.1 銝餉”<E9A489>㗇𥋘 (The Backbone)

  • P0: <20><EFBFBD><EFBFBD>◆隞𦒘<E99A9E>隡删<E99AA1><E588A0><EFBFBD>辣銝剜<E98A9D>摰帋<E691B0>銝芯<E98A9D>銝?**<2A>靝蜓銵?(Visit Base)<29>?*<2A>?
  • *摰帋<EFBFBD>嚗? 銝餉”<E9A489><E2809D><EFBFBD><EFBFBD>銵䕘<E98AB5><EFBFBD><EFBFBD><E2809D><EFBFBD>之銵函<E98AB5><EFBFBD>銝芸抅<E88AB8><E68A85><EFBFBD><EFBFBD><E59A97>停霂?霈輯<E99C88>嚗剹<E59A97><E589B9><EFBFBD>𡁜虜<F0A1819C><EFBFBD>𠹺<EFBFBD><F0A0B9BA>扇敶𨰻<E695B6>𧢲<EFBFBD><F0A7A2B2>𢠃秄霂𦠜<E99C82><F0A6A09C><EFBFBD><EFBFBD>?

2.2 <20>喲睸<E596B2><EFBFBD>撠?(Key Mapping)

  • P0: ID <20>堒笆朣琜<E69CA3> <20><EFBFBD><E586BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝餉”<E9A489>?Patient_ID <20>𨰜<EFBFBD><F0A8B09C>頂蝏蠘䌊<E8A098>典銁颲<E98A81>”銝剖粉<E58996><EFBFBD><E69B89><EFBFBD><EFBFBD><E59A97>霈訾犖撌乩耨甇<E880A8><E79487>?
  • P0: <EFBFBD>園𡢿<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E586BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝餉”<E9A489>?Date <20><EFBFBD><EFBFBD><E68692>𨅯<EFBFBD><F0A885AF>𠯫<EFBCB8><EFBFBD><EFBFBD><E59885><EFBFBD><EFBFBD><EFBFBD><E692A0>銝箸𧒄<E7AEB8><EFBFBD><E6B8A1><EFBFBD><EFBFBD><EFBFBD><E695B9>?

2.3 颲<><EFBFBD><EFBFBD>蝑𣇉裦 (Matching Strategy)

  • P0: *<EFBFBD>園𡢿蝒烾<EFBFBD>蝵?(Time Window)嚗?
    • 霈曉<EFBFBD><EFBFBD><EFBFBD>嚗朞<EFBFBD>銵函<EFBFBD><EFBFBD><EFBFBD>交𧒄<EFBFBD><EFBFBD>憿餃銁 [銝餉”<E9A489>園𡢿 - X憭? 銝餉”<E9A489>園𡢿 + Y憭坼] <20><><EFBFBD><E58792><EFBFBD>?
    • 暺䁅恕<EFBFBD><EFBFBD> \\pm 7 憭押<E686AD>?
  • P0: *<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Collision Handling)嚗?
    • *<2A>箸艶嚗? <20>閙活<E99699>園𡢿蝒堒<E89D92>嚗諹<E59A97>銵冽<E98AB5>憭𡁏辺霈啣<E99C88><EFBFBD><E59A97><EFBFBD><EFBFBD>銝斗活銵<E6B4BB>撣貉<E692A3>嚗剹<E59A97>?
    • *<2A>厰★ A (暺䁅恕 - 蝥萄<E89DA5>撅訫<E69285>)嚗? 靽萘<E99DBD><E89098><EFBFBD><EFBFBD>㕑扇敶𨰻<E695B6><F0A8B0BB>蜓銵其縑<E585B6><EFBFBD><E887AC><EFBFBD>銵峕㺭憓𧼮<E68693><F0A7BCAE>?
    • *<2A>厰★ B (<28><>餈穃龪<E7A983>?嚗? 隞<><E99A9E><EFBFBD>嗵氖銝餉”<E9A489>園𡢿<E59C92><F0A1A2BF>餈𤑳<E9A488><EFBFBD><E98A9D><EFBFBD><E98A9D><EFBCB7><EFBFBD><E597A1>?

3. 甇仿炊銝㚁<E98A9D><E39A81><EFBFBD>銝𡡞<E98A9D>閫?(The Schema)

甇斗郊撉文<EFBFBD>摰帋<EFBFBD><EFBFBD><EFBFBD><EFBFBD>之銵函<EFBFBD><EFBFBD>𡏭<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>堒捐嚗剹<EFBFBD>?

3.1 <20>𤑳𠶖<F0A491B3>㗇𥋘<E39787>?(Tree Picker)

  • P0: 撅閧內<E996A7><E585A7><EFBFBD><EFBFBD>隞嗥<E99A9E><E597A5><EFBFBD><E39B96><EFBFBD><EFBFBD>?
    • <EFBFBD><EFBFBD> 銝餉”
      • <EFBFBD>?雿誯堺<E8AAAF>?
      • <EFBFBD>?霂𦠜鱏
    • <EFBFBD><EFBFBD><>” A (<28><EFBFBD>)
      • <EFBFBD>?<3F><EFBFBD><E8B39C>?
      • 漎?摰⊥瓲<E28AA5><EFBFBD> (銝滚㗲<E6BB9A>?
  • *鈭支<EFBFBD>嚗? <20><EFBFBD><E88880><EFBFBD>隞嗅<E99A9E><E59785>?<3F><EFBFBD><EFBFBD>?

3.2 摰墧𧒄蝏𤘪<E89D8F><EFBFBD><E686B8> (Live Schema Preview)

  • P0: <20><EFBFBD>撟訫𢰧靘批<E99D98><E689B9><EFBFBD>蝷暝**<2A>𨀣<EFBFBD><EFBFBD>”憭渡<E686AD><E6B8A1><EFBFBD><EFBFBD>𩄼**嚗<><E59A97>銵典仍嚗䔶<E59A97>霈∠<E99C88><E288A0>唳旿嚗剹<E59A97>?
  • 隞瑕<EFBFBD><EFBFBD> 霈拍鍂<E68B8D>瑞凒閫<E58792><E996AB><EFBFBD><EFBFBD><E5A086>𨅯𣑐嚗<F0A39190><E59A97><EFBFBD><EFBFBD><E4BAA4><EFBFBD>”隡𡁜<E99AA1><F0A1819C><EFBFBD><EFBFBD>鵭嚗<E9B5AD><E59A97><EFBFBD><EFBFBD>鈭𥕦<E988AD><F0A595A6><EFBFBD>?

4. 甇仿炊<E4BBBF>𨥈<EFBFBD>蝏𤘪<E89D8F>銝擧<E98A9D>頧?(The Result)

  • P0: <EFBFBD><EFBFBD>餈𥕦漲<EFBFBD><EFBFBD> <20>曄內<E69B84><EFBFBD><E586BD><EFBFBD><EFBFBD><E78DA2><EFBFBD>𨀣迤<F0A880A3><EFBFBD>撱箏<E692B1>撣𣬚揣撘?..<2E><EFBFBD><E88588><EFBFBD>𨀣迤<F0A880A3><EFBFBD>銵峕𧒄<E5B395><EFBFBD>蝣唳<E89DA3>...<2E><EFBFBD><E59885>?
  • P0: *<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Golden Preview)嚗?
    • <EFBFBD>◆撅閧內<EFBFBD><EFBFBD>僎蝏𤘪<EFBFBD><EFBFBD>?**<2A>?5-10 銵?* <20><EFBFBD><E7AC94>唳旿<E594B3>?
    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>厩尐<EFBFBD>詨笆 ID <20>臬炏撖寥<E69296><E5AFA5>?
  • P0: *韐券<EFBFBD><EFBFBD>𧢲踎嚗?
    • <EFBFBD>𣂼<EFBFBD><EFBFBD><EFBFBD><EFBFBD>銵峕㺭<EFBFBD>?
    • <EFBFBD>銵峕㺭嚗㇆D銝滚龪<EFBFBD>齿<EFBFBD><EFBFBD>園𡢿蝒堒<EFBFBD>嚗剹<EFBFBD>?
  • P0: *<EFBFBD>𢆡瘚<EFBFBD>蓮嚗?
    • [銝贝蝸 Excel]
    • [<5B><EFBFBD><E785BE><EFBFBD> AI 蝏𤘪<E89D8F><F0A498AA>硋極<E7A18B>愧] (瘚<>蓮 Token)
    • [<5B><EFBFBD><E785BE><EFBFBD> 蝻𤥁<E89DBB><F0A4A581><EFBFBD>瘣珢] (瘚<>蓮 Token)

銝剹<EFBFBD>?<3F><EFBFBD>蝞埈<E89D9E><E59F88><EFBFBD> (Technical Logic)

1. 蝞埈<E89D9E><E59F88>滨妍嚗𡁜抅鈭擧𧒄<E693A7><EFBFBD><E6B8A1><EFBFBD><EFBFBD>撣峕<E692A3>撘讛<E69298><E8AE9B>?(Time-Windowed Stream Hash Join)

*2. <20><EFBFBD>隡芯誨<E88AAF>?

// 1. <20><><EFBFBD><EFBFBD><EFBFBD>遣 (Build Phase)
// 撠<><E692A0>銵?(Small Tables) 霂餃<E99C82><E9A483><EFBFBD><EFBFBD> Map
const lookupMap = {
"patient_001": [
{ type: "lab", date: "2023-01-02", data: {...} }, // 霈啣<E99C88>1
{ type: "lab", date: "2023-05-01", data: {...} } // 霈啣<E99C88>2
]
};

// 2. 瘚<><E7989A><EFBFBD><EFBFBD> (Probe Phase)
// <20><EFBFBD>霂餃<E99C82>銝餉” (Main Table)
streamMainTable.on('data', (mainRow) => {
const pId = mainRow.id;
const tStart = mainRow.date - 7 days;
const tEnd = mainRow.date + 7 days;

// <20><EFBFBD>銵其葉撖餅𪄳蝚血<E89D9A><E8A180>園𡢿蝒㛖<E89D92>霈啣<E99C88>
const matchLabs = lookupMap[pId].filter(lab =>
lab.date >= tStart && lab.date <= tEnd
);

if (matchLabs.length === 0) {
// 瘝<E288AA><EFBFBD><EFBFBD>蘨颲枏枂銝餉”靽⊥<E99DBD>
output.write({ ...mainRow, lab_data: null });
} else {
// <20><EFBFBD><E5AFA5><EFBFBD> (憭<><E686AD><EFBFBD>撖孵<E69296>)
matchLabs.forEach(lab => {
output.write({ ...mainRow, ...lab.data }); // 蝥萄<E89DA5>撅訫<E69285>
});
}
});

<EFBFBD><EFBFBD>?<3F>屸𢒰<E5B1B8><EFBFBD><E7AC94><EFBFBD><EFBFBD>?(UI Reference)

霂瑕<EFBFBD><EFBFBD>?撌亙<E6928C>A_頞<5F><EFBFBD><E6BCA3><EFBFBD>沔_<E6B294><EFBFBD>霈曇恣.tsx (V1.0) 銝剔<E98A9D> Step 2 <20>?Step 3 <20>屸𢒰<E5B1B8>?

  • *Step 2 <20><EFBFBD>嚗? 銝餉”<E9A489>㗇𥋘<E39787><EFBFBD><EFBFBD><E39787><EFBFBD>𧒄<EFBFBD><EFBFBD>銝𧢲<E98A9D><EFBFBD><E78DA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4BA99>厰僼<E58EB0>?
  • *Step 3 <20><EFBFBD>嚗? 撌血𢰧<E8A180><F0A2B0A7><EFBFBD><EFBFBD><E692A3><EFBFBD>椰靘扳<E99D98><E689B3>嗅㗲<E59785><EFBFBD><E39A81>喃儒銵冽聢撉冽沲憸<E6B2B2><E686B8>嚗剹<E59A97>?

鈭𢛵<EFBFBD>?憌𡡞埯閫<E59FAF><E996AB><EFBFBD><E79289>?(Risk Check)

  1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝餉”<EFBFBD>𦒘<EFBFBD><EFBFBD><EFBFBD>
    • *撖寧<E69296>嚗? <20>?Step 2 <20>屸𢒰憓𧼮<E68693><F0A7BCAE>曄尐<E69B84>?Tip嚗尠<EFBFBD>靝蜓銵券<EFBFBD>𡁜虜<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𠯫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>凋縑<EFBFBD><EFBFBD><EFBFBD>銵冽聢<EFBFBD><EFBFBD>?
  2. <EFBFBD>園𡢿<EFBFBD><EFBFBD>銋曹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𦒘<EFBFBD><EFBFBD><EFBFBD>
    • *撖寧<E69296>嚗? <20>𡒊垢<F0A1928A>刻圾<E588BB>鞉𧒄<E99E89><EFBFBD><E6B8B8><EFBFBD><EFBFBD>◆雿輻鍂撘箏<E69298><E7AE8F>?Parser嚗<72>𣈲<EFBFBD>?2023/1/1, 2023-01-01, 44927 蝑㗇聢撘𧶏<E69298><F0A7B68F><EFBFBD><EFBFBD><EFBFBD>𡏭圾<F0A18FAD>𣂼仃韐伐<E99F90>敶雴蛹<E99BB4>𨀣𧒄<F0A880A3><EFBFBD><E6B994><EFBFBD><EFBFBD><EFBFBD>銝滩<E98A9D><EFBFBD><EFBFBD><EFBFBD>