feat(admin): Complete Phase 3.5.1-3.5.4 Prompt Management System (83%)
Summary: - Implement Prompt management infrastructure and core services - Build admin portal frontend with light theme - Integrate CodeMirror 6 editor for non-technical users Phase 3.5.1: Infrastructure Setup - Create capability_schema for Prompt storage - Add prompt_templates and prompt_versions tables - Add prompt:view/edit/debug/publish permissions - Migrate RVW prompts to database (RVW_EDITORIAL, RVW_METHODOLOGY) Phase 3.5.2: PromptService Core - Implement gray preview logic (DRAFT for debuggers, ACTIVE for users) - Module-level debug control (setDebugMode) - Handlebars template rendering - Variable extraction and validation (extractVariables, validateVariables) - Three-level disaster recovery (database -> cache -> hardcoded fallback) Phase 3.5.3: Management API - 8 RESTful endpoints (/api/admin/prompts/*) - Permission control (PROMPT_ENGINEER can edit, SUPER_ADMIN can publish) Phase 3.5.4: Frontend Management UI - Build admin portal architecture (AdminLayout, OrgLayout) - Add route system (/admin/*, /org/*) - Implement PromptListPage (filter, search, debug switch) - Implement PromptEditor (CodeMirror 6 simplified for clinical users) - Implement PromptEditorPage (edit, save, publish, test, version history) Technical Details: - Backend: 6 files, ~2044 lines (prompt.service.ts 596 lines) - Frontend: 9 files, ~1735 lines (PromptEditorPage.tsx 399 lines) - CodeMirror 6: Line numbers, auto-wrap, variable highlight, search, undo/redo - Chinese-friendly: 15px font, 1.8 line-height, system fonts Next Step: Phase 3.5.5 - Integrate RVW module with PromptService Tested: Backend API tests passed (8/8), Frontend pending user testing Status: Ready for Phase 3.5.5 RVW integration
This commit is contained in:
439
docs/03-业务模块/INST-机构管理端/00-模块当前状态与开发指南.md
Normal file
439
docs/03-业务模块/INST-机构管理端/00-模块当前状态与开发指南.md
Normal file
@@ -0,0 +1,439 @@
|
||||
# INST-机构管理端 - 模块当前状态与开发指南
|
||||
|
||||
> **最后更新:** 2026-01-11
|
||||
> **状态:** 🔴 未开始(等待运营管理端完成)
|
||||
> **版本:** v0.0 (Planning)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 一句话总结
|
||||
|
||||
**机构管理端为医院和药企客户提供自服务管理界面,让机构管理员能够独立管理用户、配额、科室/项目等资源。**
|
||||
|
||||
---
|
||||
|
||||
## 📊 当前开发状态
|
||||
|
||||
### ✅ 已完成
|
||||
|
||||
- [ ] **无**(尚未开始)
|
||||
|
||||
### 🚧 进行中
|
||||
|
||||
- [ ] **无**
|
||||
|
||||
### ⏳ 待开发(依赖运营管理端)
|
||||
|
||||
**前置条件(必须先完成):**
|
||||
- [ ] 运营管理端基础架构(Phase 0-2)
|
||||
- [ ] 租户管理功能
|
||||
- [ ] 租户专属登录页
|
||||
- [ ] 品牌定制配置
|
||||
|
||||
**机构管理端开发计划(预计Week 5+):**
|
||||
|
||||
**P1 - 医院管理端(Week 5-6)**
|
||||
- [ ] 用户管理(CRUD + 科室分配)
|
||||
- [ ] 科室管理(支持多级结构)
|
||||
- [ ] 配额分配(科室/个人)
|
||||
- [ ] 审计日志查询
|
||||
|
||||
**P1 - 药企管理端(Week 7-8)**
|
||||
- [ ] 用户管理(CRUD + 角色分配)
|
||||
- [ ] 项目管理(IIT项目关联)
|
||||
- [ ] 配额分配(项目/个人)
|
||||
- [ ] 审计日志查询(FDA合规)
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ 架构概览
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ 机构管理端(INST Portal) │
|
||||
├──────────────────────┬──────────────────────────┤
|
||||
│ 🏥 医院管理端 │ 💊 药企管理端 │
|
||||
├──────────────────────┼──────────────────────────┤
|
||||
│ · 用户管理 │ · 用户管理 │
|
||||
│ · 科室管理 │ · 项目管理 │
|
||||
│ · 配额分配(科室/人) │ · 配额分配(项目/人) │
|
||||
│ · 审计日志 │ · 审计日志(合规) │
|
||||
└──────────────────────┴──────────────────────────┘
|
||||
↓
|
||||
继承运营管理端的基础设施
|
||||
↓
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ Platform Layer │
|
||||
│ 认证中心 │ 权限中心 │ 多租户隔离 │ 审计日志 │
|
||||
└─────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 权限矩阵
|
||||
|
||||
| 功能 | HOSPITAL_ADMIN | DEPARTMENT_ADMIN | PHARMA_ADMIN | PROJECT_MANAGER | USER |
|
||||
|------|----------------|------------------|--------------|-----------------|------|
|
||||
| 用户管理(租户内) | ✅ 全部 | ✅ 本科室 | ✅ 全部 | ✅ 项目成员 | ❌ |
|
||||
| 科室管理 | ✅ | ❌ | N/A | N/A | ❌ |
|
||||
| 项目管理 | N/A | N/A | ✅ 查看 | ✅ 管理 | ❌ |
|
||||
| 配额分配 | ✅ | ✅ 本科室 | ✅ | ✅ 项目内 | ❌ |
|
||||
| 审计日志 | ✅ 租户内 | ✅ 本科室 | ✅ 租户内 | ✅ 项目内 | ❌ |
|
||||
| 业务模块使用 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 📁 代码结构(规划)
|
||||
|
||||
### 后端
|
||||
|
||||
```
|
||||
backend/src/
|
||||
├── 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
|
||||
│
|
||||
└── common/
|
||||
└── middleware/
|
||||
├── tenant.middleware.ts # 租户隔离(复用)
|
||||
└── department.middleware.ts # 科室权限检查
|
||||
```
|
||||
|
||||
### 前端
|
||||
|
||||
```
|
||||
frontend-v2/src/
|
||||
├── modules/
|
||||
│ └── institution/ # 机构管理端模块
|
||||
│ ├── pages/
|
||||
│ │ ├── hospital/
|
||||
│ │ │ ├── UserManagement/
|
||||
│ │ │ ├── DepartmentManagement/
|
||||
│ │ │ ├── QuotaAllocation/
|
||||
│ │ │ └── AuditLog/
|
||||
│ │ │
|
||||
│ │ └── pharma/
|
||||
│ │ ├── UserManagement/
|
||||
│ │ ├── ProjectManagement/
|
||||
│ │ ├── QuotaAllocation/
|
||||
│ │ └── AuditLog/
|
||||
│ │
|
||||
│ └── components/
|
||||
│ ├── UserForm/
|
||||
│ ├── DepartmentTree/
|
||||
│ ├── QuotaAllocator/
|
||||
│ └── AuditLogViewer/
|
||||
│
|
||||
└── layouts/
|
||||
└── TenantLayout/ # 租户专属布局(品牌定制)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 UI/UX 特性
|
||||
|
||||
### 1. 租户品牌定制
|
||||
|
||||
```typescript
|
||||
// 从API获取租户配置
|
||||
const tenantConfig = await api.get('/api/public/tenant-config/:tenantCode');
|
||||
|
||||
// 应用品牌样式
|
||||
document.documentElement.style.setProperty('--primary-color', config.primaryColor);
|
||||
document.title = config.systemName;
|
||||
```
|
||||
|
||||
**效果:**
|
||||
- 协和医院看到的是协和Logo和"协和临床研究平台"
|
||||
- 辉瑞药业看到的是辉瑞Logo和"辉瑞IIT管理平台"
|
||||
|
||||
### 2. 科室树组件(医院端)
|
||||
|
||||
```tsx
|
||||
<DepartmentTree
|
||||
departments={departments}
|
||||
onSelect={(dept) => loadDeptUsers(dept)}
|
||||
showQuota={true} // 显示科室配额
|
||||
allowEdit={hasPermission('dept:edit')}
|
||||
/>
|
||||
```
|
||||
|
||||
**支持:**
|
||||
- 多级展开/折叠
|
||||
- 拖拽排序
|
||||
- 配额可视化
|
||||
|
||||
### 3. 配额分配器
|
||||
|
||||
```tsx
|
||||
<QuotaAllocator
|
||||
totalQuota={1000000}
|
||||
allocations={[
|
||||
{ target: '心内科', allocated: 500000, used: 300000 },
|
||||
{ target: '神内科', allocated: 300000, used: 150000 }
|
||||
]}
|
||||
onAllocate={(target, amount) => handleAllocate(target, amount)}
|
||||
/>
|
||||
```
|
||||
|
||||
**特性:**
|
||||
- 可视化进度条
|
||||
- 实时计算剩余配额
|
||||
- 超额预警
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ 数据模型
|
||||
|
||||
### 医院端
|
||||
|
||||
```typescript
|
||||
// 科室
|
||||
interface Department {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
name: string;
|
||||
parentId?: string; // 支持多级
|
||||
description?: string;
|
||||
members: User[];
|
||||
quota?: QuotaAllocation;
|
||||
}
|
||||
|
||||
// 配额分配
|
||||
interface QuotaAllocation {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
targetType: 'DEPARTMENT' | 'USER';
|
||||
targetKey: string; // DepartmentID 或 UserID
|
||||
limitAmount: bigint;
|
||||
usedAmount: bigint;
|
||||
}
|
||||
```
|
||||
|
||||
### 药企端
|
||||
|
||||
```typescript
|
||||
// 项目(关联IIT)
|
||||
interface Project {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
iitProjectId?: string; // 关联IIT项目
|
||||
name: string;
|
||||
description?: string;
|
||||
members: User[];
|
||||
quota?: QuotaAllocation;
|
||||
}
|
||||
|
||||
// 项目成员
|
||||
interface ProjectMember {
|
||||
id: string;
|
||||
projectId: string;
|
||||
userId: string;
|
||||
role: 'PROJECT_MANAGER' | 'DATA_ANALYST' | 'MEMBER';
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 开发流程
|
||||
|
||||
### Step 1: 设计阶段(当前)
|
||||
|
||||
- [ ] 详细需求文档(PRD)
|
||||
- [ ] API接口设计
|
||||
- [ ] 数据库表设计
|
||||
- [ ] UI原型设计
|
||||
|
||||
### Step 2: 后端开发(依赖运营端完成)
|
||||
|
||||
1. **医院端API**
|
||||
- 用户管理API
|
||||
- 科室管理API
|
||||
- 配额分配API
|
||||
- 审计日志API
|
||||
|
||||
2. **药企端API**
|
||||
- 用户管理API
|
||||
- 项目管理API
|
||||
- 配额分配API
|
||||
- 审计日志API(合规)
|
||||
|
||||
### Step 3: 前端开发
|
||||
|
||||
1. **公共组件**
|
||||
- TenantLayout(品牌定制布局)
|
||||
- QuotaAllocator(配额分配器)
|
||||
- AuditLogViewer(审计日志查看器)
|
||||
|
||||
2. **医院端页面**
|
||||
- 用户管理
|
||||
- 科室管理(DepartmentTree)
|
||||
- 配额分配
|
||||
|
||||
3. **药企端页面**
|
||||
- 用户管理
|
||||
- 项目管理
|
||||
- 配额分配
|
||||
|
||||
---
|
||||
|
||||
## 📚 核心文档导航
|
||||
|
||||
### 当前可阅读
|
||||
|
||||
1. **整体架构**
|
||||
`../ADMIN-运营管理端/00-系统设计/00-权限与角色体系梳理报告_v1.0.md`
|
||||
|
||||
2. **需求文档(包含机构端)**
|
||||
`../ADMIN-运营管理端/01-需求分析/02-通用能力层_07-运营与机构管理端PRD_v2.1.md`
|
||||
|
||||
3. **运营端状态**
|
||||
`../ADMIN-运营管理端/00-模块当前状态与开发指南.md`
|
||||
|
||||
### 待创建文档
|
||||
|
||||
**00-系统设计/**
|
||||
- [ ] `01-机构管理端架构设计.md`
|
||||
- [ ] `02-多租户隔离设计.md`
|
||||
- [ ] `03-配额管理设计.md`
|
||||
|
||||
**01-需求分析/**
|
||||
- [ ] `01-医院管理端PRD.md`
|
||||
- [ ] `02-药企管理端PRD.md`
|
||||
- [ ] `03-用户故事与验收标准.md`
|
||||
|
||||
**02-技术设计/**
|
||||
- [ ] `01-API设计文档.md`
|
||||
- [ ] `02-数据库设计文档.md`
|
||||
- [ ] `03-科室树实现方案.md`
|
||||
- [ ] `04-配额计算算法.md`
|
||||
|
||||
**03-UI设计/**
|
||||
- [ ] `01-医院端原型设计.html`
|
||||
- [ ] `02-药企端原型设计.html`
|
||||
- [ ] `03-品牌定制指南.md`
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 技术要点
|
||||
|
||||
### 1. 多租户隔离
|
||||
|
||||
```typescript
|
||||
// 中间件:确保只能访问自己租户的数据
|
||||
export const requireTenantAccess = async (request: FastifyRequest) => {
|
||||
const { tenantId } = request.user;
|
||||
const { id } = request.params;
|
||||
|
||||
const resource = await prisma.resource.findUnique({
|
||||
where: { id }
|
||||
});
|
||||
|
||||
if (resource.tenantId !== tenantId) {
|
||||
throw new ForbiddenError('无权访问其他租户资源');
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### 2. 科室权限检查
|
||||
|
||||
```typescript
|
||||
// 科室管理员只能管理自己科室
|
||||
export const requireDepartmentAccess = async (request: FastifyRequest) => {
|
||||
const { role, departmentId } = request.user;
|
||||
const { deptId } = request.params;
|
||||
|
||||
if (role === 'DEPARTMENT_ADMIN' && departmentId !== deptId) {
|
||||
throw new ForbiddenError('无权访问其他科室');
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### 3. 配额计算
|
||||
|
||||
```typescript
|
||||
// 计算可分配配额
|
||||
export const calculateAvailableQuota = async (tenantId: string) => {
|
||||
// 1. 获取租户总配额
|
||||
const tenantQuota = await getTenantQuota(tenantId);
|
||||
|
||||
// 2. 计算已分配配额
|
||||
const allocated = await prisma.tenantQuotaAllocation.aggregate({
|
||||
where: { tenantId },
|
||||
_sum: { limitAmount: true }
|
||||
});
|
||||
|
||||
// 3. 返回可用配额
|
||||
return tenantQuota.totalAmount - (allocated._sum.limitAmount || 0);
|
||||
};
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 与运营管理端的对比
|
||||
|
||||
| 特性 | 运营管理端(ADMIN) | 机构管理端(INST) |
|
||||
|------|-------------------|------------------|
|
||||
| **用户** | 公司内部运营人员 | 医院/药企管理员 |
|
||||
| **权限** | 全局管理权限 | 租户级管理权限 |
|
||||
| **租户管理** | ✅ 创建/管理所有租户 | ❌ 只能看到自己租户 |
|
||||
| **用户管理** | ✅ 全局用户管理 | ✅ 租户内用户管理 |
|
||||
| **配额管理** | ✅ 分配租户总配额 | ✅ 分配科室/项目配额 |
|
||||
| **Prompt管理** | ✅ 生产环境调试 | ❌ 无权限 |
|
||||
| **审计日志** | ✅ 全局日志 | ✅ 租户内日志 |
|
||||
| **品牌定制** | ✅ 配置所有租户品牌 | ❌ 只能查看 |
|
||||
|
||||
---
|
||||
|
||||
## 📅 预计开发时间
|
||||
|
||||
**前提:** 运营管理端基础架构完成(Week 4)
|
||||
|
||||
- **Week 5-6:** 医院管理端(8人天)
|
||||
- **Week 7-8:** 药企管理端(8人天)
|
||||
- **Week 9:** 测试与优化(3人天)
|
||||
|
||||
**总计:** 约19人天(~4周)
|
||||
|
||||
---
|
||||
|
||||
## 📞 需要帮助?
|
||||
|
||||
1. **架构问题**:参考运营管理端实现
|
||||
2. **权限问题**:查看`00-权限与角色体系梳理报告_v1.0.md`
|
||||
3. **UI问题**:参考DC/ASL等已有模块
|
||||
|
||||
---
|
||||
|
||||
## 🎯 下一步行动
|
||||
|
||||
- [ ] 等待运营管理端完成基础架构
|
||||
- [ ] 开始编写详细PRD
|
||||
- [ ] 设计UI原型
|
||||
- [ ] 设计API接口
|
||||
|
||||
---
|
||||
|
||||
*机构管理端虽然尚未开始开发,但设计思路已明确。待运营管理端完成后,可快速启动开发。*
|
||||
|
||||
---
|
||||
|
||||
**🚀 敬请期待!**
|
||||
|
||||
312
docs/03-业务模块/INST-机构管理端/README.md
Normal file
312
docs/03-业务模块/INST-机构管理端/README.md
Normal file
@@ -0,0 +1,312 @@
|
||||
# INST - 机构管理端
|
||||
|
||||
> **模块代码:** INST
|
||||
> **模块名称:** 机构管理端(Institution Management Portal)
|
||||
> **优先级:** P1(重要功能)
|
||||
> **开发状态:** 🔴 未开始
|
||||
> **负责人:** [待定]
|
||||
|
||||
---
|
||||
|
||||
## 📋 模块概述
|
||||
|
||||
机构管理端是为**医院客户**和**药企客户**提供的自服务管理界面,让机构管理员能够独立管理自己租户内的用户、配额、科室等资源。
|
||||
|
||||
### 核心价值
|
||||
|
||||
1. **自服务管理**:减轻运营团队压力,机构自主管理
|
||||
2. **配额分配**:医院/药企内部按科室或个人分配Token额度
|
||||
3. **用户管理**:机构内部用户的创建、编辑、停用
|
||||
4. **数据隔离**:只能看到和管理自己租户的数据
|
||||
|
||||
---
|
||||
|
||||
## 🎯 核心功能模块
|
||||
|
||||
### 1. 医院管理端(Hospital Admin)
|
||||
|
||||
#### 用户管理
|
||||
- 添加/编辑/停用医院内部用户
|
||||
- 分配用户到科室
|
||||
- 设置用户角色(科室管理员/普通用户)
|
||||
|
||||
#### 科室管理
|
||||
- 创建/编辑/删除科室
|
||||
- 支持多级科室结构(心内科 → 一病区)
|
||||
- 查看科室成员列表
|
||||
|
||||
#### 配额管理
|
||||
- 查看医院总配额和使用情况
|
||||
- 按科室分配Token额度
|
||||
- 按个人分配Token额度
|
||||
- 配额使用统计和预警
|
||||
|
||||
#### 审计日志
|
||||
- 查看医院内部的操作记录
|
||||
- 导出审计日志
|
||||
|
||||
---
|
||||
|
||||
### 2. 药企管理端(Pharma Admin)
|
||||
|
||||
#### 用户管理
|
||||
- 添加/编辑/停用药企内部用户
|
||||
- 分配用户角色(项目负责人/数据分析师/普通用户)
|
||||
|
||||
#### 项目管理
|
||||
- 查看药企参与的IIT项目列表
|
||||
- 查看项目进展和数据统计
|
||||
- 项目成员管理
|
||||
|
||||
#### 配额管理
|
||||
- 查看药企总配额和使用情况
|
||||
- 按项目分配Token额度
|
||||
- 按用户分配Token额度
|
||||
- 配额使用统计和预警
|
||||
|
||||
#### 审计日志(合规要求)
|
||||
- 查看所有数据修改记录(FDA 21 CFR Part 11)
|
||||
- 查看IIT模块相关操作
|
||||
- 导出审计日志(支持签名验证)
|
||||
|
||||
---
|
||||
|
||||
## 🔐 角色与权限设计
|
||||
|
||||
### 医院端角色
|
||||
|
||||
| 角色 | 角色Code | 权限范围 | 说明 |
|
||||
|------|---------|---------|------|
|
||||
| **医院管理员** | HOSPITAL_ADMIN | 租户级管理 | 管理医院内所有资源 |
|
||||
| **科室管理员** | DEPARTMENT_ADMIN | 科室级管理 | 仅管理自己科室 |
|
||||
| **医生/用户** | USER | 基础功能 | 使用业务模块 |
|
||||
|
||||
### 药企端角色
|
||||
|
||||
| 角色 | 角色Code | 权限范围 | 说明 |
|
||||
|------|---------|---------|------|
|
||||
| **药企管理员** | PHARMA_ADMIN | 租户级管理 | 管理药企内所有资源 |
|
||||
| **项目负责人** | PROJECT_MANAGER | 项目级管理 | 管理特定IIT项目 |
|
||||
| **数据分析师** | DATA_ANALYST | 只读权限 | 查看项目数据和报告 |
|
||||
| **普通用户** | USER | 基础功能 | 使用业务模块 |
|
||||
|
||||
---
|
||||
|
||||
## 📂 文档结构
|
||||
|
||||
```
|
||||
INST-机构管理端/
|
||||
├── README.md # 本文件
|
||||
├── 00-模块当前状态与开发指南.md # 快速上手指南
|
||||
│
|
||||
├── 00-系统设计/ # 系统架构设计
|
||||
│
|
||||
├── 01-需求分析/ # PRD文档
|
||||
│
|
||||
├── 02-技术设计/ # 技术设计文档
|
||||
│
|
||||
├── 03-UI设计/ # 原型与UI设计
|
||||
│
|
||||
├── 04-开发计划/ # 开发计划与任务分解
|
||||
│
|
||||
├── 05-测试文档/ # 测试用例与测试数据
|
||||
│
|
||||
├── 06-开发记录/ # 每日开发总结
|
||||
│
|
||||
└── 07-技术债务/ # 技术债务清单
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ 数据库Schema
|
||||
|
||||
### 核心表(platform_schema)
|
||||
|
||||
- `tenants` - 租户表(机构基本信息)
|
||||
- `tenant_members` - 租户成员关系
|
||||
- `tenant_quotas` - 租户配额
|
||||
- `tenant_quota_allocations` - 配额分配(科室/个人/项目)
|
||||
- `departments` - 科室表(医院专用)
|
||||
- `tenant_operation_logs` - 租户级操作日志
|
||||
|
||||
### 关联表
|
||||
|
||||
- `users` - 用户表
|
||||
- `iit_projects` - IIT项目表(药企端)
|
||||
- `admin_operation_logs` - 审计日志(可按module过滤)
|
||||
|
||||
---
|
||||
|
||||
## 🚀 技术栈
|
||||
|
||||
### 后端
|
||||
- **框架:** Fastify + Prisma
|
||||
- **数据库:** PostgreSQL 14+
|
||||
- **认证:** JWT(继承运营管理端)
|
||||
- **权限:** RBAC(继承运营管理端)
|
||||
|
||||
### 前端
|
||||
- **框架:** React 19 + TypeScript
|
||||
- **UI库:** Ant Design 6.0
|
||||
- **状态管理:** React Context + Hooks
|
||||
- **路由:** React Router v6
|
||||
|
||||
---
|
||||
|
||||
## 🎨 URL策略
|
||||
|
||||
### 租户专属登录
|
||||
|
||||
```
|
||||
# 医院端登录
|
||||
https://platform.example.com/t/hospital-301/login
|
||||
|
||||
# 药企端登录
|
||||
https://platform.example.com/t/pharma-abc/login
|
||||
```
|
||||
|
||||
### 品牌定制
|
||||
|
||||
- Logo(租户自定义)
|
||||
- 背景图(租户自定义)
|
||||
- 主题色(租户自定义)
|
||||
- 系统名称(租户自定义)
|
||||
|
||||
**数据来源:** `tenants.config` (JSONB字段)
|
||||
|
||||
---
|
||||
|
||||
## 📅 开发路线图(待定)
|
||||
|
||||
### Phase 1: 医院管理端MVP(Week 5-6)
|
||||
- [ ] 用户管理界面
|
||||
- [ ] 科室管理界面
|
||||
- [ ] 配额分配界面
|
||||
- [ ] 租户专属登录页
|
||||
|
||||
### Phase 2: 药企管理端MVP(Week 7-8)
|
||||
- [ ] 用户管理界面
|
||||
- [ ] 项目管理界面
|
||||
- [ ] 配额分配界面
|
||||
- [ ] 审计日志查询(合规)
|
||||
|
||||
### Phase 3: 功能完善(Week 9+)
|
||||
- [ ] 统计报表
|
||||
- [ ] 配额预警
|
||||
- [ ] 批量操作
|
||||
- [ ] 数据导出
|
||||
|
||||
---
|
||||
|
||||
## 🔗 与运营管理端的关系
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────┐
|
||||
│ ADMIN - 运营管理端(内部) │
|
||||
│ │
|
||||
│ - 创建/管理所有租户 │
|
||||
│ - 分配总配额 │
|
||||
│ - 全局用户管理 │
|
||||
│ - Prompt管理 │
|
||||
└────────────────────────────────────────┘
|
||||
│
|
||||
│ 创建租户 & 分配配额
|
||||
↓
|
||||
┌────────────────────────────────────────┐
|
||||
│ INST - 机构管理端(客户自服务) │
|
||||
│ │
|
||||
│ 🏥 医院端 │
|
||||
│ - 管理医院内部用户 │
|
||||
│ - 按科室/个人分配配额 │
|
||||
│ - 查看医院内审计日志 │
|
||||
│ │
|
||||
│ 💊 药企端 │
|
||||
│ - 管理药企内部用户 │
|
||||
│ - 按项目/个人分配配额 │
|
||||
│ - 查看IIT模块审计日志(合规) │
|
||||
└────────────────────────────────────────┘
|
||||
│
|
||||
│ 使用业务模块
|
||||
↓
|
||||
┌────────────────────────────────────────┐
|
||||
│ 业务模块(ASL/DC/IIT等) │
|
||||
└────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 核心文档导航
|
||||
|
||||
### 当前阶段
|
||||
|
||||
由于机构管理端尚未开始开发,建议先阅读运营管理端的相关文档:
|
||||
|
||||
1. **架构基础**
|
||||
→ `../ADMIN-运营管理端/00-系统设计/00-权限与角色体系梳理报告_v1.0.md`
|
||||
|
||||
2. **需求文档**
|
||||
→ `../ADMIN-运营管理端/01-需求分析/02-通用能力层_07-运营与机构管理端PRD_v2.1.md`
|
||||
(该文档同时包含运营端和机构端需求)
|
||||
|
||||
### 待创建文档
|
||||
|
||||
- [ ] `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`
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 安全性
|
||||
|
||||
1. **多租户隔离**
|
||||
- 所有查询必须带`tenantId`过滤
|
||||
- 防止跨租户数据访问
|
||||
|
||||
2. **权限控制**
|
||||
- 科室管理员只能管理自己科室
|
||||
- 项目负责人只能管理自己的项目
|
||||
|
||||
3. **审计日志**
|
||||
- 所有操作必须记录
|
||||
- 药企端需要满足FDA合规要求
|
||||
|
||||
### 性能优化
|
||||
|
||||
1. **配额计算**
|
||||
- 使用数据库聚合查询
|
||||
- 增加缓存层(app_cache)
|
||||
|
||||
2. **科室树查询**
|
||||
- 使用递归CTE查询
|
||||
- 前端缓存科室结构
|
||||
|
||||
---
|
||||
|
||||
## 📞 联系方式
|
||||
|
||||
- **技术负责人:** [待定]
|
||||
- **产品负责人:** [待定]
|
||||
|
||||
---
|
||||
|
||||
## 🔄 开发依赖
|
||||
|
||||
**前置条件(必须先完成):**
|
||||
- ✅ 运营管理端基础架构(认证、权限、租户管理)
|
||||
- ✅ 租户专属登录页
|
||||
- ✅ 品牌定制配置
|
||||
|
||||
**可并行开发:**
|
||||
- 医院端UI设计
|
||||
- 药企端UI设计
|
||||
|
||||
---
|
||||
|
||||
*最后更新:2026-01-11*
|
||||
|
||||
Reference in New Issue
Block a user