Files
AIclinicalresearch/docs/03-业务模块/ADMIN-运营管理端/01-需求分析/02-通用能力层_07-运营与机构管理端PRD_v2.1.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

192 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **憯寡<E686AF>敺服I撟喳蝱 \- 餈鞱𨯫銝擧㦤<E693A7><E3A6A4><EFBFBD><E681A3>垢 PRD**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧋦嚗?v2.1
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E695BA><EFBFBD>?(Ready for Dev)
隡睃<EFBFBD>蝥改<EFBFBD> P0
<EFBFBD><EFBFBD><EFBFBD>嚗?璅<E79285><E288AA><EFBFBD>雿?(Modular Monolith)
<EFBFBD>湔鰵<EFBFBD><EFBFBD>嚗?<3F><EFBFBD><E595A3>𨅯<EFBFBD><F0A885AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E79899>摰帋<E691B0>銝枏<E98A9D><E69E8F><EFBFBD>憿?URL 閫<><E996AB>嚗𤤿<E59A97><F0A4A4BF>𣇉<EFBFBD><F0A38789><EFBFBD>蝵桀<E89DB5>畾萸<E795BE>?
## **1\. 銝𡁜𦛚<F0A1819C>峕艶銝𡡞<E98A9D><EFBFBD><E79899><EFBFBD>?(Context & Requirements)**
### **1.1 銝箔<E98A9D><EFBFBD><E98A8B><EFBFBD>𡁶恣<F0A181B6><E681A3>垢嚗?Why)**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>頂蝏<EFBFBD><EFBFBD>User App嚗㗇糓銝<E7B393>銝芸撩憭抒<E686AD><E68A92><EFBFBD>雿𨀣<E99BBF>撌亙<E6928C>嚗䔶<E59A97><EFBFBD><EFBFBD>碶蛹<E7A2B6><EFBFBD><E79285><E288AA><EFBFBD><EFBFBD><EFBFBD> **SaaS <20><><EFBFBD>鈭批<E988AD>**嚗峕<E59A97>隞祇𢒰銝氯<E98A9D>𦦵恣<F0A6A6B5><E681A3><EFBFBD>蝛算<E89D9B><EFBFBD>
1. **<EFBFBD><EFBFBD>鈭支<EFBFBD> B 蝡?*嚗𡁜龫<F0A1819C>僭鈭<E583AD>頂蝏<E9A082><E89D8F>蝘睲蜓隞餅<E99A9E>瘜閙<E7989C>韐血噡<E8A180><E599A1><EFBFBD><EFBFBD><EFBFBD>嚗諹晓隡<E69993>僭鈭<E583AD>頂蝏<E9A082><E89D8F><EFBFBD><EFBFBD><E4ADBE>烐綉憿寧𤌍餈𥕦漲<F0A595A6>?
2. **AI <20>鞉𧋦暺烐<E69ABA>**嚗𡁶撩銋誩<E98A8B><EFBFBD><EFBFBD><E996AB><EFBFBD>?Token 瘨<><E798A8><EFBFBD><E39B96><EFBFBD><E694B9>閙活憭扯<E686AD>璅∩遙<E288A9><E288AA>賢紡<E8B3A2><EFBFBD><E6B8AF><EFBFBD>?
3. **<EFBFBD>𥪜<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗𡁏<E59A97>甈∟<E79488><E2889F>?Prompt嚗<74><E59A97>蝷箄<E89DB7>嚗厰<E59A97><E58EB0><EFBFBD><EFBFBD>㺿隞<E3BABF><E99A9E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>敹恍<E695B9><EFBFBD>摨𥪯葩摨𠹺<E691A8>摰嗅笆 AI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E69390>?
### **1.2 撌桀<E6928C><E6A180><EFBFBD><EFBFBD>𤫇<EFBFBD>?(Who needs what)**
#### **A. 餈鞱𨯫蝞∠<E89D9E>蝡?(Ops) \- "銝𠰴<E98A9D><EFBFBD><E996AB>"**
* **<2A>𤤿<EFBFBD>**嚗帋<E59A97><E5B88B>仿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝滨䰻<E6BBA8><EFBFBD><EFBFBD><E988AD>撠煾兝嚗䔶<E59A97><E494B6><EFBFBD>靘踹<E99D98><E8B8B9><EFBFBD><E59581>?
* **<2A><EFBFBD>霂㗇<E99C82>**嚗?
* **撘<><E69298>?*嚗𡁶<E59A97><F0A181B6>駁堺/<2F><EFBFBD><EFBFBD><E69298>𡁶<EFBFBD><F0A181B6><EFBFBD><E79880>滨蔭璅<E79285><EFBFBD><E59A97><EFBFBD><EFBFBD><E98A8B><EFBFBD><E99D9A><EFBFBD>?
* **靚<><E99D9A>**嚗𡁜銁銝齿<E98A9D><E9BDBF>啁鍂<E59581><EFBFBD><E7919E><EFBFBD><EFBFBD>銝页<E98A9D><EFBFBD><E99D9A> AI Prompt<70>?
* **憌擧綉**嚗𡁶<E59A97><F0A181B6>?Token 瘨<><E798A8><EFBFBD><EFBFBD><EFBFBD>娍鱏<E5A88D>?
#### **B. <20>駁堺<E9A781><EFBFBD>蝡?(Hospital Admin) \- "蝞∩犖銝𡒊恣<F0A1928A>?**
* **<2A>𤤿<EFBFBD>**嚗𡁜龫<F0A1819C><E9BEAB><EFBFBD><EFBFBD><EFBFBD>批之嚗𣬚<E59A97><F0A3AC9A>𠉛<EFBFBD>韐孵<E99F90><E5ADB5>漤𠗕<E6BCA4>?
* **<2A><EFBFBD>霂㗇<E99C82>**嚗?
* **<2A><><EFBFBD>敶鍦<E695B6><E98DA6>?*嚗𡁶蒈敶閖△敹<E296B3><EFBFBD>臬龫<E887AC>䌊撌梁<E6928C>憭扳未<E689B3><EFBFBD><E68A92>?Logo嚗䔶<E59A97><E494B6><EFBFBD>𨀣𧋦<F0A880A3><EFBFBD><EFBCB9>𥪜像<F0A5AA9C><EFBFBD><EFBFBD>銝枏<E98A9D><E69E8F><EFBFBD>?
* **撅<>漣蝞∠<E89D9E>**嚗𡁏<E59A97><F0A1818F>𦦵<EFBFBD>摰手<E691B0>萘恣<E89098><E681A3><EFBFBD><E9BEAB><EFBFBD><EFBFBD><E68692><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗剹<E59A97>?
* **<2A><EFBFBD><E6BCA4><EFBFBD><EFBFBD>**嚗𡁜<E59A97>韐凋僭<E5878B><E583AD><EFBFBD>?Token 憸嘥漲<E598A5><E6BCB2><EFBFBD>蝏嗘<E89D8F><E59798>𣬚<EFBFBD>摰斗<E691B0>銝芯犖<E88AAF>?
#### **C. <20><EFBFBD><E887AD><EFBFBD>蝡?(Pharma Admin) \- "蝞⊿★<E28ABF><EFBFBD><E6A190><EFBFBD><EFBFBD>"**
* **<2A>𤤿<EFBFBD>**嚗䥑IT 憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD><EFBFBD>摰嗅龫<E59785><EFBFBD><EFBD87>唳旿餈𥕦漲銝漤<E98A9D>𤩺<EFBFBD><EFBFBD><E59A97><EFBFBD><E996AB><EFBFBD>拙之<E68B99>?
* **<2A><EFBFBD>霂㗇<E99C82>**嚗?
* **<2A><><EFBFBD>摰𡁜<E691B0>**嚗朞晓隡?Logo 敹<><EFBFBD><EFBFBD><E59785><EFBFBD>嚗𣬚泵<F0A3AC9A><E6B3B5><EFBFBD>銝?VI 閫<><E996AB><EFBFBD>?
* **憿寧𤌍閫<F0A48C8D>㦛**嚗帋<E59A97><E5B88B>舐恣鈭綽<E988AD><E7B6BD>峕糓蝞﹦<E89D9E>𣈯★<F0A388AF><EFBFBD><EFBFBD><EFBFBD><E68692><EFBFBD><EFBFBD><E39B96>臭葩摨羓<E691A8>蝛塚<E89D9B><E5A19A>?
* **摰∟恣<E2889F><E681A3><EFBFBD>**嚗𡁏<E59A97><F0A1818F><EFBFBD>雿𨅯<E99BBF>憿餅<E686BF><E9A485>閗蕨嚗㇁udit Log嚗剹<E59A97>?
## **2\. <20><EFBFBD><E8A9A8><EFBFBD><E59786><EFBFBD> (Architecture)**
1. **璅<E79285><E288AA><EFBFBD>雿?*嚗𡁶誧蝏剜窒<E5899C>?/frontend-v2 <20><EFBFBD><EFBFBD><E99A9E>摨瓐<E691A8><E79390><EFBFBD><EFBFBD>**頝舐眏<E88890><EFBFBD>頧?*<2A><EFBFBD>銝滚<E98A9D>蝡胯<E89DA1>?
2. **<EFBFBD>唳旿<EFBFBD>𠉛氖**嚗𡁻<E59A97><EFBFBD><E9A489>𠉛氖嚗ōenant\_id嚗剹<E59A97>?
3. **<EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD>啣漲**嚗𡁏𣈲<F0A1818F><F0A388B2><EFBFBD><E681A3><EFBFBD>/靚<><E99D9A><EFBFBD><EFBFBD><EFBFBD>煺漣<E785BA><EFBFBD>雿輻鍂 Draft <20>?Prompt<70>?
4. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>峕葡<EFBFBD>?*嚗𡁜<E59A97>蝡舀覔<E88880>?URL 頝臬<E9A09D><E887AC>𣇉<EFBFBD><F0A38789>?ID嚗<44>𢆡<EFBFBD><F0A286A1><EFBFBD>頧?CSS <20><EFBFBD><E3979B><EFBFBD><EFBFBD><E3A69B><EFBFBD>皞琜<E79A9E>摰䂿緵<E482BF>𨅯<EFBFBD>鈭箏<E988AD><E7AE8F><EFBFBD><EFBFBD> UI<55>?
## **3\. 閫坿𠧧銝擧<E98A9D><E693A7>𣂷<EFBFBD>蝟?(RBAC v2)**
**霈曇恣<E69B87><EFBFBD>**嚗𡁜抅鈭𡒊<E988AD><F0A1928A>瑞掩<E7919E><EFBFBD>Tenant Type嚗匧𢆡<E58CA7><F0A286A1><EFBFBD><EFBFBD><EFBFBD><E8A098><EFBFBD>?
| 閫坿𠧧 Code | 敶鍦<E695B6> | <20><><EFBFBD><EFBFBD><EFBFBD>凒 | URL <20><EFBFBD> | <20><EFBFBD><E8A9A8>諹提 |
| :---- | :---- | :---- | :---- | :---- |
| **SUPER\_ADMIN** | 撟喳蝱 | <20><EFBFBD><E585B8>唳旿 | /admin | 蝘<><E89D98><EFBFBD><E69298>𠾼<EFBFBD><F0A0BEBC><EFBFBD><EFBFBD><EFBFBD>蝵柴<E89DB5><E69FB4>rompt 靚<><E99D9A> |
| **HOSPITAL\_ADMIN** | <20>駁堺蝘<E5A0BA><E89D98> | <20>祇堺<E7A587>唳旿 | /org/hospital | 蝘穃恕蝞∠<E89D9E><E288A0><EFBFBD><EFBFBD>憸嘥<E686B8><E598A5>?|
| **PHARMA\_ADMIN** | <20><EFBFBD><EFBFBD><E89D98> | <20><EFBFBD>憿寧𤌍 | /org/pharma | 憿寧𤌍<E5AFA7>烐綉<E78390><E7B689>RO 蝞∠<E89D9E><E288A0><EFBFBD>恣霈?|
| **USER** | 隞餅<E99A9E><EFBFBD><E89D98> | 銝芯犖/鋡急<E98BA1><E680A5><EFBFBD><EFBFBD>?| /app | 蝘𤑳<E89D98>銝𡁜𦛚<F0A1819C><EFBFBD> |
## **4\. <20><><EFBFBD>摰𡁜<E691B0>銝𦒘<E98A9D>撅䂿蒈敶閗挽霈?(Tenant Branding) \[v2.1 <20><EFBFBD>\]**
### **4.1 URL 蝑𣇉裦 (URL Strategy)**
銝箔<EFBFBD>雿擧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>撅䂿蒈敶閖△嚗屸<EFBFBD><EFBFBD>?**頝臬<E9A09D><E887AC><EFBFBD>** <20><EFBFBD>嚗諹<E59A97><EFBFBD>摮𣂼<E691AE><F0A382BC>齿䲮獢<E4B2AE><E78DA2>?
* **<2A>𡁶鍂<F0A181B6><EFBFBD>**嚗冴ttps://app.yizhengxun.com/auth/login (<28>曄內憯寡<E686AF>敺芷<E695BA>霈?UI)
* **銝枏<E98A9D><E69E8F><EFBFBD>**嚗冴ttps://app.yizhengxun.com/t/{tenant\_code}/login
* 蝷箔<E89DB7>嚗𡁜<E59A97>鈭祉妖瘞湔蔬<E6B994>駁堺 \-\> /t/jst-hospital/login
* 蝷箔<E89DB7>嚗𡁏<E59A97><F0A1818F>𧼮龫<F0A7BCAE>?\-\> /t/hengrui/login
### **4.2 蝘<><E89D98><EFBFBD>滨蔭摮埈挾 (Tenant Config)**
<EFBFBD>?platform\_schema.tenants 銵函<E98AB5> config JSONB 摮埈挾銝剜<E98A9D>撅蓥誑銝见<E98A9D><E8A781><EFBFBD>
{
"branding": {
"logoUrl": "https://oss.../jst\_logo.png", // <20><EFBFBD> Logo (<28>𤩺<EFBFBD><F0A4A9BA>峕艶)
"loginBackgroundUrl": "https://oss.../jst\_bldg.jpg", // <20><EFBFBD>憿菔<E686BF><E88F94>臬之<E887AC>?
"primaryColor": "\#0056b3", // <20><><EFBFBD>銝餉𠧧靚?(蝘舀偌瞏剛<E79E8F>)
"welcomeTitle": "<22>𦯀漪蝘舀偌瞏剖龫<E58996>?AI 銝游<E98A9D>蝘𤑳<E89D98>撟喳蝱", // <20><EFBFBD>憿萄之<E89084><E4B98B><EFBFBD>
"welcomeSubTitle": "<22><EFBFBD><E7AE84>?繚 閫<><E996AB><EFBFBD>?繚 擃䀹<E69383><E480B9>? // <20><EFBFBD>憿萄<E686BF><E89084><EFBFBD><EFBFBD>
}
}
### **4.3 鈭支<E988AD><EFBFBD><E7989A> (User Flow)**
1. **霈輸䔮**嚗𡁶鍂<F0A181B6><EFBFBD><E7919E>餃龫<E9A483><EFBFBD>蝵煾曎<E785BE>?/t/jst-hospital/login<69>?
2. **<EFBFBD>㰘蝸<EFBFBD>滨蔭**嚗𡁜<E59A97>蝡航圾<E888AA>?URL 銝剔<E98A9D> jst-hospital嚗諹<E59A97><E8ABB9><EFBFBD><EFBFBD> API /api/public/tenant-config?code=jst-hospital<61>?
3. **皜脫<E79A9C>**嚗?
* <20>踵揢暺䁅恕<E48185>峕艶<E5B395>曆蛹 loginBackgroundUrl<72>?
* <20>踵揢 "憯寡<E686AF>敺?AI" <20><><EFBFBD>銝?"<22>𦯀漪蝘舀偌瞏剖龫<E58996>?.."<22>?
* <20>踵揢<E8B8B5><EFBFBD><EFBFBD><E78DA2><EFBFBD><EFBFBD> Logo<67>?
4. **<EFBFBD><EFBFBD>**嚗𡁶鍂<F0A181B6><EFBFBD><E79181>亥揭<E4BAA5><EFBFBD><E79195><EFBFBD><EFBFBD>?
5. **餈𥕦<E9A488>蝟餌<E89D9F>**嚗?
* 頝唾蓮<E594BE>?/app/dashboard<72>?
* **<2A>喲睸<E596B2>?*嚗𡁻▲<F0A181BB>典紡<E585B8><EFBFBD> (Global Header) 撌虫<E6928C>閫埝遬蝷?**<2A>駁堺 Logo**嚗諹<E59A97><EFBFBD>撟喳蝱 Logo<67>?
* Ant Design 銝駁<E98A9D><E9A781>脰䌊<E884B0><EFBFBD><E585B8><EFBCB6>駁堺<E9A781><E5A0BA><EFBFBD><EFBFBD><EFBFBD>?
## **5\. 餈鞱𨯫蝞∠<E89D9E>蝡臬<E89DA1><E887AC>質祕閫?(Super Admin)**
**頝舐眏嚗?* /admin/\*
### **5.1 蝘<><E89D98>銝𤾸<E98A9D>銝𡁜<E98A9D><F0A1819C>滨蔭 (Provisioning) \[<5B>湔鰵\]**
* **蝘<><E89D98><EFBFBD><E69298>?*嚗?
* **<2A><EFBFBD>靽⊥<E99DBD>**嚗𡁜<E59A97>蝘啜<E89D98><E5959C><EFBFBD><EFBFBD>瑚誨<E7919A>?(Code嚗𣬚鍂鈭?URL)<29>?
* **蝐餃<E89D90><E9A483>㗇𥋘**嚗䥅OSPITAL | PHARMA | JOURNAL<41>?
* **<2A><><EFBFBD><EFBFBD>滨蔭** (<28><EFBFBD>)嚗帋<E59A97>隡?Logo<67><6F><EFBFBD><EFBFBD>臬㦛嚗諹挽蝵?Slogan<61>?
* **璅<E79285><E99C88>**嚗𡁜㗲<F0A1819C>?ASL, DC, IIT 蝑剹<E89D91>?
* **<2A>滨蔭憸<E894AD><E686B8>**嚗𡁜銁<F0A1819C>𤾸蝱<F0A4BEB8>臭誑憸<E8AA91><E686B8>霂亦<E99C82><E4BAA6><EFBFBD><E7919E><EFBFBD>憿菜<E686BF><E88F9C><EFBFBD>?
### **5.2 Prompt 撌亦<E6928C><E4BAA6>硋像<E7A18B>?(Prompt Ops)**
* **蝻𤥁<E89DBB><F0A4A581>?*嚗鐝arkdown \+ <20><EFBFBD>擃䀝漁<E4809D>?
* **<2A>煺漣憸<E6BCA3><E686B8><EFBFBD><E69298>?*嚗𡁜<E59A97><F0A1819C><EFBFBD>嚗𣬚恣<F0A3AC9A><E681A3><EFBFBD><EFBFBD>?/app 蝡舀<E89DA1>雿𨀣𧒄<F0A880A3>芸𢆡<E88AB8>㰘蝸 Draft <20><><EFBFBD>?
### **5.3 <20>鞉𧋦<E99E89>烐綉 (Cost)**
* **Token 瘞港<E7989E>**嚗帋<E59A97><E5B88B><EFBFBD><E4BAA4>?vs 憸<><E686B8><EFBFBD>?
## **6\. <20><EFBFBD>蝞∠<E89D9E>蝡荔<E89DA1><E88D94>駁堺<E9A781>?(Hospital Admin)**
**頝舐眏嚗?* /org/hospital/\*
### **6.1 蝘穃恕銝擧<E98A9D><E693A7>条恣<E69DA1>?*
* **蝘穃恕<E7A983>?*嚗𡁜遣蝡见龫<E8A781><EFBFBD><EFBFBD><EFBFBD><E6B2B2><EFBFBD>?
* **<2A>𣂼<EFBFBD>蝞∠<E89D9E>**嚗𡁏鸌<F0A1818F>誩紡<E8AAA9>亙龫<E4BA99><E9BEAB><EFBFBD><EFBFBD><EFBFBD>蝘穃恕<E7A983>?
### **6.2 蝏讛晶銝𡡞<E98A9D>憸?*
* **<2A><EFBFBD>銝见<E98A9D>**嚗𡁜<E59A97><F0A1819C>?Token 憸嘥漲<E598A5><E6BCB2><EFBFBD>蝏嗵<E89D8F>摰扎<E691B0>?
## **7\. <20><EFBFBD>蝞∠<E89D9E>蝡荔<E89DA1><E88D94><EFBFBD><E887AD>?(Pharma Admin)**
**頝舐眏嚗?* /org/pharma/\*
### **7.1 憿寧𤌍蝞∠<E89D9E>銝剖<E98A9D>**
* **憿寧𤌍<E5AFA7>𡑒”**嚗𡁏䰻<F0A1818F>𧢲𧋦<F0A7A2B2><EFBFBD><E887AD>𤏸絲<F0A48FB8><E7B5B2><EFBFBD><EFBFBD>?IIT/IST 憿寧𤌍<E5AFA7>?
* **餈𥕦漲<F0A595A6>烐綉**嚗𡁏𦻖<F0A1818F>?IIT Manager Agent <20>唳旿<E594B3>?
### **7.2 <20><><EFBFBD>銝𤾸恣霈?*
* **<2A><EFBFBD>摰∟恣**嚗𡁏䰻<F0A1818F>𧢲㺭<F0A7A2B2>桐耨<E6A190><EFBFBD>餈嫘<E9A488>?
## **8\. 蝏煺<E89D8F><E785BA><EFBFBD>銝舘楝<E88898><EFBFBD><E58B97>?(Unified Entry)**
### **8.1 <20><EFBFBD>頝舐眏蝑𣇉裦**
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣂼<EFBFBD><EFBFBD>𠬍<EFBFBD><EFBFBD>滨垢<EFBFBD>寞旿 user.role <20>?tenant.type 餈𥡝<E9A488>頝唾蓮嚗?
function getRedirectPath(user, tenant) {
if (user.role \=== 'SUPER\_ADMIN') return '/admin/dashboard';
if (user.role \=== 'TENANT\_ADMIN') {
if (tenant.type \=== 'HOSPITAL') return '/org/hospital/dashboard';
if (tenant.type \=== 'PHARMA') return '/org/pharma/dashboard';
}
if (tenant.type \=== 'JOURNAL') return '/app/rvw/dashboard';
return '/app/dashboard';
}
## **9\. <20><><EFBFBD><EFBFBD><E887AC><EFBFBD><E59597>?(Technical Specs)**
### **9.1 <20>唳旿摨?Schema <20>䀹凒**
\-- platform\_schema.tenants
ALTER TABLE tenants
ADD COLUMN code VARCHAR(50) UNIQUE, \-- 蝘<><E89D98><EFBFBD><E99A9E> (憒?jst-hospital)
ADD COLUMN type VARCHAR(20) NOT NULL DEFAULT 'HOSPITAL',
ADD COLUMN config JSONB DEFAULT '{}';
\-- config <20><>鉄 branding: { logoUrl, loginBackgroundUrl, ... }
\-- platform\_schema.users
ALTER TABLE users
ADD COLUMN department VARCHAR(100);
### **9.2 API <20>亙藁<E4BA99><EFBFBD>**
* GET /api/public/tenant-config?code={code}
* **<2A><><EFBFBD>**嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD><EFBFBD> (Public)<29>?
* **<2A><EFBFBD>**嚗𡁏覔<F0A1818F><EFBFBD><E6A183>瑚誨<E7919A><E8AAA8><EFBFBD><EFBFBD>𧼮<EFBFBD><F0A7BCAE><EFBFBD>蝵桐縑<E6A190><EFBFBD><E88D94><EFBFBD><EFBFBD>蘨餈𥪜<E9A488> UI <20><EFBFBD><E8A9A8><EFBFBD><EFBFBD><EFBFBD>?
### **9.3 <20>滨垢<E6BBA8><EFBFBD>蝏𤘪<E89D8F>**
src/modules/
<20><EFBFBD><E98EBF><EFBFBD> auth/
<20>? <20><EFBFBD><E98EBF><EFBFBD> LoginPage.tsx \# <20>𡁶鍂<F0A181B6><EFBFBD>憿?
<20>? <20><EFBFBD><E98EBF><EFBFBD> TenantLoginPage.tsx \# <20><EFBFBD><E586BD><EFBFBD><EFBFBD>銝枏<E98A9D><E69E8F><EFBFBD>憿?(頝舐眏 /t/:code/login)
<20><EFBFBD><E98EBF><EFBFBD> admin/ \# 餈鞱𨯫蝞∠<E89D9E>蝡?
<20><EFBFBD><E98EBF><EFBFBD> org/ \# <20><EFBFBD>蝞∠<E89D9E>蝡?
<20><EFBFBD><E5A999><EFBFBD> ...
## **10\. 摰墧鴌頝舐瑪<E88890>?(Roadmap v2.1)**
* **P0 (Week 1\)**:
* DB Schema <20>䀹凒嚗<E58792><E59A97><EFBFBD>?Tenant Code, Config嚗剹<E59A97>?
* 摰䂿緵 /api/public/tenant-config <20>亙藁<E4BA99>?
*<><E69298>?TenantLoginPage 蝏<>辣嚗<E8BEA3><E59A97><EFBFBD>啣𢆡<E595A3><F0A286A1><EFBFBD><EFBFBD>?
* **P1 (Week 2\)**:
* 餈鞱𨯫蝡臬<E89DA1><E887AC><EFBFBD>𨅯<EFBFBD><F0A885AF><EFBFBD>蝵栽<E89DB5>肽”<E882BD>𤏪<EFBFBD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD><E69B84>?OSS嚗剹<E59A97>?
* 摰䂿緵<E482BF><EFBFBD> Header <20>寞旿敶枏<E695B6><E69E8F><EFBFBD> Tenant <20>芸𢆡<E88AB8><F0A286A1>揢 Logo<67>?
* **P2 (Week 3\)**:
* 摰䂿緵 /org/hospital <20><EFBFBD><E7AE87><EFBFBD><EFBFBD>