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%)
192 lines
8.3 KiB
Markdown
192 lines
8.3 KiB
Markdown
# **憯寡<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>V僭鈭<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>a<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>Z䌊撌梁<E6928C>憭扳未<E689B3>抒<EFBFBD><E68A92>?Logo嚗䔶<E59A97><E494B6>售<EFBFBD>𨀣𧋦<F0A880A3>Y<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>g<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>T<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>W<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>V蛹<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>霈a<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>Y<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> |