Files
AIclinicalresearch/docs/03-业务模块/ADMIN-运营管理端/00-系统设计/02-通用能力层_10-权限体系梳理反馈与修正建议.md
HaHafeng 5523ef36ea 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
2026-01-11 21:25:16 +08:00

102 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **权限与角色体系梳理报告 \- 审查反馈与修正建议**
审查对象: 00-权限与角色体系梳理报告\_v1.0.md
对比基准: 07-运营与机构管理端PRD\_v2.1.md
审查结论: 总体通过 (Approved with Modification)。基础架构设计扎实需补充少量针对业务场景医院配额、Prompt调试的字段设计。
## **1\. 核心问题与差距分析 (Gap Analysis)**
虽然 v1.0 报告构建了坚实的 RBAC 基础,但在支撑 PRD v2.1 的特定业务场景时,存在以下缺失:
### **1.1 缺失“精细化配额分配”模型 (Critical)**
* **现状**:报告中设计了 tenant\_quotas 表,看似是针对租户的总配额。
* **PRD 要求**:医院端需要将配额分配给 **科室 (Department)****个人**
* 修正建议:
需要引入 PRD v2.1 中定义的 TenantQuotaAllocation 表结构,支持 targetType ('DEPARTMENT' | 'USER')。
model TenantQuotaAllocation {
id Int @id @default(autoincrement())
tenantId String @map("tenant\_id") @db.Uuid
targetType String // 'DEPARTMENT' | 'USER'
targetKey String // DepartmentID 或 UserID
limitAmount BigInt // 分配额度
usedAmount BigInt @default(0)
@@unique(\[tenantId, targetType, targetKey\])
@@map("tenant\_quota\_allocations")
@@schema("platform\_schema")
}
### **1.2 缺失“Prompt 工程化”相关权限**
* **现状**:报告关注了通用的租户管理权限。
* **PRD 要求**:运营端需要 **Prompt 灰度预览** 功能。这意味着需要一个特殊的权限点 prompt:debug允许用户在生产环境读取 Draft 数据。
* **修正建议**:在设计 permissions如果打算做细粒度控制或代码常量中明确预留 PROMPT\_ADMIN 或 DEBUGGER 角色能力。
### **1.3 审计日志的合规性要求**
* **现状**:报告提到了 admin\_operation\_logs。
* **PRD 要求**:药企端 (Pharma) 对审计日志有 FDA 21 CFR Part 11 的合规要求(数据修改痕迹)。
* **修正建议**:确保 Log 表包含 beforeData 和 afterData (已包含,很好),但建议增加 module 字段(区分是 IIT 模块的日志还是系统配置日志),以便药企端只查询自己相关的日志。
## **2\. 数据库设计审查 (Schema Review)**
### **2.1 用户表统一策略 (User Table)**
你的决策:保留 platform\_schema.users删除 public.users。
评价:✅ 完全正确。
提醒:迁移数据时,务必注意 public.users 中的 id 如果不是 UUID 格式(如果是旧系统生成的),需要做映射处理,否则关联外键会报错。
### **2.2 租户成员表命名 (Naming Convention)**
你的设计TenantUser / tenant\_users
PRD 设计TenantMember / tenant\_members
建议:建议统一使用 TenantMember。因为 "User" 通常指登录账号实体,而 "Member" 指某种组织关系中的身份。这种语义区分在代码中(如 member.role vs user.role会更清晰。
### **2.3 部门表结构 (Department)**
你的设计:支持树形结构 (parentId)。
评价:✅ 优秀。这为未来支持大型三甲医院的复杂科室结构(内科 \-\> 心内科 \-\> 一病区)打下了基础。
## **3\. 技术路线可行性评估**
### **3.1 JWT 方案**
* **评价**:使用 jsonwebtoken \+ localStorage 是标准且成熟的 SPA 方案。
* **风险提示**localStorage 容易受到 XSS 攻击。虽然 MVP 阶段可接受,但建议后续(特别是药企端上线前)考虑 **HttpOnly Cookie** 方案,或者在前端加强 XSS 防护。
### **3.2 权限中间件 (requireTenantAccess)**
* **评价**:这是多租户隔离的核心。
* **补充建议**:除了 API 层的中间件,强烈建议按照我之前提供的 **Prisma Extension** 方案在数据库访问层ORM再加一道锁。
* *原因*:开发人员可能会忘记在 Controller 里加中间件,但很难绕过全局的 Prisma Client 扩展。
### **3.3 品牌定制 (Branding)**
* **评价**:报告中已包含 api/public/tenant-config 接口。
* **提醒**:该接口务必加上 **缓存 (Cache)** 控制(如 Cache-Control: public, max-age=3600因为每个用户打开登录页都会调用高并发下不要直接打数据库。
## **4\. 开发计划优化建议**
报告中的 **8.5 Phase 4 (运营端 MVP)****8.6 Phase 5 (专属登录)** 排期合理。
**建议调整点:**
1. **Phase 0 (数据迁移) 必须有回滚方案**
* 在删除 public.users 之前,先将其重命名为 public.users\_backup保留 1 周,防止迁移脚本有 Bug 导致数据丢失。
2. **提前定义“超级管理员”种子数据**
* 在 Prisma Seed 脚本中,硬编码一个超级管理员账号(如 admin@yizhengxun.com否则系统上线后你进不去后台。
3. **前端权限 Mock 的平滑过渡**
* 在 Phase 3 对接时,不要直接删除 PermissionContext而是修改其内部实现从 API 获取数据替代 Mock 数据,这样可以最小化改动前端业务代码。
## **5\. 总结**
这份《权限与角色体系梳理报告》是一个非常棒的工程起点。它没有过度设计,准确抓住了 MVP 的核心。
**下一步行动指令:**
1. **采纳**:将表名 TenantUser 修改为 TenantMember。
2. **增加**:在 Schema 中增加 TenantQuotaAllocation 表(参考 1.1)。
3. **执行**:按照报告中的 Phase 0 \- Phase 6 开始执行。
**结论:** 文档质量高,风险可控,**可以开始开发**。