feat(admin): Add user management and upgrade to module permission system

Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
This commit is contained in:
2026-01-16 13:42:10 +08:00
parent 98d862dbd4
commit 66255368b7
560 changed files with 70424 additions and 52353 deletions

View File

@@ -1,155 +1,155 @@
# INST - <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡?
# INST - 机构管理端
> **<EFBFBD><EFBFBD><EFBFBD>嚗?* INST
> **<EFBFBD><EFBFBD>滨妍嚗?* <20><EFBFBD>蝞∠<E89D9E>蝡荔<E89DA1>Institution Management Portal嚗?
> **模块代码:** INST
> **模块名称:** 机构管理端(Institution Management Portal
> **优先级:** P1重要功能
> **<EFBFBD><EFBFBD>𤑳𠶖<EFBFBD><EFBFBD><EFBFBD>** <20>𣞁 <20><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. **<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>?
1. **自服务管理**:减轻运营团队压力,机构自主管理
2. **配额分配**:医院/药企内部按科室或个人分配Token额度
3. **用户管理**:机构内部用户的创建、编辑、停用
4. **数据隔离**:只能看到和管理自己租户的数据
---
## 🎯 核心功能模块
### 1. <EFBFBD>駁堺蝞∠<EFBFBD>蝡荔<EFBFBD>Hospital Admin嚗?
### 1. 医院管理端(Hospital Admin
#### 用户管理
- 添加/编辑/停用医院内部用户
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰?
- 分配用户到科室
- 设置用户角色(科室管理员/普通用户)
#### 科室管理
- 创建/编辑/删除科室
- <EFBFBD><EFBFBD>憭𡁶漣蝘穃恕蝏𤘪<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>?銝<><E98A9D><EFBFBD>躹嚗?
- 支持多级科室结构(心内科 → 一病区)
- 查看科室成员列表
#### 配额管理
- 查看医院总配额和使用情况
- 按科室分配Token额度
- 按个人分配Token额度
- <EFBFBD><EFBFBD>雿輻鍂蝏蠘恣<EFBFBD><EFBFBD>霅?
- 配额使用统计和预警
#### 审计日志
- <EFBFBD><EFBFBD><EFBFBD>駁堺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿𡏭扇敶?
- 查看医院内部的操作记录
- 导出审计日志
---
### 2. <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡荔<EFBFBD>Pharma Admin嚗?
### 2. 药企管理端(Pharma Admin
#### 用户管理
- 添加/编辑/停用药企内部用户
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>閫坿𠧧嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>犖/<2F>唳旿<E594B3><E697BF><EFBFBD>撣?<3F><EFBFBD>𡁶鍂<F0A181B6><EFBFBD>
- 分配用户角色(项目负责人/数据分析师/普通用户)
#### 项目管理
- 查看药企参与的IIT项目列表
- <EFBFBD><EFBFBD>憿寧𤌍餈𥕦<EFBFBD><EFBFBD>峕㺭<EFBFBD><EFBFBD>霈?
- 查看项目进展和数据统计
- 项目成员管理
#### 配额管理
- 查看药企总配额和使用情况
- 按项目分配Token额度
- 按用户分配Token额度
- <EFBFBD><EFBFBD>雿輻鍂蝏蠘恣<EFBFBD><EFBFBD>霅?
- 配额使用统计和预警
#### 审计日志(合规要求)
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇㺭<EFBFBD>桐耨<EFBFBD>寡扇敶𤏪<EFBFBD>FDA 21 CFR Part 11嚗?
- 查看所有数据修改记录(FDA 21 CFR Part 11
- 查看IIT模块相关操作
- 导出审计日志(支持签名验证)
---
## <EFBFBD><EFBFBD> 閫坿𠧧銝擧<E98A9D><E693A7>鞱挽霈?
## 🔐 角色与权限设计
### <EFBFBD>駁堺蝡航<EFBFBD><EFBFBD>?
### 医院端角色
| 角色 | 角色Code | 权限范围 | 说明 |
|------|---------|---------|------|
| **<EFBFBD>駁堺蝞∠<EFBFBD><EFBFBD>?* | HOSPITAL_ADMIN | <EFBFBD><EFBFBD>蝥抒恣<EFBFBD>?| 蝞∠<E89D9E><E288A0>駁堺<E9A781><E5A0BA><EFBFBD><EFBFBD><EFBFBD>皞?|
| **蝘穃恕蝞∠<EFBFBD><EFBFBD>?* | DEPARTMENT_ADMIN | 蝘穃恕蝥抒恣<EFBFBD>?| 隞<><EFBFBD><E681A3>䌊撌梁<E6928C>摰?|
| **医院管理员** | HOSPITAL_ADMIN | 租户级管理 | 管理医院内所有资源 |
| **科室管理员** | DEPARTMENT_ADMIN | 科室级管理 | 仅管理自己科室 |
| **医生/用户** | USER | 基础功能 | 使用业务模块 |
### <EFBFBD><EFBFBD>蝡航<EFBFBD><EFBFBD>?
### 药企端角色
| 角色 | 角色Code | 权限范围 | 说明 |
|------|---------|---------|------|
| **<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> |
| **药企管理员** | PHARMA_ADMIN | 租户级管理 | 管理药企内所有资源 |
| **项目负责人** | PROJECT_MANAGER | 项目级管理 | 管理特定IIT项目 |
| **数据分析师** | DATA_ANALYST | 只读权限 | 查看项目数据和报告 |
| **普通用户** | USER | 基础功能 | 使用业务模块 |
---
## 📂 文档结构
```
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>?
INST-机构管理端/
├── README.md # 本文件
├── 00-模块当前状态与开发指南.md # 快速上手指南
├── 00-系统设计/ # 系统架构设计
<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>?
├── 01-需求分析/ # PRD文档
├── 02-技术设计/ # 技术设计文档
├── 03-UI设计/ # 原型与UI设计
<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>?
├── 04-开发计划/ # 开发计划与任务分解
├── 05-测试文档/ # 测试用例与测试数据
├── 06-开发记录/ # 每日开发总结
└── 07-技术债务/ # 技术债务清单
```
---
## <EFBFBD><EFBFBD>儭?<3F>唳旿摨廍chema
## 🗄️ 数据库Schema
### <EFBFBD><EFBFBD>銵剁<EFBFBD>platform_schema嚗?
### 核心表(platform_schema
- `tenants` - <EFBFBD><EFBFBD>銵剁<EFBFBD><EFBFBD><EFBFBD><EFBFBD>箸𧋦靽⊥<EFBFBD>嚗?
- `tenants` - 租户表(机构基本信息)
- `tenant_members` - 租户成员关系
- `tenant_quotas` - 租户配额
- `tenant_quota_allocations` - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰?銝芯犖/憿寧𤌍嚗?
- `departments` - 蝘穃恕銵剁<EFBFBD><EFBFBD>駁堺銝梶鍂嚗?
- `tenant_operation_logs` - <EFBFBD><EFBFBD>蝥扳<EFBFBD>雿𨀣𠯫敹?
- `tenant_quota_allocations` - 配额分配(科室/个人/项目)
- `departments` - 科室表(医院专用)
- `tenant_operation_logs` - 租户级操作日志
### <EFBFBD><EFBFBD>銵?
### 关联表
- `users` - <EFBFBD><EFBFBD>銵?
- `users` - 用户表
- `iit_projects` - IIT项目表药企端
- `admin_operation_logs` - 摰∟恣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>电odule餈<EFBFBD>誘嚗?
- `admin_operation_logs` - 审计日志可按module过滤
---
## 🚀 技术栈
### 后端
- **<EFBFBD>沲嚗?* Fastify + Prisma
- **框架:** Fastify + Prisma
- **数据库:** PostgreSQL 14+
- **霈方<EFBFBD>嚗?* JWT嚗<54><EFBFBD><EFBFBD><E8BCAF>亦恣<E4BAA6><E681A3>垢嚗?
- **<EFBFBD><EFBFBD><EFBFBD>嚗?* RBAC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>亦恣<EFBFBD><EFBFBD>垢嚗?
- **认证:** JWT继承运营管理端
- **权限:** RBAC(继承运营管理端)
### 前端
- **<EFBFBD>沲嚗?* React 19 + TypeScript
- **框架:** React 19 + TypeScript
- **UI库** Ant Design 6.0
- **状态管理:** React Context + Hooks
- **頝舐眏嚗?* React Router v6
- **路由:** React Router v6
---
@@ -158,39 +158,39 @@ INST-机构管理
### 租户专属登录
```
# <EFBFBD>駁堺蝡舐蒈敶?
# 医院端登录
https://platform.example.com/t/hospital-301/login
# <EFBFBD><EFBFBD>蝡舐蒈敶?
# 药企端登录
https://platform.example.com/t/pharma-abc/login
```
### 品牌定制
- Logo<EFBFBD><EFBFBD><EFBFBD>瑁䌊摰帋<EFBFBD>嚗?
- Logo(租户自定义)
- 背景图(租户自定义)
- 主题色(租户自定义)
- 蝟餌<EFBFBD><EFBFBD>滨妍嚗<EFBFBD><EFBFBD><EFBFBD>瑁䌊摰帋<EFBFBD>嚗?
- 系统名称(租户自定义)
**<EFBFBD>唳旿<EFBFBD><EFBFBD>嚗?* `tenants.config` (JSONB摮埈挾)
**数据来源:** `tenants.config` (JSONB字段)
---
## 📅 开发路线图(待定)
### Phase 1: <EFBFBD>駁堺蝞∠<EFBFBD>蝡烘VP嚗Áeek 5-6嚗?
### Phase 1: 医院管理端MVPWeek 5-6
- [ ] 用户管理界面
- [ ] 科室管理界面
- [ ] 配额分配界面
- [ ] <EFBFBD><EFBFBD>銝枏<EFBFBD><EFBFBD><EFBFBD>憿?
- [ ] 租户专属登录页
### Phase 2: <EFBFBD><EFBFBD>蝞∠<EFBFBD>蝡烘VP嚗Áeek 7-8嚗?
### Phase 2: 药企管理端MVPWeek 7-8
- [ ] 用户管理界面
- [ ] 项目管理界面
- [ ] 配额分配界面
- [ ] 审计日志查询(合规)
### Phase 3: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗Áeek 9+嚗?
### Phase 3: 功能完善Week 9+
- [ ] 统计报表
- [ ] 配额预警
- [ ] 批量操作
@@ -198,39 +198,39 @@ https://platform.example.com/t/pharma-abc/login
---
## <EFBFBD><EFBFBD> 銝舘<E98A9D><E88898>亦恣<E4BAA6><E681A3><EFBFBD><E59EA2><EFBFBD>蝟?
## 🔗 与运营管理端的关系
```
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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>?
┌────────────────────────────────────────┐
ADMIN - 运营管理端(内部)
- 创建/管理所有租户
- 分配总配额
- 全局用户管理
- Prompt管理
└────────────────────────────────────────┘
│ 创建租户 & 分配配额
┌────────────────────────────────────────┐
INST - 机构管理端(客户自服务)
│ 🏥 医院端
- 管理医院内部用户
- 按科室/个人分配配额
- 查看医院内审计日志
│ 💊 药企端
- 管理药企内部用户
- 按项目/个人分配配额
- 查看IIT模块审计日志合规
└────────────────────────────────────────┘
│ 使用业务模块
┌────────────────────────────────────────┐
业务模块ASL/DC/IIT等)
└────────────────────────────────────────┘
```
---
@@ -242,47 +242,47 @@ https://platform.example.com/t/pharma-abc/login
由于机构管理端尚未开始开发,建议先阅读运营管理端的相关文档:
1. **架构基础**
<EFBFBD>?`../ADMIN-餈鞱𨯫蝞∠<EFBFBD>蝡?00-蝟餌<E89D9F>霈曇恣/00-<2D><><EFBFBD>銝舘<E98A9D><E88898><EFBFBD>蝟餅<E9A485><EFBC94>𥁒<EFBFBD>𠽤v1.0.md`
`../ADMIN-运营管理端/00-系统设计/00-权限与角色体系梳理报告_v1.0.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`
2. **需求文档**
`../ADMIN-运营管理端/01-需求分析/02-通用能力层_07-运营与机构管理端PRD_v2.1.md`
(该文档同时包含运营端和机构端需求)
### <EFBFBD><EFBFBD>撱箸<EFBFBD>獢?
### 待创建文档
- [ ] `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`
- [ ] `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`
---
## ⚠️ 注意事项
### 摰匧<EFBFBD><EFBFBD>?
### 安全性
1. **憭𡁶<EFBFBD><EFBFBD><EFBFBD>蝳?*
1. **多租户隔离**
- 所有查询必须带`tenantId`过滤
- <EFBFBD>脫迫頝函<EFBFBD><EFBFBD>瑟㺭<EFBFBD>株挪<EFBFBD>?
- 防止跨租户数据访问
2. **权限控制**
- 蝘穃恕蝞∠<EFBFBD><EFBFBD>睃蘨<EFBFBD>賜恣<EFBFBD><EFBFBD>䌊撌梁<EFBFBD>摰?
- 科室管理员只能管理自己科室
- 项目负责人只能管理自己的项目
3. **审计日志**
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD>雿𨅯<EFBFBD>憿餉扇敶?
- 所有操作必须记录
- 药企端需要满足FDA合规要求
### 性能优化
1. **配额计算**
- 雿輻鍂<EFBFBD>唳旿摨栞<EFBFBD><EFBFBD><EFBFBD>䰻霂?
- 憓𧼮<EFBFBD>蝻枏<EFBFBD><EFBFBD><EFBFBD>app_cache嚗?
- 使用数据库聚合查询
- 增加缓存层(app_cache
2. **蝘穃恕<EFBFBD>烐䰻霂?*
2. **科室树查询**
- 使用递归CTE查询
- 前端缓存科室结构
@@ -290,17 +290,17 @@ https://platform.example.com/t/pharma-abc/login
## 📞 联系方式
- **<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>犖嚗?* [敺<><E695BA>]
- **技术负责人:** [待定]
- **产品负责人:** [待定]
---
## <EFBFBD><EFBFBD><><E69298><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>滨蔭
- ✅ 运营管理端基础架构(认证、权限、租户管理)
- ✅ 租户专属登录页
- ✅ 品牌定制配置
**可并行开发:**
- 医院端UI设计
@@ -315,4 +315,3 @@ https://platform.example.com/t/pharma-abc/login