# **壹证循AI平台 \- 运营与机构管理端 PRD** 文档版本?v2.1 状态: 待开?(Ready for Dev) 优先级: P0 架构模式?模块化单?(Modular Monolith) 更新摘要?新增“品牌定制”需求;定义专属登录?URL 规范;细化租户配置字段? ## **1\. 业务背景与需求分?(Context & Requirements)** ### **1.1 为什么要做管理端?Why)** 目前的系统(User App)是一个强大的单兵作战工具,但要转化为可规模化销售的 **SaaS 商业产品**,我们面临“管理真空”: 1. **无法交付 B ?*:医院买了系统,科主任无法把账号分给医生,药企买了系统,无法监控项目进度? 2. **AI 成本黑洞**:缺乏全局视角?Token 消耗监控,单次大规模任务可能导致亏损? 3. **研发效能瓶颈**:每次调?Prompt(提示词)都需要改代码、发版,无法快速响应临床专家对 AI 效果的反馈? ### **1.2 差异化需求画?(Who needs what)** #### **A. 运营管理?(Ops) \- "上帝视角"** * **痛点**:不知道谁在用,不知道花了多少钱,不敢随便发新版? * **核心诉求**? * **开?*:给医院/药企开通租户,配置模块(卖什么给谁)? * **调优**:在不打扰用户的情况下,调试 AI Prompt? * **风控**:监?Token 消耗,异常熔断? #### **B. 医院机构?(Hospital Admin) \- "管人与管?** * **痛点**:医生流动性大,科研经费分配难? * **核心诉求**? * **品牌归属?*:登录页必须是医院自己的大楼照片?Logo,体现“本院科研平台”的专属感? * **层级管理**:按“科室”管理医生(如心内科、肿瘤科)? * **配额分配**:将购买的?Token 额度分配给不同科室或个人? #### **C. 药企机构?(Pharma Admin) \- "管项目与合规"** * **痛点**:IIT 项目分散在多家医院,数据进度不透明,合规风险大? * **核心诉求**? * **品牌定制**:药?Logo 必须时刻可见,符合企?VI 规范? * **项目视图**:不是管人,而是管“项目”(如某抗癌药临床研究)? * **审计合规**:所有操作必须有痕迹(Audit Log)? ## **2\. 核心架构决策 (Architecture)** 1. **模块化单?*:继续沿?/frontend-v2 单一代码库。通过**路由懒加?*区分不同端? 2. **数据隔离**:逻辑隔离(tenant\_id)? 3. **生产环境灰度**:支持管理员/调试者在生产环境使用 Draft ?Prompt? 4. **动态品牌渲?*:前端根?URL 路径或租?ID,动态加?CSS 变量和图片资源,实现“千人千面”的 UI? ## **3\. 角色与权限体?(RBAC v2)** **设计原则**:基于租户类型(Tenant Type)动态衍生角色? | 角色 Code | 归属 | 权限范围 | URL 前缀 | 核心职责 | | :---- | :---- | :---- | :---- | :---- | | **SUPER\_ADMIN** | 平台 | 全局数据 | /admin | 租户开通、品牌配置、Prompt 调优 | | **HOSPITAL\_ADMIN** | 医院租户 | 本院数据 | /org/hospital | 科室管理、配额分?| | **PHARMA\_ADMIN** | 药企租户 | 本企项目 | /org/pharma | 项目监控、CRO 管理、审?| | **USER** | 任意租户 | 个人/被授权数?| /app | 科研业务操作 | ## **4\. 品牌定制与专属登录设?(Tenant Branding) \[v2.1 新增\]** ### **4.1 URL 策略 (URL Strategy)** 为了低成本实现专属登录页,采?**路径前缀** 方案,而非子域名方案? * **通用登录**:https://app.yizhengxun.com/auth/login (显示壹证循默?UI) * **专属登录**:https://app.yizhengxun.com/t/{tenant\_code}/login * 示例:北京积水潭医院 \-\> /t/jst-hospital/login * 示例:恒瑞医?\-\> /t/hengrui/login ### **4.2 租户配置字段 (Tenant Config)** ?platform\_schema.tenants 表的 config JSONB 字段中扩展以下属性: { "branding": { "logoUrl": "https://oss.../jst\_logo.png", // 机构 Logo (透明背景) "loginBackgroundUrl": "https://oss.../jst\_bldg.jpg", // 登录页背景大? "primaryColor": "\#0056b3", // 品牌主色?(积水潭蓝) "welcomeTitle": "北京积水潭医?AI 临床科研平台", // 登录页大标题 "welcomeSubTitle": "智能?· 规范?· 高效? // 登录页副标题 } } ### **4.3 交互流程 (User Flow)** 1. **访问**:用户点击医院内网链?/t/jst-hospital/login? 2. **加载配置**:前端解?URL 中的 jst-hospital,调用公开 API /api/public/tenant-config?code=jst-hospital? 3. **渲染**? * 替换默认背景图为 loginBackgroundUrl? * 替换 "壹证?AI" 标题?"北京积水潭医?.."? * 替换登录框上方的 Logo? 4. **登录**:用户输入账号密码? 5. **进入系统**? * 跳转?/app/dashboard? * **关键?*:顶部导航栏 (Global Header) 左上角显?**医院 Logo**,而非平台 Logo? * Ant Design 主题色自动切换为医院品牌色? ## **5\. 运营管理端功能详?(Super Admin)** **路由?* /admin/\* ### **5.1 租户与商业化配置 (Provisioning) \[更新\]** * **租户开?*? * **基础信息**:名称、租户代?(Code,用?URL)? * **类型选择**:HOSPITAL | PHARMA | JOURNAL? * **品牌配置** (新增):上?Logo、背景图,设?Slogan? * **模块订阅**:勾?ASL, DC, IIT 等? * **配置预览**:在后台可以预览该租户的登录页效果? ### **5.2 Prompt 工程化平?(Prompt Ops)** * **编辑?*:Markdown \+ 变量高亮? * **生产预览开?*:开启后,管理员?/app 端操作时自动加载 Draft 版? ### **5.3 成本监控 (Cost)** * **Token 水位**:今日消?vs 预算? ## **6\. 机构管理端:医院?(Hospital Admin)** **路由?* /org/hospital/\* ### **6.1 科室与成员管?* * **科室?*:建立医院组织架构? * **成员管理**:批量导入医生,关联科室? ### **6.2 经费与配?* * **配额下发**:将?Token 额度分配给科室? ## **7\. 机构管理端:药企?(Pharma Admin)** **路由?* /org/pharma/\* ### **7.1 项目管理中心** * **项目列表**:查看本药企发起的所?IIT/IST 项目? * **进度监控**:接?IIT Manager Agent 数据? ### **7.2 合规与审?* * **操作审计**:查看数据修改痕迹? ## **8\. 统一登录与路由分?(Unified Entry)** ### **8.1 智能路由策略** 用户登录成功后,前端根据 user.role ?tenant.type 进行跳转? 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\. 技术实现规?(Technical Specs)** ### **9.1 数据?Schema 变更** \-- platform\_schema.tenants ALTER TABLE tenants ADD COLUMN code VARCHAR(50) UNIQUE, \-- 租户代码 (?jst-hospital) ADD COLUMN type VARCHAR(20) NOT NULL DEFAULT 'HOSPITAL', ADD COLUMN config JSONB DEFAULT '{}'; \-- config 包含 branding: { logoUrl, loginBackgroundUrl, ... } \-- platform\_schema.users ALTER TABLE users ADD COLUMN department VARCHAR(100); ### **9.2 API 接口新增** * GET /api/public/tenant-config?code={code} * **权限**:无需登录 (Public)? * **功能**:根据租户代码返回品牌配置信息(脱敏,只返回 UI 相关的)? ### **9.3 前端目录结构** src/modules/ ├── auth/ ? ├── LoginPage.tsx \# 通用登录? ? ├── TenantLoginPage.tsx \# 动态渲染的专属登录?(路由 /t/:code/login) ├── admin/ \# 运营管理? ├── org/ \# 机构管理? └── ... ## **10\. 实施路线?(Roadmap v2.1)** * **P0 (Week 1\)**: * DB Schema 变更(增?Tenant Code, Config)? * 实现 /api/public/tenant-config 接口? * 开?TenantLoginPage 组件,实现动态换肤? * **P1 (Week 2\)**: * 运营端增加“品牌配置”表单(上传图片?OSS)? * 实现全局 Header 根据当前用户 Tenant 自动切换 Logo? * **P2 (Week 3\)**: * 实现 /org/hospital 基础版