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%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,71 +1,71 @@
# INST-机构管理端 - 模块当前状态与开发指南
# INST-<EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡?- 璅<E79285>敶枏<E695B6><E69E8F><EFBFBD><E59786><EFBFBD><EFBFBD><E69298><EFBFBD><E78390>?
> **<2A><><EFBFBD>擧凒<E693A7><EFBFBD>** 2026-01-11
> **<2A><EFBFBD><E59786><EFBFBD>** <20>𣞁 <20><EFBFBD>憪页<E686AA>蝑匧<E89D91>餈鞱𨯫蝞∠<E89D9E>蝡臬<E89DA1><E887AC><EFBFBD>
> **版本:** v0.0 (Planning)
> **<EFBFBD><EFBFBD>𧋦嚗?* v0.0 (Planning)
---
## <20>㴓 銝<><E98A9D><EFBFBD><E4BAA5><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>摰?憿寧𤌍蝑㕑<E89D91>皞僐<E79A9E>?*
---
## 📊 当前开发状态
## <EFBFBD><EFBFBD> 敶枏<E695B6><EFBFBD><E69298>𤑳𠶖<F0A491B3>?
### ✅ 已完成
### <EFBFBD>?撌脣<E6928C><E884A3>?
- [ ] **无**(尚未开始)
- [ ] **<EFBFBD>?*嚗<><E59A97><EFBFBD><EFBFBD>憪页<E686AA>
### 🚧 进行中
### <EFBFBD>银 餈𥡝<E9A488>銝?
- [ ] **无**
- [ ] **<EFBFBD>?*
### ⏳ 待开发(依赖运营管理端)
### <EFBFBD>?敺<><E695BA><EFBFBD>𡢅<EFBFBD>靘肽<E99D98>餈鞱𨯫蝞∠<E89D9E>蝡荔<E89DA1>
**<EFBFBD>滨蔭<EFBFBD>∩辣嚗<EFBFBD><EFBFBD>憿餃<EFBFBD>摰峕<EFBFBD>嚗㚁<EFBFBD>**
- [ ] 运营管理端基础架构Phase 0-2
- [ ] 餈鞱𨯫蝞∠<EFBFBD>蝡臬抅蝖<EFBFBD><EFBFBD><EFBFBD>嚗㇊hase 0-2嚗?
- [ ]<><E89D98>蝞∠<E89D9E><E288A0><EFBFBD>
- [ ] 租户专属登录页
- [ ] <EFBFBD><EFBFBD>銝枏<EFBFBD><EFBFBD><EFBFBD>憿?
- [ ] <20><><EFBFBD>摰𡁜<E691B0><F0A1819C>滨蔭
**<EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡臬<EFBFBD><EFBFBD>𤏸恣<EFBFBD>𡜐<EFBFBD><EFBFBD>恣Week 5+嚗㚁<E59A97>**
**P1 - 医院管理端(Week 5-6**
- [ ] 用户管理CRUD + 科室分配)
**P1 - <EFBFBD>駁堺蝞∠<EFBFBD>蝡荔<EFBFBD>Week 5-6嚗?*
- [ ] <EFBFBD><EFBFBD>蝞∠<EFBFBD>嚗㇃RUD + 蝘穃恕<E7A983><E68195><EFBFBD>嚗?
- [ ] 蝘穃恕蝞∠<E89D9E><EFBFBD>𣈲<EFBFBD><F0A388B2><EFBFBD>蝥抒<E89DA5><E68A92><EFBFBD><EFBFBD>
- [ ] 配额分配(科室/个人)
- [ ] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰?銝芯犖嚗?
- [ ] 摰∟恣<E2889F><EFBFBD><E4BA99>亥砭
**P1 - 药企管理端(Week 7-8**
- [ ] 用户管理CRUD + 角色分配)
- [ ] 项目管理IIT项目关联
- [ ] 配额分配(项目/个人)
- [ ] 审计日志查询FDA合规
**P1 - <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡荔<EFBFBD>Week 7-8嚗?*
- [ ] <EFBFBD><EFBFBD>蝞∠<EFBFBD>嚗㇃RUD + 閫坿𠧧<E59DBF><F0A0A7A7><EFBFBD>嚗?
- [ ] 憿寧𤌍蝞∠<EFBFBD>嚗㇆IT憿寧𤌍<EFBFBD><EFBFBD>嚗?
- [ ] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?銝芯犖嚗?
- [ ] 摰∟恣<EFBFBD><EFBFBD><EFBFBD>亥砭嚗㇅DA<EFBFBD><EFBFBD><EFBFBD>嚗?
---
## 🏗️ 架构概览
## <EFBFBD><EFBFBD>儭?<3F><EFBFBD><EFBFBD><E79281>
```
┌─────────────────────────────────────────────────┐
机构管理端(INST Portal
├──────────────────────┬──────────────────────────┤
│ 🏥 医院管理端 │ 💊 药企管理端
├──────────────────────┼──────────────────────────┤
│ · 用户管理 │ · 用户管理
│ · 科室管理 │ · 项目管理
│ · 配额分配(科室/人) │ · 配额分配(项目/人) │
│ · 审计日志 │ · 审计日志(合规)
└──────────────────────┴──────────────────────────┘
<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><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD>? <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡荔<EFBFBD>INST Portal嚗? <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><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD>? <20><20>駁堺蝞∠<E89D9E>蝡? <20>? <20><> <20><EFBFBD>蝞∠<E89D9E>蝡? <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><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD>?繚 <20><EFBFBD>蝞∠<E89D9E> <EFBFBD>? 繚 <20><EFBFBD>蝞∠<E89D9E> <EFBFBD>?
<EFBFBD>?繚 蝘穃恕蝞∠<E89D9E> <EFBFBD>? 繚 憿寧𤌍蝞∠<E89D9E> <EFBFBD>?
<EFBFBD>?繚 <20><EFBFBD><E6BCA4><EFBFBD><EFBFBD><EFBFBD><E59A97>摰?鈭綽<E988AD> <20>? 繚 <20><EFBFBD><E6BCA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?鈭綽<E988AD> <20>?
<EFBFBD>?繚 摰∟恣<E2889F><EFBFBD> <20>? 繚 摰∟恣<E2889F><EFBFBD><EFBFBD><E59A97><EFBFBD><E996AB> <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><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD>?
蝏扳㗁餈鞱𨯫蝞∠<E89D9E>蝡舐<E89DA1><E88890><EFBFBD>霈暹鴌
┌─────────────────────────────────────────────────┐
Platform Layer
│ 认证中心 │ 权限中心 │ 多租户隔离 │ 审计日志 │
└─────────────────────────────────────────────────┘
<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><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD>? Platform Layer <EFBFBD>?
<EFBFBD>? 霈方<E99C88>銝剖<E98A9D> <20>?<3F><><EFBFBD>銝剖<E98A9D> <20>?憭𡁶<E686AD><F0A181B6><EFBFBD>蝳?<3F>?摰∟恣<E2889F><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><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><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>?
```
---
@@ -74,12 +74,12 @@
| <20><EFBFBD> | HOSPITAL_ADMIN | DEPARTMENT_ADMIN | PHARMA_ADMIN | PROJECT_MANAGER | USER |
|------|----------------|------------------|--------------|-----------------|------|
| 用户管理(租户内) | ✅ 全部 | ✅ 本科室 | ✅ 全部 | ✅ 项目成员 | |
| 科室管理 | ✅ | ❌ | N/A | N/A | |
| 项目管理 | N/A | N/A | ✅ 查看 | ✅ 管理 | |
| 配额分配 | ✅ | ✅ 本科室 | ✅ | ✅ 项目内 | ❌ |
| 审计日志 | ✅ 租户内 | ✅ 本科室 | ✅ 租户内 | ✅ 项目内 | ❌ |
| 业务模块使用 | ✅ | ✅ | ✅ | ✅ | ✅ |
| <EFBFBD><EFBFBD>蝞∠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?| <20>?<3F><EFBFBD> | <20>?<3F><EFBFBD>摰?| <20>?<3F><EFBFBD> | <20>?憿寧𤌍<E5AFA7>𣂼<EFBFBD> | <EFBFBD>?|
| 蝘穃恕蝞∠<EFBFBD> | <20>?| <20>?| N/A | N/A | <EFBFBD>?|
| 憿寧𤌍蝞∠<EFBFBD> | N/A | N/A | <EFBFBD>?<3F><EFBFBD> | <20>?蝞∠<E89D9E> | <EFBFBD>?|
| <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | <20>?| <20>?<3F><EFBFBD>摰?| <20>?| <20>?憿寧𤌍<E5AFA7>?| <20>?|
| 摰∟恣<EFBFBD><EFBFBD> | <20>?蝘<><E89D98><EFBFBD>?| <20>?<3F><EFBFBD>摰?| <20>?蝘<><E89D98><EFBFBD>?| <20>?憿寧𤌍<E5AFA7>?| <20>?|
| 銝𡁜𦛚璅<EFBFBD>雿輻鍂 | <20>?| <20>?| <20>?| <20>?| <20>?|
---
@@ -90,30 +90,30 @@
```
backend/src/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> modules/
│ └── institution/ # 机构管理端模块
├── controllers/
│ ├── hospital/
│ │ ├── user.controller.ts
│ │ ├── department.controller.ts
│ │ └── quota.controller.ts
│ │
│ └── pharma/
├── user.controller.ts
├── project.controller.ts
└── quota.controller.ts
├── services/
│ ├── hospital.service.ts
│ └── pharma.service.ts
└── routes/
├── hospital.routes.ts
└── pharma.routes.ts
<EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> institution/ # <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡舀芋<EFBFBD>?
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> controllers/
<EFBFBD>? <EFBFBD>? <20><EFBFBD><E98EBF><EFBFBD> hospital/
<EFBFBD>? <EFBFBD>? <20>? <20><EFBFBD><E98EBF><EFBFBD> user.controller.ts
<EFBFBD>? <EFBFBD>? <20>? <20><EFBFBD><E98EBF><EFBFBD> department.controller.ts
<EFBFBD>? <EFBFBD>? <20>? <20><EFBFBD><E5A999><EFBFBD> quota.controller.ts
<EFBFBD>? <EFBFBD>? <20>?
<EFBFBD>? <EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> pharma/
<EFBFBD>? <EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> user.controller.ts
<EFBFBD>? <EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> project.controller.ts
<EFBFBD>? <EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> quota.controller.ts
<EFBFBD>? <EFBFBD>?
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> services/
<EFBFBD>? <EFBFBD>? <20><EFBFBD><E98EBF><EFBFBD> hospital.service.ts
<EFBFBD>? <EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> pharma.service.ts
<EFBFBD>? <EFBFBD>?
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> routes/
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> hospital.routes.ts
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> pharma.routes.ts
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> common/
<20><EFBFBD><E5A999><EFBFBD> middleware/
<20><EFBFBD><E98EBF><EFBFBD> tenant.middleware.ts # 蝘<><E89D98><EFBFBD>𠉛氖嚗<E6B096><E59A97><EFBFBD><EFBFBD>
└── department.middleware.ts # 科室权限检查
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> department.middleware.ts # 蝘穃恕<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
```
### <20>滨垢
@@ -121,33 +121,33 @@ backend/src/
```
frontend-v2/src/
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> modules/
│ └── institution/ # 机构管理端模块
├── pages/
│ ├── hospital/
│ │ ├── UserManagement/
│ │ ├── DepartmentManagement/
│ │ ├── QuotaAllocation/
│ │ └── AuditLog/
│ │
│ └── pharma/
├── UserManagement/
├── ProjectManagement/
├── QuotaAllocation/
└── AuditLog/
└── components/
├── UserForm/
├── DepartmentTree/
├── QuotaAllocator/
└── AuditLogViewer/
<EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> institution/ # <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡舀芋<EFBFBD>?
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> pages/
<EFBFBD>? <EFBFBD>? <20><EFBFBD><E98EBF><EFBFBD> hospital/
<EFBFBD>? <EFBFBD>? <20>? <20><EFBFBD><E98EBF><EFBFBD> UserManagement/
<EFBFBD>? <EFBFBD>? <20>? <20><EFBFBD><E98EBF><EFBFBD> DepartmentManagement/
<EFBFBD>? <EFBFBD>? <20>? <20><EFBFBD><E98EBF><EFBFBD> QuotaAllocation/
<EFBFBD>? <EFBFBD>? <20>? <20><EFBFBD><E5A999><EFBFBD> AuditLog/
<EFBFBD>? <EFBFBD>? <20>?
<EFBFBD>? <EFBFBD>? <20><EFBFBD><E5A999><EFBFBD> pharma/
<EFBFBD>? <EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> UserManagement/
<EFBFBD>? <EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ProjectManagement/
<EFBFBD>? <EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> QuotaAllocation/
<EFBFBD>? <EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> AuditLog/
<EFBFBD>? <EFBFBD>?
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> components/
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> UserForm/
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> DepartmentTree/
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> QuotaAllocator/
<EFBFBD>? <EFBFBD><EFBFBD><EFBFBD><EFBFBD> AuditLogViewer/
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> layouts/
<20><EFBFBD><E5A999><EFBFBD> TenantLayout/ # 蝘<><E89D98>銝枏<E98A9D><EFBFBD><E692A3><EFBFBD><E59A97><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
```
---
## 🎨 UI/UX 特性
## <EFBFBD> UI/UX <EFBFBD><EFBFBD>?
### 1. 蝘<><E89D98><EFBFBD><EFBFBD><EFBFBD>摰𡁜<E691B0>
@@ -160,9 +160,9 @@ document.documentElement.style.setProperty('--primary-color', config.primaryColo
document.title = config.systemName;
```
**效果:**
- 协和医院看到的是协和Logo和"协和临床研究平台"
- 辉瑞药业看到的是辉瑞Logo和"辉瑞IIT管理平台"
**<EFBFBD><EFBFBD><EFBFBD>嚗?*
- <EFBFBD><EFBFBD><EFBFBD>駁堺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Logo<EFBFBD>?<3F><EFBFBD>銝游<E98A9D><E6B8B8>𠉛弦撟喳蝱"
- 颲厩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>糓颲厩<EFBFBD>Logo<EFBFBD>?颲厩<E9A2B2>IIT蝞∠<E89D9E>撟喳蝱"
### 2. 蝘穃恕<E7A983>𤑳<EFBFBD>隞塚<E99A9E><E5A19A>駁堺蝡荔<E89DA1>
@@ -175,19 +175,19 @@ document.title = config.systemName;
/>
```
**支持:**
**<EFBFBD><EFBFBD>嚗?*
- 憭𡁶漣撅訫<E69285>/<2F><EFBFBD>
- <20>𡝗嗻<F0A19D97><EFBFBD>
- 配额可视化
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
### 3. 配额分配器
### 3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
```tsx
<QuotaAllocator
totalQuota={1000000}
allocations={[
{ target: '心内科', allocated: 500000, used: 300000 },
{ target: '神内科', allocated: 300000, used: 150000 }
{ target: '<EFBFBD><EFBFBD>蝘?, allocated: 500000, used: 300000 },
{ target: '𧼮<EFBFBD>?, allocated: 300000, used: 150000 }
]}
onAllocate={(target, amount) => handleAllocate(target, amount)}
/>
@@ -200,9 +200,9 @@ document.title = config.systemName;
---
## 🗄️ 数据模型
## <EFBFBD><EFBFBD>儭?<3F>唳旿璅<E79285>
### 医院端
### <EFBFBD>駁堺蝡?
```typescript
// 蝘穃恕
@@ -221,16 +221,16 @@ interface QuotaAllocation {
id: string;
tenantId: string;
targetType: 'DEPARTMENT' | 'USER';
targetKey: string; // DepartmentID UserID
targetKey: string; // DepartmentID <EFBFBD>?UserID
limitAmount: bigint;
usedAmount: bigint;
}
```
### 药企端
### <EFBFBD><EFBFBD>蝡?
```typescript
// 项目关联IIT
// 憿寧𤌍嚗<EFBFBD><EFBFBD><EFBFBD>㶏IT嚗?
interface Project {
id: string;
tenantId: string;
@@ -252,11 +252,11 @@ interface ProjectMember {
---
## 🚀 开发流程
## <EFBFBD><EFBFBD><><E69298><EFBFBD>蝔?
### Step 1: 霈曇恣<E69B87>嗆挾嚗<E68CBE><E59A97><EFBFBD><EFBFBD>
- [ ] 详细需求文档(PRD
- [ ] 霂衣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PRD嚗?
- [ ] API<50>亙藁霈曇恣
- [ ] <20>唳旿摨栞”霈曇恣
- [ ] UI<55><EFBFBD>霈曇恣
@@ -275,19 +275,19 @@ interface ProjectMember {
- <20><EFBFBD><E6BCA4><EFBFBD><EFBFBD>API
- 摰∟恣<E2889F><EFBFBD>API嚗<49><E59A97><EFBFBD><E996AB>
### Step 3: 前端开发
### Step 3: <EFBFBD>滨垢撘<EFBFBD><EFBFBD>?
1. **<EFBFBD><EFBFBD><EFBFBD>辣**
- TenantLayout(品牌定制布局)
- QuotaAllocator(配额分配器)
- AuditLogViewer(审计日志查看器)
- TenantLayout<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
- QuotaAllocator<EFBFBD><EFBFBD>憸嘥<EFBFBD><EFBFBD>滚膥嚗?
- AuditLogViewer<EFBFBD>恣霈⊥𠯫敹埈䰻<EFBFBD>见膥嚗?
2. **医院端页面**
2. **<EFBFBD>駁堺蝡舫△<EFBFBD>?*
- <20><EFBFBD>蝞∠<E89D9E>
- 科室管理DepartmentTree
- 蝘穃恕蝞∠<EFBFBD>嚗㇄epartmentTree嚗?
- <20><EFBFBD><E6BCA4><EFBFBD><EFBFBD>
3. **药企端页面**
3. **<EFBFBD><EFBFBD>蝡舫△<EFBFBD>?*
- <20><EFBFBD>蝞∠<E89D9E>
- 憿寧𤌍蝞∠<E89D9E>
- <20><EFBFBD><E6BCA4><EFBFBD><EFBFBD>
@@ -296,48 +296,48 @@ interface ProjectMember {
## <20><> <20><EFBFBD><E8A9A8><EFBFBD>﹝撖潸⏛
### 当前可阅读
### 敶枏<EFBFBD><EFBFBD><EFBFBD>霂?
1. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
`../ADMIN-运营管理端/00-系统设计/00-权限与角色体系梳理报告_v1.0.md`
`../ADMIN-餈鞱𨯫蝞∠<EFBFBD>蝡?00-蝟餌<E89D9F>霈曇恣/00-<2D><><EFBFBD>銝舘<E98A9D><E88898><EFBFBD>蝟餅<E9A485><EFBC94>𥁒<EFBFBD>𠽤v1.0.md`
2. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡荔<EFBFBD>**
`../ADMIN-运营管理端/01-需求分析/02-通用能力层_07-运营与机构管理端PRD_v2.1.md`
`../ADMIN-餈鞱𨯫蝞∠<EFBFBD>蝡?01-<2D><><EFBFBD><E79899><EFBFBD>?02-<2D>𡁶鍂<F0A181B6><EFBFBD><EFBFBD>07-餈鞱𨯫銝擧㦤<E693A7><E3A6A4><EFBFBD><E681A3>PRD_v2.1.md`
3. **运营端状态**
`../ADMIN-运营管理端/00-模块当前状态与开发指南.md`
3. **餈鞱𨯫蝡舐𠶖<EFBFBD>?*
`../ADMIN-餈鞱𨯫蝞∠<EFBFBD>蝡?00-璅<E79285>敶枏<E695B6><E69E8F><EFBFBD><E59786><EFBFBD><EFBFBD><E69298><EFBFBD><E78390>?md`
### 待创建文档
### <EFBFBD><EFBFBD>撱箸<EFBFBD>獢?
**00-蝟餌<E89D9F>霈曇恣/**
- [ ] `01-机构管理端架构设计.md`
- [ ] `02-多租户隔离设计.md`
- [ ] `01-<EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡舀沲<EFBFBD><EFBFBD>挽霈?md`
- [ ] `02-憭𡁶<EFBFBD><EFBFBD><EFBFBD>蝳餉挽霈?md`
- [ ] `03-<2D><EFBFBD>蝞∠<E89D9E>霈曇恣.md`
**01-需求分析/**
**01-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?**
- [ ] `01-<2D>駁堺蝞∠<E89D9E>蝡烈RD.md`
- [ ] `02-<2D><EFBFBD>蝞∠<E89D9E>蝡烈RD.md`
- [ ] `03-用户故事与验收标准.md`
- [ ] `03-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>銝𡡞<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?md`
**02-技术设计/**
**02-<EFBFBD><EFBFBD><EFBFBD>航挽霈?**
- [ ] `01-API霈曇恣<E69B87><E681A3>﹝.md`
- [ ] `02-数据库设计文档.md`
- [ ] `03-科室树实现方案.md`
- [ ] `02-<EFBFBD>唳旿摨栞挽霈⊥<EFBFBD>獢?md`
- [ ] `03-蝘穃恕<EFBFBD><EFBFBD><EFBFBD>唳䲮獢?md`
- [ ] `04-<2D><EFBFBD>霈∠<E99C88>蝞埈<E89D9E>.md`
**03-UI霈曇恣/**
- [ ] `01-医院端原型设计.html`
- [ ] `02-药企端原型设计.html`
- [ ] `01-<EFBFBD>駁堺蝡臬<EFBFBD><EFBFBD>贝挽霈?html`
- [ ] `02-<EFBFBD><EFBFBD>蝡臬<EFBFBD><EFBFBD>贝挽霈?html`
- [ ] `03-<2D><><EFBFBD>摰𡁜<E691B0><F0A1819C><EFBFBD><EFBFBD>.md`
---
## ⚠️ 技术要点
## <EFBFBD>𩤃<EFBFBD> <20><><EFBFBD><EFBFBD><E888AA>?
### 1. 多租户隔离
### 1. 憭𡁶<EFBFBD><EFBFBD><EFBFBD>蝳?
```typescript
// 中间件:确保只能访问自己租户的数据
// 銝剝𡢿隞塚<EFBFBD>蝖桐<EFBFBD><EFBFBD><EFBFBD>霈輸䔮<EFBFBD>芸楛蝘<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
export const requireTenantAccess = async (request: FastifyRequest) => {
const { tenantId } = request.user;
const { id } = request.params;
@@ -352,10 +352,10 @@ export const requireTenantAccess = async (request: FastifyRequest) => {
};
```
### 2. 科室权限检查
### 2. 蝘穃恕<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
```typescript
// 科室管理员只能管理自己科室
// 蝘穃恕蝞∠<EFBFBD><EFBFBD>睃蘨<EFBFBD>賜恣<EFBFBD><EFBFBD>䌊撌梁<EFBFBD>摰?
export const requireDepartmentAccess = async (request: FastifyRequest) => {
const { role, departmentId } = request.user;
const { deptId } = request.params;
@@ -369,12 +369,12 @@ export const requireDepartmentAccess = async (request: FastifyRequest) => {
### 3. <20><EFBFBD>霈∠<E99C88>
```typescript
// 计算可分配配额
// 霈∠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憸?
export const calculateAvailableQuota = async (tenantId: string) => {
// 1. 获取租户总配额
// 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憸?
const tenantQuota = await getTenantQuota(tenantId);
// 2. 计算已分配配额
// 2. 霈∠<EFBFBD>撌脣<EFBFBD><EFBFBD><EFBFBD>憸?
const allocated = await prisma.tenantQuotaAllocation.aggregate({
where: { tenantId },
_sum: { limitAmount: true }
@@ -387,30 +387,30 @@ export const calculateAvailableQuota = async (tenantId: string) => {
---
## 🔍 与运营管理端的对比
## <EFBFBD><EFBFBD> 銝舘<E98A9D><E88898>亦恣<E4BAA6><E681A3><EFBFBD><E59EA2>笆瘥?
| 特性 | 运营管理端ADMIN | 机构管理端(INST |
| <EFBFBD><EFBFBD>?| 餈鞱𨯫蝞∠<E89D9E>蝡荔<E89DA1>ADMIN嚗?| <20><EFBFBD>蝞∠<E89D9E>蝡荔<E89DA1>INST嚗?|
|------|-------------------|------------------|
| **用户** | 公司内部运营人员 | 医院/药企管理员 |
| **权限** | 全局管理权限 | 租户级管理权限 |
| **租户管理** | ✅ 创建/管理所有租户 | ❌ 只能看到自己租户 |
| **用户管理** | ✅ 全局用户管理 | ✅ 租户内用户管理 |
| **配额管理** | ✅ 分配租户总配额 | ✅ 分配科室/项目配额 |
| **Prompt管理** | ✅ 生产环境调试 | ❌ 无权限 |
| **审计日志** | ✅ 全局日志 | ✅ 租户内日志 |
| **品牌定制** | ✅ 配置所有租户品牌 | ❌ 只能查看 |
| **<EFBFBD><EFBFBD>** | <EFBFBD>砍虬<EFBFBD><EFBFBD><EFBFBD>餈鞱𨯫鈭箏<EFBFBD> | <20>駁堺/<2F><EFBFBD>蝞∠<E89D9E><E288A0>?|
| **<EFBFBD><EFBFBD><EFBFBD>** | <EFBFBD><EFBFBD>蝞∠<EFBFBD><EFBFBD><EFBFBD><EFBFBD> | 蝘<><E89D98>蝥抒恣<E68A92><E681A3><EFBFBD><EFBFBD>?|
| **<EFBFBD><EFBFBD>蝞∠<EFBFBD>** | <EFBFBD>?<3F>𥕦遣/蝞∠<E89D9E><E288A0><EFBFBD><EFBFBD><EFBFBD><E58EA9>?| <20>?<3F><EFBFBD><E88ABE><EFBFBD><E8A781>芸楛蝘<E6A59B><E89D98> |
| **<EFBFBD><EFBFBD>蝞∠<EFBFBD>** | <EFBFBD>?<3F><EFBFBD><E585B8><EFBFBD>蝞∠<E89D9E> | <20>?蝘<><E89D98><EFBFBD><EFBFBD><EFBFBD>瑞恣<E7919E>?|
| **<EFBFBD><EFBFBD>蝞∠<EFBFBD>** | <EFBFBD>?<3F><><EFBFBD><EFBFBD><E89D98><EFBFBD><EFBFBD>憸?| <20>?<3F><><EFBFBD>蝘穃恕/憿寧𤌍<E5AFA7><EFBFBD> |
| **Prompt蝞∠<EFBFBD>** | <EFBFBD>?<3F>煺漣<E785BA><EFBFBD><EFBFBD><E99D9A> | <20>?<3F><EFBFBD><E4ADBE>?|
| **摰∟恣<EFBFBD><EFBFBD>** | <EFBFBD>?<3F><EFBFBD><E585B8><EFBFBD> | <20>?蝘<><E89D98><EFBFBD><EFBFBD>𠯫敹?|
| **<EFBFBD><EFBFBD><EFBFBD>摰𡁜<EFBFBD>** | <EFBFBD>?<3F>滨蔭<E6BBA8><E894AD><EFBFBD><EFBFBD><E58EA9><EFBFBD><E79195>?| <20>?<3F><EFBFBD><E88ABE><EFBFBD> |
---
## 📅 预计开发时间
## <EFBFBD><EFBFBD><>恣撘<E681A3><E69298>烐𧒄<E78390>?
**前提:** 运营管理端基础架构完成Week 4
**<EFBFBD>齿<EFBFBD>嚗?* 餈鞱𨯫蝞∠<E89D9E>蝡臬抅蝖<E68A85><E89D96><EFBFBD>摰峕<E691B0>嚗Áeek 4嚗?
- **Week 5-6** 医院管理端8人天
- **Week 7-8** 药企管理端8人天
- **Week 9** 测试与优化3人天
- **Week 5-6嚗?* <20>駁堺蝞∠<E89D9E>蝡荔<E89DA1>8鈭箏予嚗?
- **Week 7-8嚗?* <20><EFBFBD>蝞∠<E89D9E>蝡荔<E89DA1>8鈭箏予嚗?
- **Week 9嚗?* 瘚贝<E7989A>銝𦒘<E98A9D><F0A69298><EFBFBD>3鈭箏予嚗?
**总计:** 约19人天~4周
**<EFBFBD>餉恣嚗?* 蝥?9鈭箏予嚗ǚ4<C79A><EFBFBD>
---
@@ -418,11 +418,11 @@ export const calculateAvailableQuota = async (tenantId: string) => {
1. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗𡁜<E59A97><F0A1819C><EFBFBD><EFBFBD><EFBFBD>亦恣<E4BAA6><E681A3>垢摰䂿緵
2. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗𡁏䰻<F0A1818F>㞗00-<2D><><EFBFBD>銝舘<E98A9D><E88898><EFBFBD>蝟餅<E9A485><EFBC94>𥁒<EFBFBD>𠽤v1.0.md`
3. **UI问题**参考DC/ASL等已有模块
3. **UI<EFBFBD><EFBFBD>**嚗𡁜<E59A97><F0A1819C><EFBFBD>C/ASL蝑匧歇<E58CA7>㗇芋<E39787>?
---
## 🎯 下一步行动
## <EFBFBD>㴓 銝衤<E98A9D>甇亥<E79487><E4BAA5>?
- [ ] 蝑匧<E89D91>餈鞱𨯫蝞∠<E89D9E>蝡臬<E89DA1><E887AC>𣂼抅蝖<E68A85><E89D96><EFBFBD>
- [ ]<>憪讠<E686AA><E8AEA0>躰祕蝏<E7A595>RD
@@ -431,11 +431,12 @@ export const calculateAvailableQuota = async (tenantId: string) => {
---
*机构管理端虽然尚未开始开发,但设计思路已明确。待运营管理端完成后,可快速启动开发。*
*<2A><EFBFBD>蝞∠<E89D9E>蝡航蒾<E888AA><EFBFBD><E59785><EFBFBD>憪见<E686AA><E8A781>𡢅<EFBFBD><EFBFBD>挽霈⊥<E99C88>肽楝撌脫<E6928C>蝖柴<E89D96><E69FB4><EFBFBD>餈鞱𨯫蝞∠<E89D9E>蝡臬<E89DA1><E887AC>𣂼<EFBFBD><EFBFBD>虾敹恍<E695B9>笔鍳<E7AC94><EFBFBD><E585B8><EFBFBD>?
---
**🚀 敬请期待!**
**<EFBFBD><EFBFBD> <20>祈窈<E7A588><EFBFBD>嚗?*

View File

@@ -1,155 +1,155 @@
# INST - 机构管理端
# INST - <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡?
> **模块代码:** INST
> **模块名称:** 机构管理端(Institution Management Portal
> **<EFBFBD><EFBFBD><EFBFBD>嚗?* INST
> **<EFBFBD><EFBFBD>滨妍嚗?* <20><EFBFBD>蝞∠<E89D9E>蝡荔<E89DA1>Institution Management Portal嚗?
> **隡睃<E99AA1>蝥改<E89DA5>** P1嚗<31><E59A97><EFBFBD><E996AC><EFBFBD><EFBFBD>
> **开发状态:** 🔴 未开始
> **<EFBFBD><EFBFBD>𤑳𠶖<EFBFBD><EFBFBD><EFBFBD>** <20>𣞁 <20><EFBFBD>憪?
> **韐蠘提鈭綽<E988AD>** [敺<><E695BA>]
---
## <20><><E79285><EFBFBD>
机构管理端是为**医院客户**和**药企客户**提供的自服务管理界面,让机构管理员能够独立管理自己租户内的用户、配额、科室等资源。
<EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡舀糓銝?*<2A>駁堺摰<E691B0>**<2A>?*<2A><EFBFBD><E691B0>**<2A>𣂷<EFBFBD><F0A382B7><EFBFBD><EFBFBD>滚𦛚蝞∠<E89D9E><E288A0>屸𢒰嚗諹悟<E8ABB9><EFBFBD>蝞∠<E89D9E><E288A0><EFBFBD>憭毺𡠺蝡讠恣<E8AEA0><E681A3>䌊撌梁<E6928C><E6A281><EFBFBD><E79195><EFBFBD><EFBFBD><EFBFBD><E791AF><EFBFBD>憸腈<E686B8><E88588><EFBFBD>摰斤<E691B0><EFBFBD><E99F8F><EFBFBD>?
### 核心价值
### <EFBFBD><EFBFBD>隞瑕<EFBFBD>?
1. **自服务管理**:减轻运营团队压力,机构自主管理
2. **配额分配**:医院/药企内部按科室或个人分配Token额度
3. **用户管理**:机构内部用户的创建、编辑、停用
4. **数据隔离**:只能看到和管理自己租户的数据
1. **<EFBFBD><EFBFBD><EFBFBD>∠恣<EFBFBD>?*嚗𡁜<E59A97>頧餉<E9A0A7><E9A489>亙𣪧<E4BA99><EFBFBD><E7AC94>𨥈<EFBFBD><F0A8A588><EFBFBD><E7AEB8>芯蜓蝞∠<E89D9E>
2. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**嚗𡁜龫<F0A1819C>?<3F><EFBFBD><E887AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰斗<E691B0>銝芯犖<E88AAF><E78A96><EFBFBD>Token憸嘥漲
3. **<EFBFBD><EFBFBD>蝞∠<EFBFBD>**嚗𡁏㦤<F0A1818F><E3A6A4><EFBFBD><EFBFBD>函鍂<E587BD><EFBFBD><E7919E>𥕦遣<F0A595A6><E981A3><EFBFBD>颲㻫<E9A2B2><E3BBAB><EFBFBD><EFBFBD>?
4. **<EFBFBD>唳旿<EFBFBD>𠉛氖**嚗𡁜蘨<F0A1819C><EFBFBD><E8B39C><EFBFBD>蝞∠<E89D9E><E288A0>芸楛蝘<E6A59B><E89D98><EFBFBD><EFBFBD><EFBFBD>?
---
## <20><20><EFBFBD><E8A9A8><EFBFBD><E79285>
### 1. 医院管理端(Hospital Admin
### 1. <EFBFBD>駁堺蝞∠<EFBFBD>蝡荔<EFBFBD>Hospital Admin嚗?
#### <20><EFBFBD>蝞∠<E89D9E>
- 瘛餃<E7989B>/蝻𤥁<E89DBB>/<2F>𦦵鍂<F0A6A6B5>駁堺<E9A781><E5A0BA><EFBFBD><EFBFBD><EFBFBD>
- 分配用户到科室
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰?
- 霈曄蔭<E69B84><EFBFBD>閫坿𠧧嚗<F0A0A7A7><E59A97>摰斤恣<E696A4><E681A3><EFBFBD>/<2F><EFBFBD>𡁶鍂<F0A181B6><EFBFBD>
#### 蝘穃恕蝞∠<E89D9E>
- <20>𥕦遣/蝻𤥁<E89DBB>/<2F>𣳇膄蝘穃恕
- 支持多级科室结构(心内科 → 一病区)
- <EFBFBD><EFBFBD>憭𡁶漣蝘穃恕蝏𤘪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>?銝<><E98A9D><EFBFBD>躹嚗?
- <20><EFBFBD>蝘穃恕<E7A983>𣂼<EFBFBD><F0A382BC>𡑒”
#### <20><EFBFBD>蝞∠<E89D9E>
- <20><EFBFBD><E4BAA6>駁堺<E9A781><EFBFBD>憸嘥<E686B8>雿輻鍂<E8BCBB><E98D82><EFBFBD>
- <20><EFBFBD>摰文<E691B0><E69687>䕡oken憸嘥漲
- <20>劐葵鈭箏<E988AD><E7AE8F>䕡oken憸嘥漲
- 配额使用统计和预警
- <EFBFBD><EFBFBD>雿輻鍂蝏蠘恣<EFBFBD><EFBFBD>霅?
#### 摰∟恣<E2889F><EFBFBD>
- 查看医院内部的操作记录
- <EFBFBD><EFBFBD><EFBFBD>駁堺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿𡏭扇敶?
- 撖澆枂摰∟恣<E2889F><EFBFBD>
---
### 2. 药企管理端(Pharma Admin
### 2. <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡荔<EFBFBD>Pharma Admin嚗?
#### <20><EFBFBD>蝞∠<E89D9E>
- 瘛餃<E7989B>/蝻𤥁<E89DBB>/<2F>𦦵鍂<F0A6A6B5><EFBFBD><E887AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
- 分配用户角色(项目负责人/数据分析师/普通用户)
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>閫坿𠧧嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>犖/<2F>唳旿<E594B3><E697BF><EFBFBD>撣?<3F><EFBFBD>𡁶鍂<F0A181B6><EFBFBD>
#### 憿寧𤌍蝞∠<E89D9E>
- <20><EFBFBD><E4BAA6><EFBFBD><E887AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IT憿寧𤌍<E5AFA7>𡑒”
- 查看项目进展和数据统计
- <EFBFBD><EFBFBD>憿寧𤌍餈𥕦<EFBFBD><EFBFBD>峕㺭<EFBFBD><EFBFBD>霈?
- 憿寧𤌍<E5AFA7>𣂼<EFBFBD>蝞∠<E89D9E>
#### <20><EFBFBD>蝞∠<E89D9E>
- <20><EFBFBD><E4BAA6><EFBFBD><E887AD><EFBFBD>憸嘥<E686B8>雿輻鍂<E8BCBB><E98D82><EFBFBD>
- <20>厰★<E58EB0><EFBFBD><E6A180>䕡oken憸嘥漲
- <20>厩鍂<E58EA9><EFBFBD><E79195>䕡oken憸嘥漲
- 配额使用统计和预警
- <EFBFBD><EFBFBD>雿輻鍂蝏蠘恣<EFBFBD><EFBFBD>霅?
#### 摰∟恣<E2889F><EFBFBD><EFBFBD><E59A97><EFBFBD><E996AB><EFBFBD><E79899>
- 查看所有数据修改记录(FDA 21 CFR Part 11
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇㺭<EFBFBD>桐耨<EFBFBD>寡扇敶𤏪<EFBFBD>FDA 21 CFR Part 11嚗?
- <20><EFBFBD>IIT璅<E79285><E288AA><EFBFBD><E8A9A8><EFBFBD>
- 撖澆枂摰∟恣<E2889F><EFBFBD><EFBFBD>𣈲<EFBFBD><F0A388B2><EFBFBD><EFBFBD><EFBFBD><E99C82>
---
## 🔐 角色与权限设计
## <EFBFBD><EFBFBD> 閫坿𠧧銝擧<E98A9D><E693A7>鞱挽霈?
### 医院端角色
### <EFBFBD>駁堺蝡航<EFBFBD><EFBFBD>?
| 閫坿𠧧 | 閫坿𠧧Code | <20><><EFBFBD><EFBFBD><EFBFBD>凒 | 霂湔<E99C82> |
|------|---------|---------|------|
| **医院管理员** | HOSPITAL_ADMIN | 租户级管理 | 管理医院内所有资源 |
| **科室管理员** | DEPARTMENT_ADMIN | 科室级管理 | 仅管理自己科室 |
| **<EFBFBD>駁堺蝞∠<EFBFBD><EFBFBD>?* | HOSPITAL_ADMIN | <EFBFBD><EFBFBD>蝥抒恣<EFBFBD>?| 蝞∠<E89D9E><E288A0>駁堺<E9A781><E5A0BA><EFBFBD><EFBFBD><EFBFBD>皞?|
| **蝘穃恕蝞∠<EFBFBD><EFBFBD>?* | DEPARTMENT_ADMIN | 蝘穃恕蝥抒恣<EFBFBD>?| 隞<><EFBFBD><E681A3>䌊撌梁<E6928C>摰?|
| **<EFBFBD><EFBFBD>/<2F><EFBFBD>** | USER | <20><EFBFBD><E7AE87><EFBFBD> | 雿輻鍂銝𡁜𦛚璅<E79285> |
### 药企端角色
### <EFBFBD><EFBFBD>蝡航<EFBFBD><EFBFBD>?
| 閫坿𠧧 | 閫坿𠧧Code | <20><><EFBFBD><EFBFBD><EFBFBD>凒 | 霂湔<E99C82> |
|------|---------|---------|------|
| **药企管理员** | PHARMA_ADMIN | 租户级管理 | 管理药企内所有资源 |
| **项目负责人** | PROJECT_MANAGER | 项目级管理 | 管理特定IIT项目 |
| **数据分析师** | DATA_ANALYST | 只读权限 | 查看项目数据和报告 |
| **普通用户** | USER | 基础功能 | 使用业务模块 |
| **<EFBFBD><EFBFBD>蝞∠<EFBFBD><EFBFBD>?* | PHARMA_ADMIN | <EFBFBD><EFBFBD>蝥抒恣<EFBFBD>?| 蝞∠<E89D9E><E288A0><EFBFBD><E887AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>皞?|
| **憿寧𤌍韐蠘提鈭?* | PROJECT_MANAGER | 憿寧𤌍蝥抒恣<EFBFBD>?| 蝞∠<E89D9E><E288A0><EFBFBD>IIT憿寧𤌍 |
| **<EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD>撣?* | DATA_ANALYST | <EFBFBD>芾粉<EFBFBD><EFBFBD><EFBFBD> | <20><EFBFBD>憿寧𤌍<E5AFA7>唳旿<E594B3>峕𥁒<E5B395>?|
| **<EFBFBD><EFBFBD>𡁶鍂<EFBFBD>?* | USER | <20><EFBFBD><E7AE87><EFBFBD> | 雿輻鍂銝𡁜𦛚璅<E79285> |
---
## <20><> <20><>﹝蝏𤘪<E89D8F>
```
INST-机构管理端/
├── README.md # 本文件
├── 00-模块当前状态与开发指南.md # 快速上手指南
INST-<EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> README.md # <EFBFBD><EFBFBD>隞?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 00-璅<E79285>敶枏<E695B6><E69E8F><EFBFBD><E59786><EFBFBD><EFBFBD><E69298><EFBFBD><E78390>?md # 敹恍<EFBFBD><EFBFBD><EFBFBD>𧢲<EFBFBD><EFBFBD>?
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 00-蝟餌<E89D9F>霈曇恣/ # 蝟餌<E89D9F><E9A48C><EFBFBD>霈曇恣
├── 01-需求分析/ # PRD文档
├── 02-技术设计/ # 技术设计文档
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 01-<2D><><EFBFBD><E79899><EFBFBD>? # PRD<EFBFBD><EFBFBD>
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 02-<2D><><EFBFBD>航挽霈? # <EFBFBD><EFBFBD><EFBFBD>航挽霈⊥<EFBFBD>獢?
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 03-UI霈曇恣/ # <20><EFBFBD>銝䇊I霈曇恣
├── 04-开发计划/ # 开发计划与任务分解
├── 05-测试文档/ # 测试用例与测试数据
├── 06-开发记录/ # 每日开发总结
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 04-撘<><E69298>𤏸恣<F0A48FB8>? # <EFBFBD><EFBFBD>𤏸恣<EFBFBD><EFBFBD>隞餃𦛚<EFBFBD><EFBFBD>
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 05-瘚贝<E7989A><E8B49D><EFBFBD>/ # 瘚贝<EFBFBD><EFBFBD><EFBFBD>銝擧<EFBFBD>霂閙㺭<EFBFBD>?
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 06-撘<><E69298>𤏸扇敶? # 瘥𤩺𠯫撘<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 07-<2D><><EFBFBD><EFBFBD>箏𦛚/ # <20><><EFBFBD><EFBFBD>箏𦛚皜<F0A69B9A><E79A9C>
```
---
## 🗄️ 数据库Schema
## <EFBFBD><EFBFBD>儭?<3F>唳旿摨廍chema
### 核心表(platform_schema
### <EFBFBD><EFBFBD>銵剁<EFBFBD>platform_schema嚗?
- `tenants` - 租户表(机构基本信息)
- `tenants` - <EFBFBD><EFBFBD>銵剁<EFBFBD><EFBFBD><EFBFBD><EFBFBD>箸𧋦靽⊥<EFBFBD>嚗?
- `tenant_members` - 蝘<><E89D98><EFBFBD>𣂼<EFBFBD><F0A382BC>喟頂
- `tenant_quotas` - 蝘<><E89D98><EFBFBD><EFBFBD>
- `tenant_quota_allocations` - 配额分配(科室/个人/项目)
- `departments` - 科室表(医院专用)
- `tenant_operation_logs` - 租户级操作日志
- `tenant_quota_allocations` - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰?銝芯犖/憿寧𤌍嚗?
- `departments` - 蝘穃恕銵剁<EFBFBD><EFBFBD>駁堺銝梶鍂嚗?
- `tenant_operation_logs` - <EFBFBD><EFBFBD>蝥扳<EFBFBD>雿𨀣𠯫敹?
### 关联表
### <EFBFBD><EFBFBD>銵?
- `users` - 用户表
- `users` - <EFBFBD><EFBFBD>銵?
- `iit_projects` - IIT憿寧𤌍銵剁<E98AB5><E58981><EFBFBD>蝡荔<E89DA1>
- `admin_operation_logs` - 审计日志可按module过滤
- `admin_operation_logs` - 摰∟恣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>电odule餈<EFBFBD>誘嚗?
---
## <20><> <20><><EFBFBD><EFBFBD>
### <20>𡒊垢
- **框架:** Fastify + Prisma
- **<EFBFBD>沲嚗?* Fastify + Prisma
- **<2A>唳旿摨橒<E691A8>** PostgreSQL 14+
- **认证:** JWT继承运营管理端
- **权限:** RBAC(继承运营管理端)
- **霈方<EFBFBD>嚗?* JWT嚗<54><EFBFBD><EFBFBD><E8BCAF>亦恣<E4BAA6><E681A3>垢嚗?
- **<EFBFBD><EFBFBD><EFBFBD>嚗?* RBAC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>亦恣<EFBFBD><EFBFBD>垢嚗?
### <20>滨垢
- **框架:** React 19 + TypeScript
- **<EFBFBD>沲嚗?* React 19 + TypeScript
- **UI摨橒<E691A8>** Ant Design 6.0
- **<2A><EFBFBD><E59786><EFBFBD><E681A3><EFBFBD>** React Context + Hooks
- **路由:** React Router v6
- **頝舐眏嚗?* React Router v6
---
@@ -158,39 +158,39 @@ INST-机构管理端/
### 蝘<><E89D98>銝枏<E98A9D><E69E8F><EFBFBD>
```
# 医院端登录
# <EFBFBD>駁堺蝡舐蒈敶?
https://platform.example.com/t/hospital-301/login
# 药企端登录
# <EFBFBD><EFBFBD>蝡舐蒈敶?
https://platform.example.com/t/pharma-abc/login
```
### <20><><EFBFBD>摰𡁜<E691B0>
- Logo(租户自定义)
- Logo<EFBFBD><EFBFBD><EFBFBD>瑁䌊摰帋<EFBFBD>嚗?
- <20>峕艶<E5B395><EFBFBD><EFBFBD><E89D98><EFBFBD><EFBFBD>銋㚁<E98A8B>
- 銝駁<E98A9D><E9A781><EFBFBD><EFBFBD><E89D98><EFBFBD><EFBFBD>銋㚁<E98A8B>
- 系统名称(租户自定义)
- 蝟餌<EFBFBD><EFBFBD>滨妍嚗<EFBFBD><EFBFBD><EFBFBD>瑁䌊摰帋<EFBFBD>嚗?
**数据来源:** `tenants.config` (JSONB字段)
**<EFBFBD>唳旿<EFBFBD><EFBFBD>嚗?* `tenants.config` (JSONB摮埈挾)
---
## <20><><><E69298>𤏸楝蝥踹㦛嚗<E3A69B><E59A97>摰𡄯<E691B0>
### Phase 1: 医院管理端MVPWeek 5-6
### Phase 1: <EFBFBD>駁堺蝞∠<EFBFBD>蝡烘VP嚗Áeek 5-6嚗?
- [ ] <20><EFBFBD>蝞∠<E89D9E><E288A0>屸𢒰
- [ ] 蝘穃恕蝞∠<E89D9E><E288A0>屸𢒰
- [ ] <20><EFBFBD><E6BCA4><EFBFBD><EFBFBD><EFBFBD>屸𢒰
- [ ] 租户专属登录页
- [ ] <EFBFBD><EFBFBD>銝枏<EFBFBD><EFBFBD><EFBFBD>憿?
### Phase 2: 药企管理端MVPWeek 7-8
### Phase 2: <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡烘VP嚗Áeek 7-8嚗?
- [ ] <20><EFBFBD>蝞∠<E89D9E><E288A0>屸𢒰
- [ ] 憿寧𤌍蝞∠<E89D9E><E288A0>屸𢒰
- [ ] <20><EFBFBD><E6BCA4><EFBFBD><EFBFBD><EFBFBD>屸𢒰
- [ ] 摰∟恣<E2889F><EFBFBD><E4BA99>亥砭嚗<E7A0AD><E59A97><EFBFBD><E996AB>
### Phase 3: 功能完善Week 9+
### Phase 3: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗Áeek 9+嚗?
- [ ] 蝏蠘恣<E8A098>亥”
- [ ] <20><EFBFBD><EFBFBD>
- [ ] <20><EFBFBD><E5AFA5><EFBFBD>
@@ -198,39 +198,39 @@ https://platform.example.com/t/pharma-abc/login
---
## 🔗 与运营管理端的关系
## <EFBFBD><EFBFBD> 銝舘<E98A9D><E88898>亦恣<E4BAA6><E681A3><EFBFBD><E59EA2><EFBFBD>蝟?
```
┌────────────────────────────────────────┐
ADMIN - 运营管理端(内部)
- 创建/管理所有租户
- 分配总配额
- 全局用户管理
- Prompt管理
└────────────────────────────────────────┘
│ 创建租户 & 分配配额
┌────────────────────────────────────────┐
INST - 机构管理端(客户自服务)
│ 🏥 医院端
- 管理医院内部用户
- 按科室/个人分配配额
- 查看医院内审计日志
│ 💊 药企端
- 管理药企内部用户
- 按项目/个人分配配额
- 查看IIT模块审计日志合规
└────────────────────────────────────────┘
│ 使用业务模块
┌────────────────────────────────────────┐
业务模块ASL/DC/IIT等)
└────────────────────────────────────────┘
<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><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>? ADMIN - 餈鞱𨯫蝞∠<EFBFBD>蝡荔<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗? <EFBFBD>?
<EFBFBD>? <EFBFBD>?
<EFBFBD>? - <EFBFBD>𥕦遣/蝞∠<E89D9E><E288A0><EFBFBD><EFBFBD><EFBFBD><E58EA9>? <EFBFBD>?
<EFBFBD>? - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憸? <EFBFBD>?
<EFBFBD>? - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝞∠<EFBFBD> <EFBFBD>?
<EFBFBD>? - Prompt蝞∠<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><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>?<3F>𥕦遣蝘<E981A3><E89D98> & <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><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><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<EFBFBD>? INST - <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡荔<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
<EFBFBD>? <EFBFBD>?
<EFBFBD>? <20><20>駁堺蝡? <EFBFBD>?
<EFBFBD>? - 蝞∠<EFBFBD><EFBFBD>駁堺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
<EFBFBD>? - <EFBFBD><EFBFBD>摰?銝芯犖<E88AAF><E78A96><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
<EFBFBD>? - <EFBFBD><EFBFBD><EFBFBD>駁堺<EFBFBD><EFBFBD>恣霈⊥𠯫敹? <EFBFBD>?
<EFBFBD>? <EFBFBD>?
<EFBFBD>? <20><> <20><EFBFBD>蝡? <EFBFBD>?
<EFBFBD>? - 蝞∠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
<EFBFBD>? - <EFBFBD>厰★<EFBFBD>?銝芯犖<E88AAF><E78A96><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>?
<EFBFBD>? - <EFBFBD><EFBFBD>IIT璅<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><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>?雿輻鍂銝𡁜𦛚璅<E79285>
<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><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>嚗㇁SL/DC/IIT蝑㚁<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><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>?
```
---
@@ -242,47 +242,47 @@ https://platform.example.com/t/pharma-abc/login
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡臬<EFBFBD><EFBFBD><EFBFBD>憪见<EFBFBD><EFBFBD>𡢅<EFBFBD>撱箄悅<EFBFBD><EFBFBD><EFBFBD>霂餉<EFBFBD><EFBFBD>亦恣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
`../ADMIN-运营管理端/00-系统设计/00-权限与角色体系梳理报告_v1.0.md`
<EFBFBD>?`../ADMIN-餈鞱𨯫蝞∠<EFBFBD>蝡?00-蝟餌<E89D9F>霈曇恣/00-<2D><><EFBFBD>銝舘<E98A9D><E88898><EFBFBD>蝟餅<E9A485><EFBC94>𥁒<EFBFBD>𠽤v1.0.md`
2. **需求文档**
`../ADMIN-运营管理端/01-需求分析/02-通用能力层_07-运营与机构管理端PRD_v2.1.md`
2. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD>獢?*
<EFBFBD>?`../ADMIN-餈鞱𨯫蝞∠<EFBFBD>蝡?01-<2D><><EFBFBD><E79899><EFBFBD>?02-<2D>𡁶鍂<F0A181B6><EFBFBD><EFBFBD>07-餈鞱𨯫銝擧㦤<E693A7><E3A6A4><EFBFBD><E681A3>PRD_v2.1.md`
<><EFBFBD><E7A0B2><EFBFBD>峕𧒄<E5B395><F0A79284>鉄餈鞱𨯫蝡臬<E89DA1><E887AC><EFBFBD>蝡舫<E89DA1><EFBFBD><E79899>
### 待创建文档
### <EFBFBD><EFBFBD>撱箸<EFBFBD>獢?
- [ ] `00-系统设计/01-机构管理端架构设计.md`
- [ ] `01-需求分析/01-医院管理端PRD.md`
- [ ] `01-需求分析/02-药企管理端PRD.md`
- [ ] `02-技术设计/01-API设计文档.md`
- [ ] `02-技术设计/02-数据库设计文档.md`
- [ ] `03-UI设计/01-医院端原型设计.html`
- [ ] `03-UI设计/02-药企端原型设计.html`
- [ ] `00-蝟餌<EFBFBD>霈曇恣/01-<2D><EFBFBD>蝞∠<E89D9E>蝡舀沲<E88880><E6B2B2>挽霈?md`
- [ ] `01-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?01-<2D>駁堺蝞∠<E89D9E>蝡烈RD.md`
- [ ] `01-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?02-<2D><EFBFBD>蝞∠<E89D9E>蝡烈RD.md`
- [ ] `02-<EFBFBD><EFBFBD><EFBFBD>航挽霈?01-API霈曇恣<E69B87><E681A3>.md`
- [ ] `02-<EFBFBD><EFBFBD><EFBFBD>航挽霈?02-<2D>唳旿摨栞挽霈⊥<E99C88>獢?md`
- [ ] `03-UI霈曇恣/01-<EFBFBD>駁堺蝡臬<EFBFBD><EFBFBD>贝挽霈?html`
- [ ] `03-UI霈曇恣/02-<EFBFBD><EFBFBD>蝡臬<EFBFBD><EFBFBD>贝挽霈?html`
---
## <20>𩤃<EFBFBD> 瘜冽<E7989C>鈭钅★
### 安全性
### 摰匧<EFBFBD><EFBFBD>?
1. **多租户隔离**
1. **憭𡁶<EFBFBD><EFBFBD><EFBFBD>蝳?*
- <20><><EFBFBD>㗇䰻霂<E99C82>憿餃蒂`tenantId`<EFBFBD>
- 防止跨租户数据访问
- <EFBFBD>脫迫頝函<EFBFBD><EFBFBD>瑟㺭<EFBFBD>株挪<EFBFBD>?
2. **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
- 科室管理员只能管理自己科室
- 蝘穃恕蝞∠<EFBFBD><EFBFBD>睃蘨<EFBFBD>賜恣<EFBFBD><EFBFBD>䌊撌梁<EFBFBD>摰?
- 憿寧𤌍韐蠘提鈭箏蘨<E7AE8F>賜恣<E8B39C><E681A3>䌊撌梁<E6928C>憿寧𤌍
3. **摰∟恣<E2889F><EFBFBD>**
- 所有操作必须记录
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿𨅯<EFBFBD>憿餉扇敶?
- <20><EFBFBD>蝡舫<E89DA1><EFBFBD>說頞蚶DA<44><41><EFBFBD><EFBFBD><E996AC>
### <20><EFBFBD>隡睃<E99AA1>
1. **<EFBFBD><EFBFBD>霈∠<EFBFBD>**
- 使用数据库聚合查询
- 增加缓存层(app_cache
- 雿輻鍂<EFBFBD>唳旿摨栞<EFBFBD><EFBFBD><EFBFBD>䰻霂?
- 憓𧼮<EFBFBD>蝻枏<EFBFBD><EFBFBD><EFBFBD>app_cache嚗?
2. **科室树查询**
2. **蝘穃恕<EFBFBD>烐䰻霂?*
- 雿輻鍂<E8BCBB><EFBFBD>CTE<54>亥砭
- <20>滨垢蝻枏<E89DBB>蝘穃恕蝏𤘪<E89D8F>
@@ -290,17 +290,17 @@ https://platform.example.com/t/pharma-abc/login
## <20><> <20>𠉛頂<F0A0899B><EFBFBD>
- **技术负责人:** [待定]
- **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>犖嚗?* [敺<><E695BA>]
- **鈭批<E988AD>韐蠘提鈭綽<E988AD>** [敺<><E695BA>]
---
## 🔄 开发依赖
## <EFBFBD><EFBFBD><><E69298><EFBFBD>韏?
**<EFBFBD>滨蔭<EFBFBD>∩辣嚗<EFBFBD><EFBFBD>憿餃<EFBFBD>摰峕<EFBFBD>嚗㚁<EFBFBD>**
- ✅ 运营管理端基础架构(认证、权限、租户管理)
- ✅ 租户专属登录页
- ✅ 品牌定制配置
- <EFBFBD>?餈鞱𨯫蝞∠<E89D9E>蝡臬抅蝖<E68A85><E89D96><EFBFBD><EFBFBD>恕霂<E68195><E99C82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E58390><EFBFBD><EFBFBD>瑞恣<E7919E><E681A3><EFBFBD>
- <EFBFBD>?蝘<><E89D98>銝枏<E98A9D><E69E8F><EFBFBD>憿?
- <EFBFBD>?<3F><><EFBFBD>摰𡁜<E691B0><F0A1819C>滨蔭
**<EFBFBD>臬僎銵<EFBFBD><EFBFBD><EFBFBD>𡢅<EFBFBD>**
- <20>駁堺蝡狹I霈曇恣
@@ -315,3 +315,4 @@ https://platform.example.com/t/pharma-abc/login