Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/02-技术设计/技术设计文档:工具 C - 科研数据编辑器.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

8.0 KiB
Raw Blame History

<EFBFBD><EFBFBD><EFBFBD>航挽霈⊥<EFBFBD><EFBFBD><EFBFBD>撌亙<EFBFBD> C - 蝘𤑳<E89D98><F0A491B3>唳旿蝻𤥁<E89DBB><F0A4A581>?(The Research Editor)

<EFBFBD><EFBFBD>﹝蝐餃<EFBFBD> Technical Design Document (TDD)
撖孵<EFBFBD> PRD PRD_撌亙<EFBFBD>C_蝘𤑳<EFBFBD><EFBFBD>唳旿蝻𤥁<EFBFBD><EFBFBD>沔_V2.1.md
<EFBFBD><EFBFBD>𧋦 V2.1 (<28><EFBFBD> Pivot 蝞埈<E89D9E>銝?Web Worker <20><EFBFBD>)
*<EFBFBD><EFBFBD>? Final Draft
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>遣銝<EFBFBD>銝芷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?Web 蝡舀㺭<E88880><EFBFBD>颲穃膥嚗峕𣈲<E5B395>?5 銝<><E98A9D>蝥扳㺭<E689B3><EFBFBD>摰墧𧒄皜<F0A79284><E79A9C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撌伐<E6928C><E4BC90>恍鵭摰質蓮<E8B3AA><EFBFBD>銝𡡞<E98A9D><EFBFBD>瘝餌<E7989D>嚗峕<E59A97>靘𥕞<E99D98>𣈯妟撱嗉<E692B1><E59789><EFBFBD>雿靝<E99BBF>撉䎚<E69289>?

1. <20><EFBFBD><E9A2B1><EFBFBD>霈曇恣 (Architecture Overview)

銝箔<EFBFBD>皛∟雲 PRD V2.1 銝凌<E98A9D>𨅯朖<F0A885AF><EFBFBD><EFBFBD><E69390><EFBFBD><E88588><EFBFBD>𨀣伃<F0A880A3><E4BC83><EFBFBD><EFBFBD><E6BB9A>苷誑<E88BB7>𠰴<EFBFBD><F0A0B0B4><EFBFBD><EFBFBD><EFBFBD>𣈯鵭摰質蓮<E8B3AA><EFBFBD><EFBFBD><EFBFBD><E79899>撌亙<E6928C> C <20><>"Local-First" (<28>砍𧑐隡睃<E99AA1>) <20><EFBFBD><E59786>? <0A><EFBFBD>蝑𣇉裦嚗?

  1. <EFBFBD>唳旿撽餌<EFBFBD>嚗? <20>唳旿<E594B3>㰘蝸<E3B098>𦒘蜓閬<E89C93><E996AC><EFBFBD>典銁瘚讛<E7989A><E8AE9B><EFBFBD> IndexedDB (Dexie.js) <20>?<EFBFBD><EFBFBD><EFBFBD> (Zustand)* 銝准<E98A9D>?
  2. *霈∠<EFBFBD>銝𧢲𦆮嚗? 憭齿<E686AD><E9BDBF><EFBFBD>恣蝞烾<E89D9E><EFBFBD><EFBFBD><E59A97> Pivot<6F><74><EFBFBD>撘讛圾<E8AE9B><EFBFBD>銝𧢲𦆮<F0A7A2B2>?Web Worker嚗屸<EFBFBD><EFBFBD>漤獈憛?UI 銝餌瑪蝔卝<E89D94>?

*1.1 蝟餌<E89D9F><E9A48C><EFBFBD><E59786>?

graph TD
subgraph Browser_Layer [瘚讛<E7989A><E8AE9B>函垢 (React SPA)]
UI_Shell[UI 憯喳<E686AF>: <20><><EFBFBD>?Toolbar + <20><EFBFBD> Sidebar]

    subgraph Core\_Engine \[<5B><EFBFBD>撘閙<E69298>\]  
        GridComponent\[AG Grid (閫<>㦛撅?\]  
        StateManager\[Zustand Store (<28><EFBFBD><E59786><EFBFBD>)\]  
          
        subgraph Worker\_Thread \[Web Worker 蝥輻<E89DA5>\]  
            ComputeEngine\[霈∠<E99C88>撘閙<E69298> (Math.js / Pivot Alg)\]  
            StatEngine\[蝏蠘恣撘閙<E69298> (<28>湔䲮<E6B994>?憸烐活)\]  
        end  
          
        HistoryManager\[Immer Patches (<28><EFBFBD><E697A5>?\]  
    end  
      
    subgraph Local\_Storage \[<5B><><EFBFBD><EFBFBD><EFBFBD>\]  
        Dexie\[Dexie.js (IndexedDB Wrapper)\]  
    end  
end  
  
subgraph Server\_Layer \[<5B>滚𦛚蝡?(Node.js)\]  
    API\[Fastify API\]  
    S3\[撖寡情摮睃<E691AE> (MinIO/OSS)\]  
end

User \--1.<2E><EFBFBD>(憒<>ivot)--\> UI\_Shell  
UI\_Shell \--2.<2E><EFBFBD><E785BE><EFBFBD><EFBFBD>?postMessage)--\> Worker\_Thread  
Worker\_Thread \--3.霈∠<E99C88>蝏𤘪<E89D8F>--\> StateManager  
StateManager \--4.<2E>湔鰵閫<E9B0B5>㦛--\> GridComponent  
StateManager \--5.撘<>郊憭<E9838A>遢--\> Dexie  
  
User \--6.靽嘥<E99DBD>/撖澆枂--\> API

2. <20><><EFBFBD><EFBFBD><EFBFBD> (Tech Stack)

<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞? <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
銵冽聢<EFBFBD><EFBFBD> AG Grid Community <EFBFBD><EFBFBD><EFBFBD><EFBFBD>韐寞𣈲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡝗嗻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>皜脫<EFBFBD><EFBFBD>?React 銵冽聢摨瓐<E691A8>?
*<EFBFBD>砍𧑐<EFBFBD>唳旿摨? Dexie.js (IndexedDB) <EFBFBD><EFBFBD> localStorage (5MB<4D>𣂼<EFBFBD>)嚗䬠ndexedDB 摰寥<E691B0>憭找<E686AD><EFBFBD>郊嚗屸<E59A97><E5B1B8><EFBFBD>摮睃<E691AE> 5銝? 銵𣬚<E98AB5> JSON <20>唳旿<E594B3><E697BF><EFBFBD>?
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? Zustand + Immer Zustand 頧駁<E9A0A7>擃䀹<E69383>嚗熘mmer <20><EFBFBD><EFBFBD><E686AD>銝滚虾<E6BB9A>䀹㺭<E480B9><EFBFBD><E6A183><EFBFBD><EFBFBD><EFBFBD>?produce <20>?patches <20><EFBFBD><E8A098><EFBFBD><E887AC>?Undo/Redo <20><>瓲敹<E793B2><E695B9>?
霈∠<EFBFBD>撘閙<EFBFBD> Math.js + Web Worker <EFBFBD><EFBFBD> JS 瘚桃<E7989A><E6A183>啁移摨阡䔮憸?(0.1+0.2!=0.3)嚗𢫕eb Worker <20><EFBFBD>撠?Pivot 蝑厰<E89D91>霈∠<E99C88>蝘餃枂銝餌瑪蝔卝<E89D94>?
<EFBFBD>唳旿憭<EFBFBD><EFBFBD> Lodash <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿頣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>皛扎<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗剹<EFBFBD>?
*<EFBFBD><EFBFBD><EFBFBD>? Ant Design Charts <EFBFBD>冽惣<EFBFBD>賭儒颲寞<EFBFBD>銝剔<EFBFBD><EFBFBD>嗥凒<EFBFBD>孵㦛 (Histogram) <20><EFBFBD>㦛 (Bar)<29>?

3. <20><EFBFBD><E79285>霂衣<E99C82>霈曇恣

3.1 <20><EFBFBD>霈∠<E99C88>撘閙<E69298> (Compute Engine - Web Worker)

A. <20>踹捐頧祆揢 (Pivot / Reshaping Algorithm) - V2.1 <20><EFBFBD><E8A9A8><EFBFBD>

餈蹱糓<EFBFBD><EFBFBD>憭齿<EFBFBD><EFBFBD><EFBFBD>恣蝞𦯀遙<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?Web Worker 銝剜<E98A9D>銵䕘<E98AB5><E49598><EFBFBD>憿菟𢒰隡𡁜㨃甇颯<E79487>?

  • *颲枏<EFBFBD><EFBFBD><EFBFBD>㺭嚗?
    • data: <20><EFBFBD>撖寡情<E5AFA1><EFBFBD> Row[]
    • indexCol: 銝駁睸<E9A781><EFBFBD> (e.g., 'patient_id') - 蝖桀<E89D96><E6A180>𡏭<EFBFBD><F0A18FAD>?
    • pivotKeyCol: <20><EFBFBD><E7AE8F><EFBFBD> (e.g., 'visit_date') - 蝖桀<E89D96><E6A180>𨅯<EFBFBD><F0A885AF>𡒊<EFBFBD><F0A1928A>?
    • valueCols: <20><EFBFBD><E6BE86>齿㺭蝏?(e.g., ['wbc', 'bmi']) - 蝖桀<E89D96><E6A180>𨅯<F0A885AF><E280B5><EFBFBD><EFBFBD>?
  • *蝞埈<EFBFBD><EFBFBD><EFBFBD>嚗?
    1. <EFBFBD><EFBFBD><EFBFBD>?(Guard): 霈∠<E99C88> Unique(pivotKeyCol).length * valueCols.length<74><68><EFBFBD><EFBFBD>𦦵<EFBFBD><F0A6A6B5><EFBFBD>瞏𨅯銁<F0A885AF>埈㺭 > 1000嚗峕<E59A97><E5B395><EFBFBD>霂胼<E99C82>𦦵<EFBFBD><F0A6A6B5><EFBFBD><E99E9F>埈㺭餈<E3BAAD><E9A488>嚗諹窈<E8ABB9><E7AA88><EFBFBD><EFBFBD>㗇㺭<E39787><EFBFBD><EFBFBD>?
    2. <EFBFBD><EFBFBD><EFBFBD> (Grouping): 雿輻鍂 _.groupBy(data, indexCol) <20>劐蜓<E58A90><EFBFBD><EFBFBD><E89D8F>?
    3. 頧祆揢 (Transformation): <20><EFBFBD>瘥讐<E798A5><E8AE90>唳旿嚗?
      • <EFBFBD>𥕦遣銝<EFBFBD>銝芣鰵銵<EFBFBD>笆鞊∴<EFBFBD>靽萘<EFBFBD>銝駁睸<EFBFBD>?
      • <EFBFBD><EFBFBD>霂亦<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>∟扇敶𤏪<EFBFBD><EFBFBD><EFBFBD> pivotKeyCol <20><><EFBFBD><EFBFBD>靘见<E99D98> "2023-01-01"嚗剹<E59A97>?
      • <EFBFBD><EFBFBD> valueCols嚗<73><E59A97><EFBFBD><EFBFBD><EFBFBD>蛹 ValueCol_PivotKey (靘见<E99D98> "wbc_2023-01-01")<29>?
    4. Schema<EFBFBD><EFBFBD><EFBFBD>: <20><EFBFBD><E586BD><EFBFBD><EFBFBD>鞉鰵<E99E89>?ColumnDefs<66>?
  • *颲枏枂嚗? { newRows, newColumnDefs }

B. <20><EFBFBD><E7A08D><EFBFBD> (Formula)

  • 雿輻鍂 math.evaluate(formula, row)<29>?
  • *摰匧<EFBFBD>瘝嗵拳嚗? <20>𣂼<EFBFBD><F0A382BC><EFBFBD>銝剖虾霈輸䔮<E8BCB8><E494AE><EFBFBD><EFBFBD><EFBFBD>銝箏<E98A9D><E7AE8F><EFBFBD><E6BBA9><EFBFBD><EFBFBD><EFBFBD><E6AEB7>脫迫 XSS<53>?
  • *<EFBFBD>虜憭<EFBFBD><EFBFBD>嚗?<><E686AD><EFBFBD>支誑<E694AF>?(Infinity) <20><EFBFBD><E5B1B8><EFBFBD>霈∠<E99C88> (NaN) <20><><EFBFBD><EFBFBD><EFBFBD>蝏煺<E89D8F>餈𥪜<E9A488> null <20><EFBFBD>霂舀<E99C82>霈啜<E99C88>?

3.2 <20><EFBFBD>靘扯器<E689AF><EFBFBD><E8AAA9>?(Insight Engine)

  • 閫血<EFBFBD>: <20>穃𨯬 AG Grid <20>?onColumnHeaderClicked 鈭衤辣<E8A1A4>?
  • <EFBFBD><EFBFBD> (Debounce): 200ms 撱嗉<E692B1>霈∠<E99C88>嚗屸俈甇<EFBCB7><EFBFBD><E7AC94><EFBFBD><EFBCB7>?UI <20><EFBFBD><E88AB0>?
  • 蝏蠘恣<EFBFBD><EFBFBD>:
    • <EFBFBD><EFBFBD><EFBFBD>: 霈∠<E99C88> Min, Max, Mean, SD嚗<44>僎雿輻鍂 Freedman-Diaconis 閫<><E996AB>霈∠<E99C88><E288A0>湔䲮<E6B994><EFBFBD> Bins<6E>?
    • <EFBFBD><EFBFBD>𧋦<EFBFBD>? 霈∠<E99C88> Top 10 憸𤑳<E686B8><F0A491B3><EFBFBD>擃条<E69383>霂溻<E99C82>?

3.3 <20><>蟮霈啣<E99C88>銝擧伃<E693A7><E4BC83> (History Manager)

  • Undo/Redo 蝑𣇉裦:
    • <EFBFBD><EFBFBD>𡁏<EFBFBD>雿?(蝻𤥁<E89DBB>/<2F>踵揢): 霈啣<E99C88> patches (Immer)<29>?
    • 蝏𤘪<EFBFBD><EFBFBD><EFBFBD>雿?(Pivot/<2F><><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><E595A3>?: <20><EFBFBD>銵函<E98AB5><E587BD><EFBFBD><EFBFBD><EFBFBD>冽㺿<E586BD><EFBFBD>霈啣<E99C88> patches <20>鞉𧋦餈<F0A78BA6><E9A488>銝娪𠗕隞亙<E99A9E>皛𠾼<E79A9B><F0A0BEBC><EFBFBD><EFBFBD>交㺿銝綽<E98A9D><EFBFBD><EFBFBD>銵峕迨蝐餅<EFBFBD>雿𨅯<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摮䀝<EFBFBD>銝芸<EFBFBD><EFBFBD>誩翰<EFBFBD>?(Checkpoint)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嗥凒<EFBFBD>仿<EFBFBD>頧賢翰<EFBFBD><EFBFBD>?

4. <20>唳旿瘚<E697BF><E7989A>摮睃<E691AE>霈曇恣

4.1 瘚讛<E7989A><E8AE9B>函垢摮睃<E691AE> (Dexie Schema)

<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銁蝻𤥁<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰䂿緵<EFBFBD>𡏭䌊<EFBFBD>典翰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𨅯援皞<EFBFBD><EFBFBD>憭𨧀<EFBFBD><EFBFBD>? const db = new Dexie('ResearchEditorDB');
db.version(2).stores({
// 憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>? projects: '++id, name, lastModified, rowCount',

// <20>唳旿<E594B3>?(Chunks): 撠?5銝<35><E98A9D><EFBFBD>唳旿<E594B3><E697BF><EFBFBD>銝箏<E98A9D>銝?Chunk 摮睃<E691AE>嚗屸<E59A97><E5B1B8><EFBFBD>甈∟粉<E2889F><EFBFBD>憭批紡<E689B9><EFBFBD><EFBFBD>膥撏拇<E6928F>  
dataChunks: '\[projectId+chunkIndex\], projectId',   
  
// <20><EFBFBD><E6BBA2><EFBFBD>蟮 (<28><EFBFBD><E585B6><EFBFBD><EFBCB7>啣㦤)  
history: 'projectId, stack',  
  
// 摰峕㟲敹怎<E695B9> (<28><EFBFBD> Pivot 蝑匧之<E58CA7><EFBFBD><E6BBA2><EFBFBD><EFBFBD>皛?  
checkpoints: '++id, projectId, createdAt'  

});

4.2 <20>𡒊垢摮睃<E691AE> (PostgreSQL + OSS)

<EFBFBD>𡒊垢隞<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𨅯歇靽嘥<EFBFBD><EFBFBD><EFBFBD>敹怎<EFBFBD>嚗䔶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰墧𧒄蝻𤥁<EFBFBD><EFBFBD>? model DatasetSnapshot {
id String @id @default(uuid())
taskId String // <20><EFBFBD>隞餃𦛚
version Int // <20><>𧋦<EFBFBD>?

// 摮睃<E691AE>銝箏之<E7AE8F>?JSON Blob嚗峕<E59A97><E5B395><EFBFBD><EFBFBD><EFBFBD>?OSS <20><>辣頝臬<E9A09D> (<28><EFBFBD> OSS)
// <20><><EFBFBD><E68D86>鉄嚗鬏ows[], columnDefs[], metadata
ossKey String

createdAt DateTime @default(now())
}

5. API <20>亙藁摰帋<E691B0>

  • POST /api/editor/init: <20><EFBFBD><E598A5>𣇉<EFBFBD>颲穃膥隡朞<E99AA1>嚗䔶<E59A97> OSS <20>㰘蝸<E3B098><EFBFBD><E7AC94><EFBFBD>辣嚗<E8BEA3><E59A97><EFBFBD>𨀣糓隞𤾸極<F0A4BEB8>?A/B 瘚<>蓮餈<E893AE><EFBFBD><E49489><EFBFBD><EFBFBD>?
  • POST /api/editor/save: 靽嘥<E99DBD>敶枏<E695B6>敹怎<E695B9><E6808E>?
  • POST /api/editor/export: 霂瑟<E99C82><E7919F>𡒊垢<F0A1928A><E59EA2><EFBFBD> Excel/SPSS <20><><EFBFBD>?
    • Payload: { rows: [...], format: 'spss' }
    • 霂湔<EFBFBD>:<><E68692><EFBFBD>唳旿<E594B3><EFBFBD>嚗𣬚凒<F0A3AC9A><EFBFBD>蝡?SheetJS <20><><EFBFBD>嚗𥟇㺭<F0A59F87><EFBFBD>憭?(>5MB) <20>𤑳<EFBFBD><F0A491B3>𡒊垢<F0A1928A><E59EA2><EFBFBD><EFBFBD>?

6. <20><EFBFBD><E689AF><EFBFBD><EFBFBD>銝舘器<E88898>?(Performance Guardrails)

<EFBFBD>唳旿<EFBFBD>讐漣 蝑𣇉裦
*< 50,000 銵? <EFBFBD><EFBFBD><EFBFBD>㰘蝸璅<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇㺭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>摮?IndexedDB嚗峕<E59A97>雿𨀣<E99BBF>敹怒<E695B9>?
*> 50,000 銵? <EFBFBD><EFBFBD><EFBFBD>瑟芋撘?(Downsampling)<EFBFBD><EFBFBD><EFBFBD>蝡臭<EFBFBD><EFBFBD>㰘蝸<EFBFBD>?5 銝<><E98A9D><EFBFBD><EFBFBD><EFBFBD><E686B8><EFBFBD><EFBFBD><E8ABB9><EFBFBD>摰𠾼<E691B0><F0A0BEBC><EFBFBD>箸𧒄嚗<F0A79284><E59A97><EFBFBD><E79A9C><EFBFBD><E996AB>嚗㇌ecipe嚗匧<E59A97><E58CA7><EFBFBD><EFBFBD><EFBFBD>𡒊垢嚗𣬚眏<F0A3AC9A>𡒊垢 Worker 撖孵<E69296><E5ADB5>𤩺㺭<F0A4A9BA><EFBFBD>銵峕鸌憭<E9B88C><E686AD><EFBFBD>?

7. 撘<><E69298>𤏸恣<F0A48FB8>?(Milestones)

  1. *Week 1: <20><EFBFBD>蝵烐聢銝𤾸<E98A9D><F0A4BEB8>?
    • <EFBFBD>剖遣 React + AG Grid <20><EFBFBD><E887AC>?
    • 摰䂿緵 SheetJS 撖澆<E69296>銝?Dexie.js <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A489>?
  2. Week 2: <20><><EFBFBD>硋極<E7A18B><EFBFBD>銝?Web Worker
    • <EFBFBD>剖遣 Web Worker <20>帋縑<E5B88B><EFBFBD><E59786>?
    • 摰䂿緵 Formula 霈∠<E99C88><E288A0>?Math.js <20><><EFBFBD><EFBFBD>?
    • 摰䂿緵 Undo/Redo <20><><EFBFBD>Immer嚗剹<E59A97>?
  3. Week 3: 憭齿<E686AD>霈∠<E99C88> (Pivot)
    • *<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗? <20>?Web Worker 銝剖<E98A9D><E58996>?Pivot 蝞埈<E89D9E><E59F88>?
    • 摰䂿緵 Pivot <20>?UI <20>滨蔭撘寧<E69298><E5AFA7>?
  4. Week 4: <20><EFBFBD>靘扯器<E689AF><EFBFBD>撖澆枂
    • <EFBFBD><EFBFBD>𤑳凒<EFBFBD>孵㦛/憸烐活<E78390><EFBFBD>隞?(AntD Charts)<29>?
    • 摰䂿緵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銵亦撩憭勗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
    • 撖寞𦻖<EFBFBD>𡒊垢靽嘥<EFBFBD><EFBFBD>亙藁<EFBFBD>