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:
@@ -1,11 +1,10 @@
|
||||
# ADMIN-运营管理端 - 开发TODO清单
|
||||
# ADMIN-餈鞱𨯫蝞∠<EFBFBD>蝡?- 撘<><E69298>騻ODO皜<4F><E79A9C>
|
||||
|
||||
> **版本:** v1.3
|
||||
> **创建日期:** 2026-01-11
|
||||
> **<EFBFBD><EFBFBD>𧋦嚗?* v1.3
|
||||
> **<EFBFBD>𥕦遣<EFBFBD>交<EFBFBD>嚗?* 2026-01-11
|
||||
> **<2A><><EFBFBD>擧凒<E693A7>堆<EFBFBD>** 2026-01-12
|
||||
> **<2A>餉<EFBFBD>摨佗<E691A8>** 98/110 (89%)
|
||||
> **状态:** ✅ Phase 3.5.5 已完成,Phase 4.0 租户管理已完成
|
||||
|
||||
> **<EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>** <EFBFBD>?Phase 3.5.5 撌脣<EFBFBD><EFBFBD>琜<EFBFBD>Phase 4.0 蝘<EFBFBD><EFBFBD>蝞∠<EFBFBD>撌脣<EFBFBD><EFBFBD>?
|
||||
---
|
||||
|
||||
## <20><> <20>颱<EFBFBD>餈𥕦漲
|
||||
@@ -14,59 +13,58 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>爗<EFBFBD> 89%
|
||||
```
|
||||
|
||||
| Phase | 完成 | 总计 | 进度 | 状态 |
|
||||
| Phase | 摰峕<EFBFBD> | <20>餉恣 | 餈𥕦漲 | <20>嗆<EFBFBD>?|
|
||||
|-------|------|------|------|------|
|
||||
| Phase 0 | 10 | 10 | 100% | ✅ 已完成 |
|
||||
| Phase 1 | 15 | 15 | 100% | ✅ 已完成 |
|
||||
| Phase 2 | 20 | 20 | 100% | ✅ 已完成 |
|
||||
| Phase 3 | 12 | 12 | 100% | ✅ 已完成 |
|
||||
| Phase 3.5 | 18 | 18 | 100% | ✅ 已完成 2026-01-12 |
|
||||
| Phase 4 | 19 | 25 | 76% | 🚧 租户管理已完成 2026-01-12 |
|
||||
| Phase 5 | 0 | 10 | 0% | ⏳ 待开始 |
|
||||
| Phase 0 | 10 | 10 | 100% | <EFBFBD>?撌脣<E6928C><E884A3>?|
|
||||
| Phase 1 | 15 | 15 | 100% | <EFBFBD>?撌脣<E6928C><E884A3>?|
|
||||
| Phase 2 | 20 | 20 | 100% | <EFBFBD>?撌脣<E6928C><E884A3>?|
|
||||
| Phase 3 | 12 | 12 | 100% | <EFBFBD>?撌脣<E6928C><E884A3>?|
|
||||
| Phase 3.5 | 18 | 18 | 100% | <EFBFBD>?撌脣<E6928C><E884A3>?2026-01-12 |
|
||||
| Phase 4 | 19 | 25 | 76% | <EFBFBD>银 蝘<><E89D98>蝞∠<E89D9E>撌脣<E6928C><E884A3>?2026-01-12 |
|
||||
| Phase 5 | 0 | 10 | 0% | <EFBFBD>?敺<><E695BA>憪?|
|
||||
|
||||
---
|
||||
|
||||
## 📋 测试账号信息(Seed数据)
|
||||
|
||||
## <EFBFBD><EFBFBD> 瘚贝<E7989A>韐血噡靽⊥<E99DBD>嚗𠄎eed<65>唳旿嚗?
|
||||
> <EFBFBD>𩤃<EFBFBD> 暺䁅恕撖<E68195><E69296>嚗䫤123456`
|
||||
> ✅ **登录测试通过**:2026-01-11
|
||||
> <EFBFBD>?**<2A>餃<EFBFBD>瘚贝<E7989A><E8B49D>朞<EFBFBD>**嚗?026-01-11
|
||||
|
||||
### 餈鞱𨯫<E99EB1>a<EFBFBD>韐血噡
|
||||
|
||||
| 手机号 | 姓名 | 角色 | 租户 | 说明 |
|
||||
| <EFBFBD>𧢲㦤<EFBFBD>?| 憪枏<E686AA> | 閫坿𠧧 | 蝘<><E89D98> | 霂湔<E99C82> |
|
||||
|--------|------|------|------|------|
|
||||
| `13800000001` | 超级管理员 | SUPER_ADMIN | 壹证循科技 | 拥有所有权限 |
|
||||
| `13800000002` | Prompt工程师 | PROMPT_ENGINEER | 壹证循科技 | Prompt调试权限 |
|
||||
| `13800000001` | 頞<EFBFBD>漣蝞∠<EFBFBD><EFBFBD>?| SUPER_ADMIN | 憯寡<EFBFBD>敺芰<EFBFBD><EFBFBD><EFBFBD> | <20>交<EFBFBD><E4BAA4><EFBFBD><EFBFBD>㗇<EFBFBD><E39787>?|
|
||||
| `13800000002` | Prompt撌亦<EFBFBD>撣?| PROMPT_ENGINEER | 憯寡<EFBFBD>敺芰<EFBFBD><EFBFBD><EFBFBD> | Prompt靚<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
|
||||
|
||||
### <20>駁堺瘚贝<E7989A>韐血噡
|
||||
|
||||
| 手机号 | 姓名 | 角色 | 租户 | 科室 |
|
||||
| <EFBFBD>𧢲㦤<EFBFBD>?| 憪枏<E686AA> | 閫坿𠧧 | 蝘<><E89D98> | 蝘穃恕 |
|
||||
|--------|------|------|------|------|
|
||||
| `13800000003` | 医院管理员 | HOSPITAL_ADMIN | 北京积水潭医院 | - |
|
||||
| `13800000004` | 科室主任 | DEPARTMENT_ADMIN | 北京积水潭医院 | 骨科 |
|
||||
| `13800000005` | 普通医生 | USER | 北京积水潭医院 | 骨科 |
|
||||
| `13800000003` | <EFBFBD>駁堺蝞∠<EFBFBD><EFBFBD>?| HOSPITAL_ADMIN | <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>?| - |
|
||||
| `13800000004` | 蝘穃恕銝颱遙 | DEPARTMENT_ADMIN | <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>?| 撉函<E69289> |
|
||||
| `13800000005` | <EFBFBD>桅<EFBFBD>𡁜龫<EFBFBD>?| USER | <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>?| 撉函<E69289> |
|
||||
|
||||
### <20>臭<EFBFBD>瘚贝<E7989A>韐血噡
|
||||
|
||||
| 手机号 | 姓名 | 角色 | 租户 |
|
||||
| <EFBFBD>𧢲㦤<EFBFBD>?| 憪枏<E686AA> | 閫坿𠧧 | 蝘<><E89D98> |
|
||||
|--------|------|------|------|
|
||||
| `13800000006` | 药企管理员 | PHARMA_ADMIN | 武田制药 |
|
||||
| `13800000007` | 药企研究员 | USER | 武田制药 |
|
||||
| `13800000006` | <EFBFBD>臭<EFBFBD>蝞∠<EFBFBD><EFBFBD>?| PHARMA_ADMIN | 甇衣眎<EFBFBD>嗉晓 |
|
||||
| `13800000007` | <EFBFBD>臭<EFBFBD><EFBFBD>𠉛弦<EFBFBD>?| USER | 甇衣眎<EFBFBD>嗉晓 |
|
||||
|
||||
### 銝芯犖<E88AAF>冽<EFBFBD>韐血噡
|
||||
|
||||
| 手机号 | 姓名 | 角色 | 租户 |
|
||||
| <EFBFBD>𧢲㦤<EFBFBD>?| 憪枏<E686AA> | 閫坿𠧧 | 蝘<><E89D98> |
|
||||
|--------|------|------|------|
|
||||
| `13800000008` | 銝芯犖<E88AAF>冽<EFBFBD> | USER | 銝芯犖<E88AAF>冽<EFBFBD> |
|
||||
|
||||
### 蝘<><E89D98>靽⊥<E99DBD>
|
||||
|
||||
| 租户Code | 名称 | 类型 | 状态 |
|
||||
| 蝘<EFBFBD><EFBFBD>Code | <EFBFBD>滨妍 | 蝐餃<E89D90> | <20>嗆<EFBFBD>?|
|
||||
|----------|------|------|------|
|
||||
| `yizhengxun` | 壹证循科技 | INTERNAL | ✅ 活跃 |
|
||||
| `jishuitan` | 北京积水潭医院 | HOSPITAL | ✅ 活跃 |
|
||||
| `takeda` | 武田制药 | PHARMA | ✅ 活跃 |
|
||||
| `public` | 个人用户 | PUBLIC | ✅ 活跃 |
|
||||
| `yizhengxun` | 憯寡<EFBFBD>敺芰<EFBFBD><EFBFBD><EFBFBD> | INTERNAL | <EFBFBD>?瘣餉<E798A3> |
|
||||
| `jishuitan` | <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>?| HOSPITAL | <EFBFBD>?瘣餉<E798A3> |
|
||||
| `takeda` | 甇衣眎<EFBFBD>嗉晓 | PHARMA | <EFBFBD>?瘣餉<E798A3> |
|
||||
| `public` | 銝芯犖<EFBFBD>冽<EFBFBD> | PUBLIC | <EFBFBD>?瘣餉<E798A3> |
|
||||
|
||||
### <20>餃<EFBFBD>URL
|
||||
|
||||
@@ -74,123 +72,90 @@
|
||||
|------|-----|
|
||||
| <20>𡁶鍂<F0A181B6>餃<EFBFBD> | `http://localhost:3000/login` |
|
||||
| 憯寡<E686AF>敺芰<E695BA><E88AB0><EFBFBD> | `http://localhost:3000/t/yizhengxun/login` |
|
||||
| 北京积水潭医院 | `http://localhost:3000/t/jishuitan/login` |
|
||||
| <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>?| `http://localhost:3000/t/jishuitan/login` |
|
||||
| 甇衣眎<E8A1A3>嗉晓 | `http://localhost:3000/t/takeda/login` |
|
||||
| 銝芯犖<E88AAF>冽<EFBFBD> | `http://localhost:3000/t/public/login` |
|
||||
|
||||
---
|
||||
|
||||
## Phase 0: 数据迁移(1天)✅ 已完成
|
||||
## Phase 0: <EFBFBD>唳旿餈<EFBFBD>宏嚗?憭抬<E686AD><E68AAC>?撌脣<E6928C><E884A3>?
|
||||
**<2A>格<EFBFBD>嚗?* 蝏煺<E89D8F><E785BA>冽<EFBFBD>銵剁<E98AB5><E58981><EFBFBD><EFBFBD><EFBFBD>箇<EFBFBD><E7AE87>臬<EFBFBD>
|
||||
|
||||
**目标:** 统一用户表,准备基础环境
|
||||
|
||||
> ⚠️ **注意**:2026-01-11 因数据库事故,采用了"重建+seed"方式而非迁移方式。详见 [事故总结](../../../08-项目管理/2026-01-11-数据库事故总结.md)
|
||||
> <EFBFBD>𩤃<EFBFBD> **瘜冽<E7989C>**嚗?026-01-11 <20>䭾㺭<E4ADBE>桀<EFBFBD>鈭𧢲<E988AD>嚗屸<E59A97><E5B1B8>其<EFBFBD>"<22>滚遣+seed"<22>孵<EFBFBD><E5ADB5>屸<EFBFBD>餈<EFBFBD>宏<EFBFBD>孵<EFBFBD><E5ADB5><EFBFBD>祕閫?[鈭𧢲<E988AD><F0A7A2B2>餌<EFBFBD>](../../../08-憿寧𤌍蝞∠<E89D9E>/2026-01-11-<2D>唳旿摨㮖<E691A8><E3AE96><EFBFBD><EFBFBD>餌<EFBFBD>.md)
|
||||
|
||||
### <20>唳旿憭<E697BF>遢
|
||||
- [x] 备份`public.users`表数据 ✅ 使用 backup_20260111_131506.sql
|
||||
- [x] 备份`platform_schema.User`表数据 ✅ 同上
|
||||
- [x] 憭<EFBFBD>遢`public.users`銵冽㺭<EFBFBD>?<3F>?雿輻鍂 backup_20260111_131506.sql
|
||||
- [x] 憭<EFBFBD>遢`platform_schema.User`銵冽㺭<EFBFBD>?<3F>?<3F>䔶<EFBFBD>
|
||||
- [x] 憭<>遢<EFBFBD><E981A2><EFBFBD>匧<EFBFBD><E58CA7>磰”嚗<E2809D><E59A97>AdminLog嚗争<E59A97> <20>䔶<EFBFBD>
|
||||
|
||||
### <20>唳旿餈<E697BF>宏
|
||||
- [x] 编写迁移脚本 ✅ 改为使用 prisma/seed.ts 重建
|
||||
- [x] 处理ID映射(旧ID → 新UUID)✅ 新UUID自动生成
|
||||
- [x] 更新外键关联 ✅ schema.prisma 已定义
|
||||
- [x] 验证数据完整性 ✅ verify_system.ts 验证通过
|
||||
- [x] 蝻硋<EFBFBD>餈<EFBFBD>宏<EFBFBD>𡁏𧋦 <20>?<3F>嫣蛹雿輻鍂 prisma/seed.ts <EFBFBD>滚遣
|
||||
- [x] 憭<EFBFBD><EFBFBD>ID<EFBFBD>惩<EFBFBD>嚗<EFBFBD>唂ID <20>?<3F>託UID嚗争<E59A97> <20>託UID<49>芸𢆡<E88AB8><F0A286A1><EFBFBD>
|
||||
- [x] <EFBFBD>湔鰵憭㚚睸<EFBFBD>唾<EFBFBD> <20>?schema.prisma 撌脣<EFBFBD>銋?- [x] 撉諹<E69289><E8ABB9>唳旿摰峕㟲<E5B395>?<3F>?verify_system.ts 撉諹<E69289><E8ABB9>朞<EFBFBD>
|
||||
|
||||
### <20>唳旿皜<E697BF><E79A9C>
|
||||
- [x] 重命名`public.users`为`public.users_backup` ✅ 保留 mock 用户用于兼容
|
||||
- [x] 设置7天后自动删除提醒 ✅ 不再需要,已采用双表兼容方案
|
||||
|
||||
### 超级管理员
|
||||
- [x] 创建超级管理员账号 ✅ 13800000001
|
||||
- [x] 验证账号可用 ✅ seed 执行成功
|
||||
- [x] <EFBFBD>滚𦶢<EFBFBD>崾public.users`銝槁public.users_backup` <EFBFBD>?靽萘<E99DBD> mock <EFBFBD>冽<EFBFBD><EFBFBD>其<EFBFBD><EFBFBD>澆捆
|
||||
- [x] 霈曄蔭7憭拙<EFBFBD><EFBFBD>芸𢆡<EFBFBD>𣳇膄<EFBFBD>鞾<EFBFBD> <20>?銝滚<E98A9D><E6BB9A><EFBFBD>閬<EFBFBD><E996AC>撌脤<E6928C><E884A4>典<EFBFBD>銵典<E98AB5>摰寞䲮獢?
|
||||
### 頞<>漣蝞∠<E89D9E><E288A0>?- [x] <20>𥕦遣頞<E981A3>漣蝞∠<E89D9E><E288A0>䁅揭<E48185>?<3F>?13800000001
|
||||
- [x] 撉諹<E69289>韐血噡<E8A180>舐鍂 <20>?seed <20>扯<EFBFBD><E689AF>𣂼<EFBFBD>
|
||||
|
||||
### 撉諹<E69289>
|
||||
- [x] 数据条数一致性检查 ✅ 5用户、3租户、2科室、15权限
|
||||
- [x] 关键字段完整性检查 ✅ 所有必填字段已填充
|
||||
- [x] 编写验证报告 ✅ verify_all_users.ts
|
||||
- [x] <EFBFBD>唳旿<EFBFBD>⊥㺭銝<EFBFBD><EFBFBD>湔<EFBFBD>扳<EFBFBD><EFBFBD>?<3F>?5<>冽<EFBFBD><E586BD>?蝘<><E89D98><EFBFBD>?蝘穃恕<E7A983>?5<><35><EFBFBD>
|
||||
- [x] <EFBFBD>喲睸摮埈挾摰峕㟲<EFBFBD>扳<EFBFBD><EFBFBD>?<3F>?<3F><><EFBFBD>匧<EFBFBD>憛怠<E6869B>畾萄歇憛怠<E6869B>
|
||||
- [x] 蝻硋<EFBFBD>撉諹<EFBFBD><EFBFBD>亙<EFBFBD> <20>?verify_all_users.ts
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: 数据库Schema设计(2天)✅ 已完成
|
||||
## Phase 1: <EFBFBD>唳旿摨廍chema霈曇恣嚗?憭抬<E686AD><E68AAC>?撌脣<E6928C><E884A3>?
|
||||
**<2A>格<EFBFBD>嚗?* <20>𥕦遣<F0A595A6><E981A3><EFBFBD>㗇瓲敹<E793B2>”
|
||||
|
||||
**目标:** 创建所有核心表
|
||||
> <EFBFBD>?**摰峕<E691B0><E5B395>交<EFBFBD>**嚗?026-01-11 | 霂西<E99C82> `backend/prisma/schema.prisma` <20>?`backend/prisma/seed.ts`
|
||||
|
||||
> ✅ **完成日期**:2026-01-11 | 详见 `backend/prisma/schema.prisma` 和 `backend/prisma/seed.ts`
|
||||
|
||||
### Day 1: 平台核心表 ✅
|
||||
|
||||
#### tenants表 ✅
|
||||
- [x] 定义Prisma Schema ✅ `platform_schema.tenants`
|
||||
### Day 1: 撟喳蝱<E596B3>詨<EFBFBD>銵?<3F>?
|
||||
#### tenants銵?<3F>?- [x] 摰帋<E691B0>Prisma Schema <20>?`platform_schema.tenants`
|
||||
- [x] 瘛餃<E7989B>敹<EFBFBD><E695B9>摮埈挾嚗ǎd, code, name, type, status嚗争<E59A97>
|
||||
- [x] 瘛餃<E7989B><E9A483><EFBFBD><EFBFBD><EFBFBD>滨蔭摮埈挾嚗Ếonfig JSONB嚗争<E59A97>
|
||||
- [x] 瘛餃<E7989B><E9A483>漤<EFBFBD>摮埈挾嚗ōotalQuota, usedQuota嚗争<E59A97>
|
||||
|
||||
#### users表扩展 ✅
|
||||
- [x] 添加`tenantId`字段 ✅
|
||||
- [x] 添加`departmentId`字段 ✅
|
||||
- [x] 修改`role`字段为Enum类型 ✅ `UserRole`
|
||||
- [x] 添加索引 ✅
|
||||
#### users銵冽<EFBFBD>撅?<3F>?- [x] 瘛餃<E7989B>`tenantId`摮埈挾 <20>?- [x] 瘛餃<E7989B>`departmentId`摮埈挾 <20>?- [x] 靽格㺿`role`摮埈挾銝慟num蝐餃<E89D90> <20>?`UserRole`
|
||||
- [x] 瘛餃<EFBFBD>蝝W<EFBFBD> <20>?
|
||||
#### tenant_members銵?<3F>?- [x] 摰帋<E691B0>銵函<E98AB5><E587BD>?<3F>?`platform_schema.tenant_members`
|
||||
- [x] 撱箇<EFBFBD>銝𤢂enants<EFBFBD>吴sers<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>?- [x] 瘛餃<E7989B>`role`摮埈挾嚗<EFBFBD><EFBFBD><EFBFBD>瑕<EFBFBD>閫坿𠧧嚗争<EFBFBD>
|
||||
|
||||
#### tenant_members表 ✅
|
||||
- [x] 定义表结构 ✅ `platform_schema.tenant_members`
|
||||
- [x] 建立与tenants和users的关联 ✅
|
||||
- [x] 添加`role`字段(租户内角色)✅
|
||||
### Day 2: <20>漤<EFBFBD>銝擧<E98A9D><E693A7>鞱” <20>?
|
||||
#### tenant_quotas銵?<3F>?- [x] 摰帋<E691B0>銵函<E98AB5><E587BD>?<3F>?`platform_schema.tenant_quotas`
|
||||
- [x] <EFBFBD>唾<EFBFBD>tenants銵?<3F>?
|
||||
#### tenant_quota_allocations銵?<3F>?<3F><>
|
||||
- [x] 摰帋<E691B0>銵函<E98AB5><E587BD>?<3F>?`platform_schema.tenant_quota_allocations`
|
||||
- [x] <20>舀<EFBFBD>`targetType` (DEPARTMENT | USER) <20>?- [x] 瘛餃<E7989B>`limitAmount`<EFBFBD>䈣usedAmount`摮埈挾 <20>?
|
||||
#### departments銵?<3F>?- [x] 摰帋<E691B0>銵函<E98AB5><E587BD>?<3F>?`platform_schema.departments`
|
||||
- [x] <20>舀<EFBFBD>`parentId`嚗<EFBFBD><EFBFBD>蝥抒<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?- [x] <20>唾<EFBFBD>tenants銵?<3F>?
|
||||
#### tenant_modules銵?<3F>?- [x] 摰帋<E691B0>銵函<E98AB5><E587BD>?<3F>?`platform_schema.tenant_modules`
|
||||
- [x] 瘛餃<E7989B>`moduleCode`摮埈挾 <20>?- [x] 瘛餃<E7989B>`isEnabled`<EFBFBD>䈣expiresAt`摮埈挾 <20>?
|
||||
#### permissions銵?<3F>?- [x] 摰帋<E691B0>銵函<E98AB5><E587BD>?<3F>?`platform_schema.permissions`
|
||||
- [x] <20>鍦<EFBFBD><E98DA6>箇<EFBFBD><E7AE87><EFBFBD><EFBFBD><EFBFBD>唳旿 <20>?15銝芣<E98A9D><E88AA3>?- [x] <20>鍦<EFBFBD>`prompt:*`<EFBFBD><EFBFBD><EFBFBD> <20>?prompt:view/edit/debug/publish
|
||||
|
||||
### Day 2: 配额与权限表 ✅
|
||||
|
||||
#### tenant_quotas表 ✅
|
||||
- [x] 定义表结构 ✅ `platform_schema.tenant_quotas`
|
||||
- [x] 关联tenants表 ✅
|
||||
|
||||
#### tenant_quota_allocations表 ✅ 🆕
|
||||
- [x] 定义表结构 ✅ `platform_schema.tenant_quota_allocations`
|
||||
- [x] 支持`targetType` (DEPARTMENT | USER) ✅
|
||||
- [x] 添加`limitAmount`和`usedAmount`字段 ✅
|
||||
|
||||
#### departments表 ✅
|
||||
- [x] 定义表结构 ✅ `platform_schema.departments`
|
||||
- [x] 支持`parentId`(多级结构)✅
|
||||
- [x] 关联tenants表 ✅
|
||||
|
||||
#### tenant_modules表 ✅
|
||||
- [x] 定义表结构 ✅ `platform_schema.tenant_modules`
|
||||
- [x] 添加`moduleCode`字段 ✅
|
||||
- [x] 添加`isEnabled`和`expiresAt`字段 ✅
|
||||
|
||||
#### permissions表 ✅
|
||||
- [x] 定义表结构 ✅ `platform_schema.permissions`
|
||||
- [x] 插入基础权限数据 ✅ 15个权限
|
||||
- [x] 插入`prompt:*`权限 ✅ prompt:view/edit/debug/publish
|
||||
|
||||
#### role_permissions表 ✅
|
||||
- [x] 定义表结构 ✅ `platform_schema.role_permissions`
|
||||
- [x] 关联roles和permissions ✅
|
||||
|
||||
### Prisma相关 ✅
|
||||
- [x] 完成完整的`schema.prisma`编写 ✅
|
||||
- [x] 运行`npx prisma generate` ✅
|
||||
- [x] 运行`npx prisma db push` ✅ (测试环境使用push)
|
||||
#### role_permissions銵?<3F>?- [x] 摰帋<E691B0>銵函<E98AB5><E587BD>?<3F>?`platform_schema.role_permissions`
|
||||
- [x] <20>唾<EFBFBD>roles<65>俰ermissions <20>?
|
||||
### Prisma<6D>詨<EFBFBD> <20>?- [x] 摰峕<E691B0>摰峕㟲<E5B395><E39FB2>schema.prisma`蝻硋<E89DBB> <20>?- [x] 餈鞱<E9A488>`npx prisma generate` <20>?- [x] 餈鞱<E9A488>`npx prisma db push` <20>?(瘚贝<E7989A><E8B49D>臬<EFBFBD>雿輻鍂push)
|
||||
- [x] 蝻硋<E89DBB>蝘滚<E89D98><E6BB9A>唳旿<E594B3>𡁏𧋦嚗Ǒprisma/seed.ts`嚗争<E59A97>
|
||||
- [x] 运行种子数据 ✅
|
||||
|
||||
### 📝 Seed 用户信息汇总(完整)
|
||||
|
||||
| 手机号 | 密码 | 姓名 | 角色 | 租户 | 科室 |
|
||||
- [x] 餈鞱<EFBFBD>蝘滚<EFBFBD><EFBFBD>唳旿 <20>?
|
||||
### <20><> Seed <20>冽<EFBFBD>靽⊥<E99DBD>瘙<EFBFBD><E79899>鳴<EFBFBD>摰峕㟲嚗?
|
||||
| <20>𧢲㦤<F0A7A2B2>?| 撖<><E69296> | 憪枏<E686AA> | 閫坿𠧧 | 蝘<><E89D98> | 蝘穃恕 |
|
||||
|--------|------|------|------|------|------|
|
||||
| 13800000001 | 123456 | 超级管理员 | SUPER_ADMIN | 壹证循科技 | - |
|
||||
| 13800000002 | 123456 | Prompt工程师 | PROMPT_ENGINEER | 壹证循科技 | - |
|
||||
| 13800000003 | 123456 | 医院管理员 | HOSPITAL_ADMIN | 北京积水潭医院 | - |
|
||||
| 13800000004 | 123456 | 科室主任 | DEPARTMENT_ADMIN | 北京积水潭医院 | 骨科 |
|
||||
| 13800000005 | 123456 | 普通医生 | USER | 北京积水潭医院 | 骨科 |
|
||||
| 13800000006 | 123456 | 药企管理员 | PHARMA_ADMIN | 武田制药 | - |
|
||||
| 13800000007 | 123456 | 药企研究员 | USER | 武田制药 | - |
|
||||
| 13800000001 | 123456 | 頞<EFBFBD>漣蝞∠<EFBFBD><EFBFBD>?| SUPER_ADMIN | 憯寡<EFBFBD>敺芰<EFBFBD><EFBFBD><EFBFBD> | - |
|
||||
| 13800000002 | 123456 | Prompt撌亦<EFBFBD>撣?| PROMPT_ENGINEER | 憯寡<EFBFBD>敺芰<EFBFBD><EFBFBD><EFBFBD> | - |
|
||||
| 13800000003 | 123456 | <EFBFBD>駁堺蝞∠<EFBFBD><EFBFBD>?| HOSPITAL_ADMIN | <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>?| - |
|
||||
| 13800000004 | 123456 | 蝘穃恕銝颱遙 | DEPARTMENT_ADMIN | <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>?| 撉函<E69289> |
|
||||
| 13800000005 | 123456 | <EFBFBD>桅<EFBFBD>𡁜龫<EFBFBD>?| USER | <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>?| 撉函<E69289> |
|
||||
| 13800000006 | 123456 | <EFBFBD>臭<EFBFBD>蝞∠<EFBFBD><EFBFBD>?| PHARMA_ADMIN | 甇衣眎<EFBFBD>嗉晓 | - |
|
||||
| 13800000007 | 123456 | <EFBFBD>臭<EFBFBD><EFBFBD>𠉛弦<EFBFBD>?| USER | 甇衣眎<EFBFBD>嗉晓 | - |
|
||||
| 13800000008 | 123456 | 銝芯犖<E88AAF>冽<EFBFBD> | USER | 銝芯犖<E88AAF>冽<EFBFBD> | - |
|
||||
|
||||
**租户专属登录URL:**
|
||||
**蝘<EFBFBD><EFBFBD>銝枏<EFBFBD><EFBFBD>餃<EFBFBD>URL嚗?*
|
||||
- <20>𡁶鍂<F0A181B6>餃<EFBFBD>: `/login`
|
||||
- 憯寡<E686AF>敺芰<E695BA><E88AB0><EFBFBD>: `/t/yizhengxun/login`
|
||||
- 北京积水潭医院: `/t/jishuitan/login`
|
||||
- <EFBFBD>𦯀漪蝘舀偌瞏剖龫<EFBFBD>? `/t/jishuitan/login`
|
||||
- 甇衣眎<E8A1A3>嗉晓: `/t/takeda/login`
|
||||
- 銝芯犖<E88AAF>冽<EFBFBD>: `/t/public/login`
|
||||
|
||||
@@ -198,218 +163,110 @@
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: 后端认证系统(3天)✅ 已完成
|
||||
|
||||
**目标:** 实现JWT认证和权限控制
|
||||
|
||||
## Phase 2: <EFBFBD>𡒊垢霈方<EFBFBD>蝟餌<EFBFBD>嚗?憭抬<E686AD><E68AAC>?撌脣<E6928C><E884A3>?
|
||||
**<2A>格<EFBFBD>嚗?* 摰䂿緵JWT霈方<E99C88><E696B9>峕<EFBFBD><E5B395>鞉綉<E99E89>?
|
||||
> <EFBFBD><EFBFBD> 隞<><E99A9E>雿滨蔭: `backend/src/common/auth/`
|
||||
> ✅ **完成日期**:2026-01-11
|
||||
> <EFBFBD>?**摰峕<E691B0><E5B395>交<EFBFBD>**嚗?026-01-11
|
||||
|
||||
### Day 1: JWT工具类 ✅ 已完成
|
||||
### Day 1: JWT撌亙<EFBFBD>蝐?<3F>?撌脣<E6928C><E884A3>?
|
||||
#### jwt.service.ts <20>?- [x] 摰䂿緵`generateAccessToken(payload)` <20>?- [x] 摰䂿緵`generateRefreshToken(payload)` <20>?- [x] 摰䂿緵`generateTokens(payload)` <20>?<3F><><EFBFBD>摰峕㟲Token<65>滚<EFBFBD>
|
||||
- [x] 摰䂿緵`verifyToken(token)` <20>?- [x] 摰䂿緵`refreshToken(token, getUserById)` <20>?- [x] 摰䂿緵`extractTokenFromHeader(header)` <20>?- [x] <20>滨蔭JWT_SECRET<45>臬<EFBFBD><E887AC>㗛<EFBFBD> <20>?撌脣銁 env.ts 銝剝<E98A9D>蝵?- [x] <20>訫<EFBFBD>瘚贝<E7989A> <20>?<3F>賭誘銵屸<E98AB5>霂<EFBFBD><E99C82>朞<EFBFBD>
|
||||
|
||||
#### jwt.service.ts ✅
|
||||
- [x] 实现`generateAccessToken(payload)` ✅
|
||||
- [x] 实现`generateRefreshToken(payload)` ✅
|
||||
- [x] 实现`generateTokens(payload)` ✅ 生成完整Token响应
|
||||
- [x] 实现`verifyToken(token)` ✅
|
||||
- [x] 实现`refreshToken(token, getUserById)` ✅
|
||||
- [x] 实现`extractTokenFromHeader(header)` ✅
|
||||
- [x] 配置JWT_SECRET环境变量 ✅ 已在 env.ts 中配置
|
||||
- [x] 单元测试 ✅ 命令行验证通过
|
||||
### Day 2: 霈方<E99C88>API <20>?撌脣<E6928C><E884A3>?
|
||||
#### auth.controller.ts <20>?- [x] `POST /api/v1/auth/login/password` - 撖<><E69296><EFBFBD>餃<EFBFBD> <20>?- [x] `POST /api/v1/auth/login/code` - 撉諹<E69289><E8ABB9><EFBFBD>蒈敶?<3F>?- [x] `POST /api/v1/auth/verification-code` - <20>煾<EFBFBD><E785BE><EFBFBD>霂<EFBFBD><E99C82> <20>?- [x] `POST /api/v1/auth/logout` - <20>餃枂 <20>?- [x] `GET /api/v1/auth/me` - <20>瑕<EFBFBD>敶枏<E695B6><E69E8F>冽<EFBFBD>靽⊥<E99DBD> <20>?- [x] `POST /api/v1/auth/refresh` - <20>瑟鰵Token <20>?- [x] `POST /api/v1/auth/change-password` - 靽格㺿撖<E3BABF><E69296> <20>?
|
||||
#### auth.service.ts <20>?- [x] 摰䂿緵`loginWithPassword()` <20>?- [x] 摰䂿緵`loginWithVerificationCode()` <20>?- [x] 摰䂿緵`getCurrentUser()` <20>?- [x] 摰䂿緵`changePassword()` <20>?- [x] 摰䂿緵`sendVerificationCode()` <20>?- [x] 摰䂿緵`refreshToken()` <20>?- [x] 摰䂿緵`getUserPermissions()` <20>?- [x] 撖<><E69296><EFBFBD>惩<EFBFBD>嚗Ê̄cryptjs嚗争<E59A97>
|
||||
|
||||
### Day 2: 认证API ✅ 已完成
|
||||
#### auth.routes.ts <20>?- [x] 頝舐眏摰帋<E691B0><E5B88B>玺chema撉諹<E69289> <20>?- [x] 瘜典<E7989C><E585B8>?index.ts <20>?`/api/v1/auth`
|
||||
|
||||
#### auth.controller.ts ✅
|
||||
- [x] `POST /api/v1/auth/login/password` - 密码登录 ✅
|
||||
- [x] `POST /api/v1/auth/login/code` - 验证码登录 ✅
|
||||
- [x] `POST /api/v1/auth/verification-code` - 发送验证码 ✅
|
||||
- [x] `POST /api/v1/auth/logout` - 登出 ✅
|
||||
- [x] `GET /api/v1/auth/me` - 获取当前用户信息 ✅
|
||||
- [x] `POST /api/v1/auth/refresh` - 刷新Token ✅
|
||||
- [x] `POST /api/v1/auth/change-password` - 修改密码 ✅
|
||||
|
||||
#### auth.service.ts ✅
|
||||
- [x] 实现`loginWithPassword()` ✅
|
||||
- [x] 实现`loginWithVerificationCode()` ✅
|
||||
- [x] 实现`getCurrentUser()` ✅
|
||||
- [x] 实现`changePassword()` ✅
|
||||
- [x] 实现`sendVerificationCode()` ✅
|
||||
- [x] 实现`refreshToken()` ✅
|
||||
- [x] 实现`getUserPermissions()` ✅
|
||||
- [x] 密码加密(bcryptjs)✅
|
||||
|
||||
#### auth.routes.ts ✅
|
||||
- [x] 路由定义和Schema验证 ✅
|
||||
- [x] 注册到 index.ts ✅ `/api/v1/auth`
|
||||
|
||||
### Day 3: 认证中间件 ✅ 已完成
|
||||
|
||||
#### auth.middleware.ts ✅
|
||||
- [x] `authenticate` - 验证JWT Token ✅
|
||||
- [x] `optionalAuthenticate` - 可选认证 ✅
|
||||
- [x] `requireRoles(...roles)` - 验证角色 ✅
|
||||
- [x] `requirePermission(permission)` - 验证具体权限 ✅
|
||||
- [x] `requireSameTenant` - 验证租户访问权限 ✅
|
||||
- [x] `registerAuthPlugin(fastify)` - 注册插件 ✅
|
||||
|
||||
#### 应用中间件 ✅
|
||||
- [x] 保护现有Legacy API ✅ 暂时保持兼容
|
||||
- [x] 保护RVW模块API ✅ 暂时保持兼容
|
||||
- [x] 保护AIA模块API ✅ 暂时保持兼容
|
||||
- [x] 保护PKB模块API ✅ 暂时保持兼容
|
||||
|
||||
#### 测试 ✅
|
||||
- [x] 编写Postman测试集合 ✅ 使用PowerShell Invoke-RestMethod验证
|
||||
- [x] 测试所有认证流程 ✅
|
||||
- [x] 测试权限控制 ✅
|
||||
### Day 3: 霈方<E99C88>銝剝𡢿隞?<3F>?撌脣<E6928C><E884A3>?
|
||||
#### auth.middleware.ts <20>?- [x] `authenticate` - 撉諹<E69289>JWT Token <20>?- [x] `optionalAuthenticate` - <20>舫<EFBFBD>㕑恕霂?<3F>?- [x] `requireRoles(...roles)` - 撉諹<E69289>閫坿𠧧 <20>?- [x] `requirePermission(permission)` - 撉諹<E69289><E8ABB9>瑚<EFBFBD><E7919A><EFBFBD><EFBFBD> <20>?- [x] `requireSameTenant` - 撉諹<E69289>蝘<EFBFBD><E89D98>霈輸䔮<E8BCB8><E494AE><EFBFBD> <20>?- [x] `registerAuthPlugin(fastify)` - 瘜典<E7989C><E585B8>雴辣 <20>?
|
||||
#### 摨𠉛鍂銝剝𡢿隞?<3F>?- [x] 靽脲擪<E884B2>唳<EFBFBD>Legacy API <20>?<3F><>𧒄靽脲<E99DBD><E884B2>澆捆
|
||||
- [x] 靽脲擪RVW璅∪<EFBFBD>API <20>?<3F><>𧒄靽脲<E99DBD><E884B2>澆捆
|
||||
- [x] 靽脲擪AIA璅∪<EFBFBD>API <20>?<3F><>𧒄靽脲<E99DBD><E884B2>澆捆
|
||||
- [x] 靽脲擪PKB璅∪<EFBFBD>API <20>?<3F><>𧒄靽脲<E99DBD><E884B2>澆捆
|
||||
|
||||
#### 瘚贝<E7989A> <20>?- [x] 蝻硋<E89DBB>Postman瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD> <20>?雿輻鍂PowerShell Invoke-RestMethod撉諹<E69289>
|
||||
- [x] 瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD>㕑恕霂<E68195><E99C82>蝔?<3F>?- [x] 瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD><EFBFBD>批<EFBFBD> <20>?
|
||||
---
|
||||
|
||||
## Phase 3: 前端认证对接(2天)✅ 已完成
|
||||
|
||||
**目标:** 实现登录页面和权限对接
|
||||
|
||||
## Phase 3: <EFBFBD>滨垢霈方<EFBFBD>撖寞𦻖嚗?憭抬<E686AD><E68AAC>?撌脣<E6928C><E884A3>?
|
||||
**<2A>格<EFBFBD>嚗?* 摰䂿緵<E482BF>餃<EFBFBD>憿菟𢒰<E88F9F>峕<EFBFBD><E5B395>𣂼笆<F0A382BC>?
|
||||
> <EFBFBD><EFBFBD> 隞<><E99A9E>雿滨蔭: `frontend-v2/src/framework/auth/`, `frontend-v2/src/pages/LoginPage.tsx`
|
||||
> ✅ **完成日期**:2026-01-11 | **测试通过**
|
||||
|
||||
### Day 1: 登录页面 ✅
|
||||
|
||||
#### LoginPage.tsx ✅
|
||||
- [x] 创建登录表单(手机号 + 密码 / 验证码)✅
|
||||
- [x] 表单验证 ✅ Ant Design Form
|
||||
- [x] 调用登录API ✅
|
||||
- [x] 存储Token到localStorage ✅
|
||||
- [x] 错误处理和提示 ✅
|
||||
- [x] 默认密码修改提示弹窗 ✅
|
||||
|
||||
#### useAuth Hook (AuthContext) ✅
|
||||
- [x] 实现`loginWithPassword()`方法 ✅
|
||||
- [x] 实现`loginWithCode()`方法 ✅
|
||||
- [x] 实现`logout()`方法 ✅
|
||||
- [x] 实现`getCurrentUser()`方法 ✅
|
||||
- [x] 实现`isAuthenticated`状态 ✅
|
||||
|
||||
### Day 2: 权限框架对接 ✅
|
||||
|
||||
#### AuthContext.tsx ✅
|
||||
- [x] 创建认证上下文 ✅
|
||||
- [x] 提供`user`状态 ✅
|
||||
- [x] 提供`token`状态 ✅
|
||||
- [x] 提供登录/登出方法 ✅
|
||||
- [x] 自动刷新Token逻辑 ✅
|
||||
|
||||
#### PermissionContext.tsx更新 ✅
|
||||
- [x] 删除MOCK_USER ✅ 改为从AuthContext获取
|
||||
- [x] 从后端API获取用户信息 ✅
|
||||
- [x] 从用户信息中解析权限 ✅
|
||||
- [x] 更新`checkModulePermission`逻辑 ✅
|
||||
- [x] 更新`checkFeaturePermission`逻辑 ✅
|
||||
|
||||
#### 路由保护 ✅
|
||||
- [x] 更新`MainLayout`认证检查 ✅
|
||||
- [x] 应用到所有业务模块路由 ✅
|
||||
- [x] 未登录用户重定向到登录页 ✅
|
||||
> <EFBFBD>?**摰峕<E691B0><E5B395>交<EFBFBD>**嚗?026-01-11 | **瘚贝<EFBFBD><EFBFBD>朞<EFBFBD>**
|
||||
|
||||
### Day 1: <20>餃<EFBFBD>憿菟𢒰 <20>?
|
||||
#### LoginPage.tsx <20>?- [x] <20>𥕦遣<F0A595A6>餃<EFBFBD>銵典<E98AB5>嚗<EFBFBD><E59A97><EFBFBD>箏噡 + 撖<><E69296> / 撉諹<E69289><E8ABB9><EFBFBD><EFBFBD><EFBFBD>?- [x] 銵典<E98AB5>撉諹<E69289> <20>?Ant Design Form
|
||||
- [x] 靚<>鍂<EFBFBD>餃<EFBFBD>API <20>?- [x] 摮睃<E691AE>Token<65>追ocalStorage <20>?- [x] <20>躰秤憭<E7A7A4><E686AD><EFBFBD>峕<EFBFBD>蝷?<3F>?- [x] 暺䁅恕撖<E68195><E69296>靽格㺿<E6A0BC>鞟內撘寧<E69298> <20>?
|
||||
#### useAuth Hook (AuthContext) <20>?- [x] 摰䂿緵`loginWithPassword()`<60>寞<EFBFBD> <20>?- [x] 摰䂿緵`loginWithCode()`<60>寞<EFBFBD> <20>?- [x] 摰䂿緵`logout()`<60>寞<EFBFBD> <20>?- [x] 摰䂿緵`getCurrentUser()`<60>寞<EFBFBD> <20>?- [x] 摰䂿緵`isAuthenticated`<60>嗆<EFBFBD>?<3F>?
|
||||
### Day 2: <20><><EFBFBD>獢<EFBFBD>沲撖寞𦻖 <20>?
|
||||
#### AuthContext.tsx <20>?- [x] <20>𥕦遣霈方<E99C88>銝𠹺<E98A9D><F0A0B9BA>?<3F>?- [x] <20>𣂷<EFBFBD>`user`<60>嗆<EFBFBD>?<3F>?- [x] <20>𣂷<EFBFBD>`token`<60>嗆<EFBFBD>?<3F>?- [x] <20>𣂷<EFBFBD><F0A382B7>餃<EFBFBD>/<2F>餃枂<E9A483>寞<EFBFBD> <20>?- [x] <20>芸𢆡<E88AB8>瑟鰵Token<65>餉<EFBFBD> <20>?
|
||||
#### PermissionContext.tsx<73>湔鰵 <20>?- [x] <20>𣳇膄MOCK_USER <20>?<3F>嫣蛹隞垾uthContext<78>瑕<EFBFBD>
|
||||
- [x] 隞𤾸<E99A9E>蝡涉PI<50>瑕<EFBFBD><E79195>冽<EFBFBD>靽⊥<E99DBD> <20>?- [x] 隞𡒊鍂<F0A1928A>瑚縑<E7919A>臭葉閫<E89189><E996AB><EFBFBD><EFBFBD><EFBFBD> <20>?- [x] <20>湔鰵`checkModulePermission`<EFBFBD>餉<EFBFBD> <20>?- [x] <20>湔鰵`checkFeaturePermission`<EFBFBD>餉<EFBFBD> <20>?
|
||||
#### 頝舐眏靽脲擪 <20>?- [x] <20>湔鰵`MainLayout`霈方<E99C88>璉<EFBFBD><E79289>?<3F>?- [x] 摨𠉛鍂<F0A0899B>唳<EFBFBD><E594B3>劐<EFBFBD><E58A90>⊥芋<E28AA5>𡑒楝<F0A19192>?<3F>?- [x] <20>芰蒈敶閧鍂<E996A7>琿<EFBFBD>摰𡁜<E691B0><F0A1819C>啁蒈敶閖△ <20>?
|
||||
---
|
||||
|
||||
## Phase 3.5: Prompt管理系统(7天)⭐ 下一步
|
||||
## Phase 3.5: Prompt蝞∠<EFBFBD>蝟餌<EFBFBD>嚗?憭抬<E686AD>潃?銝衤<E98A9D>甇?
|
||||
**<2A>格<EFBFBD>嚗?* 摰䂿緵<E482BF>煺漣<E785BA>臬<EFBFBD><E887AC>啣漲憸<E6BCB2><E686B8>蝟餌<E89D9F>
|
||||
|
||||
**目标:** 实现生产环境灰度预览系统
|
||||
|
||||
> 🎯 **下一阶段重点** - 运营管理端核心功能
|
||||
> 📄 **详细计划:** [02-Prompt管理系统开发计划.md](./02-Prompt管理系统开发计划.md)
|
||||
|
||||
### 已确认需求
|
||||
> <EFBFBD>㴓 **銝衤<E98A9D><E8A1A4>嗆挾<E59786>滨<EFBFBD>** - 餈鞱𨯫蝞∠<E89D9E>蝡舀瓲敹<E793B2><E695B9><EFBFBD>?
|
||||
> <EFBFBD><EFBFBD> **霂衣<E99C82>霈∪<E99C88>嚗?* [02-Prompt蝞∠<E89D9E>蝟餌<E89D9F>撘<EFBFBD><E69298>𤏸恣<F0A48FB8>?md](./02-Prompt蝞∠<E89D9E>蝟餌<E89D9F>撘<EFBFBD><E69298>𤏸恣<F0A48FB8>?md)
|
||||
|
||||
### 撌脩&霈日<E99C88>瘙?
|
||||
| <20><>瘙<EFBFBD>★ | 蝖株恕蝏𤘪<E89D8F> |
|
||||
|--------|---------|
|
||||
| 优先接入模块 | ✅ RVW 模块先行 |
|
||||
| 权限细分 | ✅ PROMPT_ENGINEER只能编辑,SUPER_ADMIN才能发布 |
|
||||
| 数据迁移 | ✅ 自动迁移现有文件Prompt |
|
||||
| 调试范围 | ✅ 可指定模块 |
|
||||
| 隡睃<EFBFBD><EFBFBD>亙<EFBFBD>璅∪<EFBFBD> | <EFBFBD>?RVW 璅∪<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
|
||||
| <EFBFBD><EFBFBD><EFBFBD>蝏<EFBFBD><EFBFBD> | <EFBFBD>?PROMPT_ENGINEER<EFBFBD>芾<EFBFBD>蝻𤥁<EFBFBD>嚗玺UPER_ADMIN<EFBFBD>滩<EFBFBD><EFBFBD>穃<EFBFBD> |
|
||||
| <EFBFBD>唳旿餈<EFBFBD>宏 | <20>?<3F>芸𢆡餈<F0A286A1>宏<EFBFBD>唳<EFBFBD><E594B3><EFBFBD>辣Prompt |
|
||||
| 靚<EFBFBD><EFBFBD><EFBFBD><EFBFBD>凒 | <20>?<3F>舀<EFBFBD>摰𡁏芋<F0A1818F>?|
|
||||
|
||||
### Phase 3.5.1: 基础设施(Day 1-2)✅ 已完成
|
||||
|
||||
- [x] 创建 `capability_schema` Schema ✅ 2026-01-11
|
||||
- [x] 更新 `schema.prisma` 添加Prompt模型 ✅ 2026-01-11
|
||||
- [x] 执行 `prisma db push` ✅ 2026-01-11
|
||||
- [x] 添加 prompt:* 权限 ✅ 2026-01-11
|
||||
### Phase 3.5.1: <EFBFBD>箇<EFBFBD>霈暹鴌嚗㇄ay 1-2嚗争<E59A97> 撌脣<E6928C><E884A3>?
|
||||
- [x] <20>𥕦遣 `capability_schema` Schema <20>?2026-01-11
|
||||
- [x] <EFBFBD>湔鰵 `schema.prisma` 瘛餃<E7989B>Prompt璅∪<E79285> <20>?2026-01-11
|
||||
- [x] <EFBFBD>扯<EFBFBD> `prisma db push` <20>?2026-01-11
|
||||
- [x] 瘛餃<EFBFBD> prompt:* <20><><EFBFBD> <20>?2026-01-11
|
||||
- `prompt:view` - <20>亦<EFBFBD>Prompt
|
||||
- `prompt:edit` - 蝻𤥁<E89DBB>Prompt
|
||||
- `prompt:debug` - 靚<><E99D9A>Prompt
|
||||
- `prompt:publish` - <20>穃<EFBFBD>Prompt
|
||||
- [x] <20>湔鰵閫坿𠧧<E59DBF><F0A0A7A7><EFBFBD>嚗𠄎UPER_ADMIN<49>券<EFBFBD>嚗釶ROMPT_ENGINEER<45>麖ublish嚗争<E59A97> 2026-01-11
|
||||
- [x] 编写迁移脚本 ✅ 2026-01-11
|
||||
- [x] 迁移 RVW 模块 Prompt(2个)✅ 2026-01-11
|
||||
- `RVW_EDITORIAL` - 稿约规范性评估
|
||||
- `RVW_METHODOLOGY` - 方法学质量评估
|
||||
- ~~`RVW_TOPIC_*`~~ - 已移除(选题评估不属于RVW模块)
|
||||
|
||||
### Phase 3.5.2: PromptService 核心(Day 3)✅ 已完成
|
||||
|
||||
- [x] 实现 `prompt.service.ts` ✅ 2026-01-11
|
||||
- [x] `get(code, variables, userId)` - 灰度核心 ✅
|
||||
- [x] `setDebugMode(userId, modules, enabled)` - 模块级调试 ✅
|
||||
- [x] `render(template, variables)` - 变量渲染 ✅
|
||||
- [x] `extractVariables(content)` - 变量提取 ✅
|
||||
- [x] `validateVariables()` - 变量校验 ✅
|
||||
- [x] `getFallback(code)` - 兜底Prompt ✅
|
||||
- [ ] 实现 LISTEN/NOTIFY 热更新 ⏸️ 暂缓
|
||||
- [x] 蝻硋<EFBFBD>餈<EFBFBD>宏<EFBFBD>𡁏𧋦 <20>?2026-01-11
|
||||
- [x] 餈<EFBFBD>宏 RVW 璅∪<EFBFBD> Prompt嚗?銝迎<E98A9D><E8BF8E>?2026-01-11
|
||||
- `RVW_EDITORIAL` - 蝔輻漲閫<EFBFBD><EFBFBD><EFBFBD>扯<EFBFBD>隡? - `RVW_METHODOLOGY` - <20>寞<EFBFBD>摮西捶<E8A5BF>讛<EFBFBD>隡? - ~~`RVW_TOPIC_*`~~ - 撌脩宏<E884A9>歹<EFBFBD><E6ADB9>厰<EFBFBD>霂<EFBFBD>摯銝滚<E98A9D>鈭竃VW璅∪<E79285>嚗?
|
||||
### Phase 3.5.2: PromptService <20>詨<EFBFBD>嚗㇄ay 3嚗争<E59A97> 撌脣<E6928C><E884A3>?
|
||||
- [x] 摰䂿緵 `prompt.service.ts` <20>?2026-01-11
|
||||
- [x] `get(code, variables, userId)` - <20>啣漲<E595A3>詨<EFBFBD> <20>? - [x] `setDebugMode(userId, modules, enabled)` - 璅∪<E79285>蝥扯<E89DA5>霂?<3F>? - [x] `render(template, variables)` - <20>㗛<EFBFBD>皜脫<E79A9C> <20>? - [x] `extractVariables(content)` - <20>㗛<EFBFBD><E3979B>𣂼<EFBFBD> <20>? - [x] `validateVariables()` - <20>㗛<EFBFBD><E3979B>⊿<EFBFBD> <20>? - [x] `getFallback(code)` - <20>𨅯<EFBFBD>Prompt <20>?- [ ] 摰䂿緵 LISTEN/NOTIFY <20>剜凒<E5899C>?<3F>賂<EFBFBD> <20><><EFBFBD>
|
||||
- [x] 蝻硋<E89DBB><E7A18B>𨅯<EFBFBD>Prompt嚗áardcoded嚗争<E59A97> 2026-01-11
|
||||
|
||||
### Phase 3.5.3: 管理API(Day 4)✅ 已完成
|
||||
|
||||
- [x] `GET /api/admin/prompts` - 列表(支持模块过滤)✅ 2026-01-11
|
||||
- [x] `GET /api/admin/prompts/:code` - 详情+版本历史 ✅ 2026-01-11
|
||||
- [x] `POST /api/admin/prompts/:code/draft` - 保存草稿 ✅ 2026-01-11
|
||||
### Phase 3.5.3: 蝞∠<EFBFBD>API嚗㇄ay 4嚗争<EFBFBD> 撌脣<E6928C><E884A3>?
|
||||
- [x] `GET /api/admin/prompts` - <20>𡑒”嚗<E2809D>𣈲<EFBFBD><F0A388B2>芋<EFBFBD>𡑒<EFBFBD>皛歹<E79A9B><E6ADB9>?2026-01-11
|
||||
- [x] `GET /api/admin/prompts/:code` - 霂行<E99C82>+<2B><>𧋦<EFBFBD><F0A78BA6>蟮 <20>?2026-01-11
|
||||
- [x] `POST /api/admin/prompts/:code/draft` - 靽嘥<E99DBD><E598A5>厩阮 <20>?2026-01-11
|
||||
- [x] `POST /api/admin/prompts/:code/publish` - <20>穃<EFBFBD>嚗<EFBFBD><E59A97>prompt:publish嚗争<E59A97> 2026-01-11
|
||||
- [x] `POST /api/admin/prompts/:code/rollback` - 回滚 ✅ 2026-01-11
|
||||
- [x] `POST /api/admin/prompts/:code/rollback` - <EFBFBD>墧<EFBFBD> <20>?2026-01-11
|
||||
- [x] `POST /api/admin/prompts/debug` - 靚<><E99D9A>撘<EFBFBD><E69298>喉<EFBFBD><E59689>舀<EFBFBD>璅∪<E79285><E288AA>㗇𥋘嚗争<E59A97> 2026-01-11
|
||||
- [x] `POST /api/admin/prompts/test-render` - 测试渲染 ✅ 2026-01-11
|
||||
- [ ] 权限中间件检查 ⏸️ 暂缓(已注释)
|
||||
|
||||
### Phase 3.5.4: 前端管理界面(Day 5-6)✅ 已完成
|
||||
|
||||
- [x] 搭建管理端基础架构 ✅ 2026-01-11
|
||||
- [x] `AdminLayout.tsx` - 运营管理端布局(浅色主题)✅
|
||||
- [x] `OrgLayout.tsx` - 机构管理端布局(浅色主题)✅
|
||||
- [x] `AdminDashboard.tsx` - 运营概览页 ✅
|
||||
- [x] `OrgDashboard.tsx` - 机构概览页 ✅
|
||||
- [x] 路由配置 `/admin/*` 和 `/org/*` ✅
|
||||
- [x] 头像下拉菜单切换入口 ✅
|
||||
- [x] `PromptListPage.tsx` - 列表页 ✅ 2026-01-11
|
||||
- [x] 模块筛选 ✅
|
||||
- [x] 搜索功能 ✅
|
||||
- [x] 调试开关(顶部全局)✅
|
||||
- [x] `POST /api/admin/prompts/test-render` - 瘚贝<EFBFBD>皜脫<EFBFBD> <20>?2026-01-11
|
||||
- [ ] <EFBFBD><EFBFBD><EFBFBD>銝剝𡢿隞嗆<EFBFBD><EFBFBD>?<3F>賂<EFBFBD> <20><><EFBFBD>嚗<EFBFBD>歇瘜券<E7989C>嚗?
|
||||
### Phase 3.5.4: <20>滨垢蝞∠<E89D9E><E288A0>屸𢒰嚗㇄ay 5-6嚗争<E59A97> 撌脣<E6928C><E884A3>?
|
||||
- [x] <20>剖遣蝞∠<E89D9E>蝡臬抅蝖<E68A85><E89D96>嗆<EFBFBD> <20>?2026-01-11
|
||||
- [x] `AdminLayout.tsx` - 餈鞱𨯫蝞∠<E89D9E>蝡臬<E89DA1>撅<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>脖蜓憸矋<E686B8><E79F8B>? - [x] `OrgLayout.tsx` - <20>箸<EFBFBD>蝞∠<E89D9E>蝡臬<E89DA1>撅<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>脖蜓憸矋<E686B8><E79F8B>? - [x] `AdminDashboard.tsx` - 餈鞱𨯫璁<F0A8AFAB><E79281>憿?<3F>? - [x] `OrgDashboard.tsx` - <20>箸<EFBFBD>璁<EFBFBD><E79281>憿?<3F>? - [x] 頝舐眏<E88890>滨蔭 `/admin/*` <20>?`/org/*` <20>? - [x] 憭游<E686AD>銝𧢲<E98A9D><F0A7A2B2>𨅯<EFBFBD><F0A885AF><EFBFBD>揢<EFBFBD>亙藁 <20>?- [x] `PromptListPage.tsx` - <20>𡑒”憿?<3F>?2026-01-11
|
||||
- [x] 璅∪<EFBFBD>蝑偦<EFBFBD>?<3F>? - [x] <20>𦦵揣<F0A6A6B5>蠘<EFBFBD> <20>? - [x] 靚<><E99D9A>撘<EFBFBD><E69298>喉<EFBFBD>憿園<E686BF><E59C92>典<EFBFBD>嚗争<E59A97>
|
||||
- [x] <20>嗆<EFBFBD><E59786>遬蝷綽<E89DB7>ACTIVE/DRAFT/ARCHIVED嚗争<E59A97>
|
||||
- [x] `PromptEditor.tsx` - CodeMirror 6 编辑器 ✅ 2026-01-11
|
||||
- [x] `PromptEditor.tsx` - CodeMirror 6 蝻𤥁<EFBFBD><EFBFBD>?<3F>?2026-01-11
|
||||
- [x] 蝞<><E89D9E>㚚<EFBFBD>蝵殷<E89DB5>銵<EFBFBD>噡+<2B>Z<EFBFBD>+<2B>㗛<EFBFBD>擃䀝漁+<2B>𦦵揣+<2B>日<EFBFBD>嚗争<E59A97>
|
||||
- [x] 中文友好字体 15px ✅
|
||||
- [x] 变量高亮(淡蓝背景)✅
|
||||
- [x] 字符计数和变量统计 ✅
|
||||
- [x] `PromptEditorPage.tsx` - 编辑器页面 ✅ 2026-01-11
|
||||
- [x] 基本信息展示 ✅
|
||||
- [x] 保存草稿功能 ✅
|
||||
- [x] 发布功能(权限控制)✅
|
||||
- [x] 版本历史时间轴 ✅
|
||||
- [x] 测试渲染面板 ✅
|
||||
- [x] 变量列表展示 ✅
|
||||
|
||||
### Phase 3.5.5: RVW模块集成(Day 7)⏳ 下一步
|
||||
|
||||
- [ ] 改造 `editorialService.ts` 使用 `promptService.get('RVW_EDITORIAL')`
|
||||
- [ ] 改造 `methodologyService.ts` 使用 `promptService.get('RVW_METHODOLOGY')`
|
||||
- [ ] 删除文件读取逻辑(prompts/*.txt)
|
||||
- [ ] 端到端测试
|
||||
- [ ] Prompt工程师:编辑→保存草稿→开启调试→测试
|
||||
- [x] 銝剜<EFBFBD><EFBFBD>见末摮𦯀<EFBFBD> 15px <20>? - [x] <20>㗛<EFBFBD>擃䀝漁嚗<E6BC81>楚<EFBFBD>肽<EFBFBD><E882BD>荔<EFBFBD><E88D94>? - [x] 摮㛖泵霈⊥㺭<E28AA5><E3BAAD><EFBFBD><EFBFBD>讐<EFBFBD>霈?<3F>?- [x] `PromptEditorPage.tsx` - 蝻𤥁<E89DBB><F0A4A581>券△<E588B8>?<3F>?2026-01-11
|
||||
- [x] <EFBFBD>箸𧋦靽⊥<EFBFBD>撅閧內 <20>? - [x] 靽嘥<E99DBD><E598A5>厩阮<E58EA9>蠘<EFBFBD> <20>? - [x] <20>穃<EFBFBD><E7A983>蠘<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>鞉綉<E99E89>塚<EFBFBD><E5A19A>? - [x] <20><>𧋦<EFBFBD><F0A78BA6>蟮<EFBFBD>園𡢿頧?<3F>? - [x] 瘚贝<E7989A>皜脫<E79A9C><E884AB>X踎 <20>? - [x] <20>㗛<EFBFBD><E3979B>𡑒”撅閧內 <20>?
|
||||
### Phase 3.5.5: RVW璅∪<E79285><E288AA><EFBFBD><EFBFBD>嚗㇄ay 7嚗争𢰧 銝衤<E98A9D>甇?
|
||||
- [ ] <EFBFBD>寥<EFBFBD>?`editorialService.ts` 雿輻鍂 `promptService.get('RVW_EDITORIAL')`
|
||||
- [ ] <EFBFBD>寥<EFBFBD>?`methodologyService.ts` 雿輻鍂 `promptService.get('RVW_METHODOLOGY')`
|
||||
- [ ] <20>𣳇膄<F0A3B387><E88684>辣霂餃<E99C82><E9A483>餉<EFBFBD>嚗īrompts/*.txt嚗?- [ ] 蝡臬<E89DA1>蝡舀<E89DA1>霂? - [ ] Prompt撌亦<E6928C>撣<EFBFBD><E692A3>蝻𤥁<E89DBB><F0A4A581>雴<EFBFBD>摮䁅<E691AE>蝔踱<E89D94>撘<EFBFBD><E69298>航<EFBFBD>霂𨰝<E99C82>瘚贝<E7989A>
|
||||
- [ ] SUPER_ADMIN嚗𡁜恣<F0A1819C>詹<EFBFBD><E8A9B9>穃<EFBFBD>
|
||||
- [ ] 撉諹<E69289><E8ABB9>啣漲憸<E6BCB2><E686B8>嚗朞<E59A97>霂閗<E99C82><E99697><EFBFBD>DRAFT嚗峕芦<E5B395>𡁶鍂<F0A181B6>瑞<EFBFBD>ACTIVE
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: 运营管理端MVP(5天)
|
||||
## Phase 4: 餈鞱𨯫蝞∠<EFBFBD>蝡烘VP嚗?憭抬<E686AD>
|
||||
|
||||
**目标:** 实现核心租户管理功能
|
||||
**<EFBFBD>格<EFBFBD>嚗?* 摰䂿緵<E482BF>詨<EFBFBD>蝘<EFBFBD><E89D98>蝞∠<E89D9E><E288A0>蠘<EFBFBD>
|
||||
|
||||
### Day 1-2: 蝘<><E89D98>蝞∠<E89D9E>
|
||||
|
||||
@@ -418,15 +275,11 @@
|
||||
- [ ] `POST /api/admin/tenants` - <20>𥕦遣蝘<E981A3><E89D98>
|
||||
- [ ] `GET /api/admin/tenants/:id` - <20>瑕<EFBFBD>蝘<EFBFBD><E89D98>霂行<E99C82>
|
||||
- [ ] `PUT /api/admin/tenants/:id` - <20>湔鰵蝘<E9B0B5><E89D98>
|
||||
- [ ] `DELETE /api/admin/tenants/:id` - 删除租户(软删除)
|
||||
|
||||
- [ ] `DELETE /api/admin/tenants/:id` - <EFBFBD>𣳇膄蝘<EFBFBD><EFBFBD>嚗<EFBFBD>蔓<EFBFBD>𣳇膄嚗?
|
||||
#### <20>滨垢憿菟𢒰
|
||||
- [ ] `TenantListPage.tsx` - 蝘<><E89D98><EFBFBD>𡑒”
|
||||
- [ ] `TenantFormPage.tsx` - <20>𥕦遣/蝻𤥁<E89DBB>蝘<EFBFBD><E89D98>銵典<E98AB5>
|
||||
- [ ] 基本信息(name, code, type)
|
||||
- [ ] 联系信息(contact, phone, email)
|
||||
- [ ] 状态管理(active/inactive)
|
||||
- [ ] `TenantDetailPage.tsx` - 租户详情
|
||||
- [ ] <EFBFBD>箸𧋦靽⊥<EFBFBD>嚗ěame, code, type嚗? - [ ] <20>𠉛頂靽⊥<E99DBD>嚗Ếontact, phone, email嚗? - [ ] <20>嗆<EFBFBD><E59786>恣<EFBFBD><E681A3><EFBFBD>active/inactive嚗?- [ ] `TenantDetailPage.tsx` - 蝘<><E89D98>霂行<E99C82>
|
||||
|
||||
### Day 3: <20><><EFBFBD><EFBFBD>滨蔭
|
||||
|
||||
@@ -434,15 +287,10 @@
|
||||
- [ ] `POST /api/admin/tenants/:id/branding` - <20>湔鰵<E6B994><E9B0B5><EFBFBD><EFBFBD>滨蔭
|
||||
- [ ] `POST /api/admin/upload/logo` - 銝𠹺<E98A9D>Logo<67>記SS
|
||||
- [ ] `POST /api/admin/upload/background` - 銝𠹺<E98A9D><F0A0B9BA>峕艶<E5B395>曉<EFBFBD>OSS
|
||||
- [ ] `GET /api/public/tenant-config/:code` - 获取租户配置(公开API)
|
||||
|
||||
- [ ] `GET /api/public/tenant-config/:code` - <EFBFBD>瑕<EFBFBD>蝘<EFBFBD><EFBFBD><EFBFBD>滨蔭嚗<EFBFBD><EFBFBD>撘<EFBFBD>API嚗?
|
||||
#### <20>滨垢憿菟𢒰
|
||||
- [ ] `TenantBrandingPage.tsx` - <20><><EFBFBD><EFBFBD>滨蔭
|
||||
- [ ] Logo上传(拖拽或点击)
|
||||
- [ ] 背景图上传
|
||||
- [ ] 主题色选择器(Color Picker)
|
||||
- [ ] 系统名称自定义
|
||||
- [ ] 实时预览
|
||||
- [ ] Logo銝𠹺<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>賣<EFBFBD><EFBFBD>孵稬嚗? - [ ] <20>峕艶<E5B395>曆<EFBFBD>隡? - [ ] 銝駁<E98A9D><E9A781>脤<EFBFBD>㗇𥋘<E39787>剁<EFBFBD>Color Picker嚗? - [ ] 蝟餌<E89D9F><E9A48C>滨妍<E6BBA8>芸<EFBFBD>銋? - [ ] 摰墧𧒄憸<F0A79284><E686B8>
|
||||
|
||||
#### OSS<53><53><EFBFBD>
|
||||
- [ ] <20>滨蔭<E6BBA8>輸<EFBFBD>鈭䭲SS
|
||||
@@ -454,14 +302,11 @@
|
||||
#### <20>𡒊垢API
|
||||
- [ ] `GET /api/admin/feature-flags` - <20>瑕<EFBFBD><E79195><EFBFBD><EFBFBD>丽eature Flag
|
||||
- [ ] `PUT /api/admin/feature-flags/:id` - <20>湔鰵Feature Flag
|
||||
- [ ] `POST /api/admin/feature-flags/:id/toggle` - 切换开关
|
||||
|
||||
- [ ] `POST /api/admin/feature-flags/:id/toggle` - <EFBFBD><EFBFBD>揢撘<EFBFBD><EFBFBD>?
|
||||
#### <20>滨垢憿菟𢒰
|
||||
- [ ] `FeatureFlagListPage.tsx` - Feature Flag<61>𡑒”
|
||||
- [ ] 璅∪<E79285><E288AA>𡑒”嚗㇁SL/DC/IIT蝑㚁<E89D91>
|
||||
- [ ] 开关切换
|
||||
- [ ] 应用到租户配置
|
||||
|
||||
- [ ] 撘<EFBFBD><EFBFBD>喳<EFBFBD><EFBFBD>? - [ ] 摨𠉛鍂<F0A0899B>啁<EFBFBD><E59581>琿<EFBFBD>蝵?
|
||||
### Day 5: <20><><EFBFBD>瘚贝<E7989A>
|
||||
|
||||
#### <20>蠘<EFBFBD>瘚贝<E7989A>
|
||||
@@ -470,98 +315,70 @@
|
||||
- [ ] Feature Flag蝞∠<E89D9E>瘚贝<E7989A>
|
||||
|
||||
#### <20><><EFBFBD>瘚贝<E7989A>
|
||||
- [ ] 超级管理员权限测试
|
||||
- [ ] 非管理员访问测试(应拒绝)
|
||||
|
||||
#### 数据一致性测试
|
||||
- [ ] 租户创建后数据验证
|
||||
- [ ] 品牌配置保存验证
|
||||
- [ ] 頞<EFBFBD>漣蝞∠<EFBFBD><EFBFBD>䀹<EFBFBD><EFBFBD>鞉<EFBFBD>霂?- [ ] <20>䂿恣<E482BF><E681A3><EFBFBD>霈輸䔮瘚贝<E7989A>嚗<EFBFBD><E59A97><EFBFBD>垍<EFBFBD>嚗?
|
||||
#### <20>唳旿銝<E697BF><E98A9D>湔<EFBFBD>扳<EFBFBD>霂?- [ ] 蝘<><E89D98><EFBFBD>𥕦遣<F0A595A6>擧㺭<E693A7>桅<EFBFBD>霂?- [ ] <20><><EFBFBD><EFBFBD>滨蔭靽嘥<E99DBD>撉諹<E69289>
|
||||
|
||||
---
|
||||
|
||||
## Phase 5: 租户专属登录(2天)
|
||||
## Phase 5: 蝘<EFBFBD><EFBFBD>銝枏<EFBFBD><EFBFBD>餃<EFBFBD>嚗?憭抬<E686AD>
|
||||
|
||||
**目标:** 实现租户品牌化登录页
|
||||
|
||||
### Day 1: 租户登录页
|
||||
**<EFBFBD>格<EFBFBD>嚗?* 摰䂿緵蝘<E7B7B5><E89D98><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣇉蒈敶閖△
|
||||
|
||||
### Day 1: 蝘<><E89D98><EFBFBD>餃<EFBFBD>憿?
|
||||
#### TenantLoginPage.tsx
|
||||
- [ ] 创建租户登录页组件
|
||||
- [ ] 解析URL中的`tenantCode`参数
|
||||
- [ ] <EFBFBD>𥕦遣蝘<EFBFBD><EFBFBD><EFBFBD>餃<EFBFBD>憿萇<EFBFBD>隞?- [ ] 閫<><E996AB>URL銝剔<E98A9D>`tenantCode`<EFBFBD><EFBFBD>㺭
|
||||
- [ ] 靚<>鍂`/api/public/tenant-config/:code`<EFBFBD>瑕<EFBFBD><EFBFBD>滨蔭
|
||||
- [ ] <20>冽<EFBFBD><E586BD><EFBFBD>頧盤ogo
|
||||
- [ ] <20>冽<EFBFBD><E586BD>挽蝵株<E89DB5><E6A0AA>臬㦛
|
||||
- [ ] 动态应用主题色(CSS变量)
|
||||
- [ ] 动态设置页面标题(document.title)
|
||||
|
||||
- [ ] <EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>其蜓憸䁅𠧧嚗㇃SS<EFBFBD>㗛<EFBFBD>嚗?- [ ] <20>冽<EFBFBD><E586BD>挽蝵桅△<E6A185>X<EFBFBD>憸矋<E686B8>document.title嚗?
|
||||
#### <20>瑕<EFBFBD>摰𡁜<E691B0>
|
||||
- [ ] 使用CSS变量支持动态主题
|
||||
- [ ] 响应式布局
|
||||
- [ ] 加载态处理
|
||||
- [ ] 错误处理(租户不存在)
|
||||
|
||||
- [ ] 雿輻鍂CSS<EFBFBD>㗛<EFBFBD><EFBFBD>舀<EFBFBD><EFBFBD>冽<EFBFBD><EFBFBD>蜓憸?- [ ] <20>滚<EFBFBD>撘誩<E69298>撅<EFBFBD>
|
||||
- [ ] <EFBFBD>㰘蝸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?- [ ] <20>躰秤憭<E7A7A4><E686AD>嚗<EFBFBD><E59A97><EFBFBD>瑚<EFBFBD>摮睃銁嚗?
|
||||
### Day 2: 頝舐眏<E88890><E79C8F><EFBFBD>
|
||||
|
||||
#### <20>餃<EFBFBD><E9A483>舘歲頧祇<E9A0A7>餉<EFBFBD>
|
||||
- [ ] <20>寞旿`role`<EFBFBD>斗鱏頝唾蓮<EFBFBD>格<EFBFBD>
|
||||
- [ ] `SUPER_ADMIN` → 运营管理端
|
||||
- [ ] `PROMPT_ENGINEER` → 运营管理端(Prompt管理)
|
||||
- [ ] `HOSPITAL_ADMIN` → 机构管理端(医院)
|
||||
- [ ] `PHARMA_ADMIN` → 机构管理端(药企)
|
||||
- [ ] `USER` → 业务模块首页
|
||||
- [ ] `SUPER_ADMIN` <EFBFBD>?餈鞱𨯫蝞∠<E89D9E>蝡? - [ ] `PROMPT_ENGINEER` <20>?餈鞱𨯫蝞∠<E89D9E>蝡荔<E89DA1>Prompt蝞∠<E89D9E>嚗? - [ ] `HOSPITAL_ADMIN` <20>?<3F>箸<EFBFBD>蝞∠<E89D9E>蝡荔<E89DA1><E88D94>駁堺嚗? - [ ] `PHARMA_ADMIN` <20>?<3F>箸<EFBFBD>蝞∠<E89D9E>蝡荔<E89DA1><E88D94>臭<EFBFBD>嚗? - [ ] `USER` <20>?銝𡁜𦛚璅∪<E79285>擐㚚△
|
||||
|
||||
#### 頝舐眏<E88890>滨蔭
|
||||
- [ ] <20>滨蔭`/t/:tenantCode/login`頝舐眏
|
||||
- [ ] <20>滨蔭<E6BBA8>𡁶鍂<F0A181B6>餃<EFBFBD>憿菟<E686BF>摰𡁜<E691B0><F0A1819C>餉<EFBFBD>
|
||||
|
||||
#### 瘚贝<E7989A>
|
||||
- [ ] 测试不同租户的品牌加载
|
||||
- [ ] 测试不同角色的路由跳转
|
||||
- [ ] 测试错误场景(无效tenantCode)
|
||||
|
||||
- [ ] 瘚贝<EFBFBD>銝滚<EFBFBD>蝘<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>頧?- [ ] 瘚贝<E7989A>銝滚<E98A9D>閫坿𠧧<E59DBF><F0A0A7A7>楝<EFBFBD>梯歲頧?- [ ] 瘚贝<E7989A><E8B49D>躰秤<E8BAB0>箸艶嚗<E889B6><E59A97><EFBFBD>ōenantCode嚗?
|
||||
---
|
||||
|
||||
## Phase 6: 机构管理端(待定)
|
||||
## Phase 6: <EFBFBD>箸<EFBFBD>蝞∠<EFBFBD>蝡荔<EFBFBD>敺<EFBFBD><EFBFBD>嚗?
|
||||
**<2A>格<EFBFBD>嚗?* 摰䂿緵<E482BF>駁堺蝡臬<E89DA1><E887AC>臭<EFBFBD>蝡航䌊<E888AA>滚𦛚蝞∠<E89D9E>
|
||||
|
||||
**目标:** 实现医院端和药企端自服务管理
|
||||
|
||||
### 医院管理端
|
||||
- [ ] 用户管理
|
||||
### <20>駁堺蝞∠<E89D9E>蝡?- [ ] <20>冽<EFBFBD>蝞∠<E89D9E>
|
||||
- [ ] 蝘穃恕蝞∠<E89D9E>嚗<EFBFBD><E59A97>蝥抒<E89DA5><E68A92><EFBFBD><EFBFBD>
|
||||
- [ ] 配额分配(科室/个人)
|
||||
- [ ] 审计日志查询
|
||||
- [ ] <EFBFBD>漤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗<EFBFBD><EFBFBD>摰?銝芯犖嚗?- [ ] 摰∟恣<E2889F>亙<EFBFBD><E4BA99>亥砭
|
||||
|
||||
### 药企管理端
|
||||
- [ ] 用户管理
|
||||
### <EFBFBD>臭<EFBFBD>蝞∠<EFBFBD>蝡?- [ ] <20>冽<EFBFBD>蝞∠<E89D9E>
|
||||
- [ ] 憿寧𤌍蝞∠<E89D9E>
|
||||
- [ ] 配额分配(项目/个人)
|
||||
- [ ] 审计日志查询(FDA合规)
|
||||
|
||||
**备注:** Phase 6依赖Phase 0-5完成,详细任务待运营端完成后分解
|
||||
- [ ] <EFBFBD>漤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗<EFBFBD>★<EFBFBD>?銝芯犖嚗?- [ ] 摰∟恣<E2889F>亙<EFBFBD><E4BA99>亥砭嚗㇅DA<44><41><EFBFBD>嚗?
|
||||
**憭<>釣嚗?* Phase 6靘肽<E99D98>Phase 0-5摰峕<E691B0>嚗諹祕蝏<E7A595>遙<EFBFBD>∪<EFBFBD>餈鞱𨯫蝡臬<E89DA1><E887AC>𣂼<EFBFBD><F0A382BC><EFBFBD>圾
|
||||
|
||||
---
|
||||
|
||||
## 🔧 持续性任务
|
||||
|
||||
## <EFBFBD>圲 <20><>賒<EFBFBD>找遙<E689BE>?
|
||||
### <20><>﹝蝏湔擪
|
||||
- [ ] <20>𦠜𧒄<F0A6A09C>湔鰵API<50><49>﹝
|
||||
- [ ] 蝻硋<E89DBB><E7A18B>冽<EFBFBD><E586BD>见<EFBFBD>
|
||||
|
||||
### 隞<><E99A9E>韐券<E99F90>
|
||||
- [ ] 代码审查(每个PR)
|
||||
- [ ] 单元测试覆盖率>60%
|
||||
- [ ] 隞<EFBFBD><EFBFBD>摰⊥䰻嚗<EFBFBD><EFBFBD>銝枉R嚗?- [ ] <20>訫<EFBFBD>瘚贝<E7989A>閬<EFBFBD><E996AC><EFBFBD>?60%
|
||||
- [ ] ESLint璉<74><E79289>仿<EFBFBD>朞<EFBFBD>
|
||||
- [ ] TypeScript蝐餃<E89D90>璉<EFBFBD><E79289>仿<EFBFBD>朞<EFBFBD>
|
||||
|
||||
### 摰匧<E691B0>瘚贝<E7989A>
|
||||
- [ ] JWT Token摰匧<E691B0>瘚贝<E7989A>
|
||||
- [ ] 多租户隔离测试
|
||||
- [ ] SQL注入测试
|
||||
- [ ] 憭𡁶<EFBFBD><EFBFBD>琿<EFBFBD>蝳餅<EFBFBD>霂?- [ ] SQL瘜典<E7989C>瘚贝<E7989A>
|
||||
- [ ] XSS<53>餃稬瘚贝<E7989A>
|
||||
|
||||
### <20>扯<EFBFBD>隡睃<E99AA1>
|
||||
- [ ] 数据库查询优化
|
||||
- [ ] 缓存策略优化
|
||||
- [ ] <EFBFBD>唳旿摨𤘪䰻霂V<EFBFBD><EFBFBD>?- [ ] 蝻枏<E89DBB>蝑𣇉裦隡睃<E99AA1>
|
||||
- [ ] <20>滨垢<E6BBA8>枏<EFBFBD>隡睃<E99AA1>
|
||||
|
||||
---
|
||||
@@ -570,7 +387,7 @@
|
||||
|
||||
### 憒<><E68692><EFBFBD>湔鰵TODO
|
||||
|
||||
1. **完成任务时**
|
||||
1. **摰峕<EFBFBD>隞餃𦛚<EFBFBD>?*
|
||||
```markdown
|
||||
- [x] 隞餃𦛚<E9A483>讛膩
|
||||
```
|
||||
@@ -582,38 +399,29 @@
|
||||
|
||||
3. **瘛餃<E7989B>憭<EFBFBD>釣**
|
||||
```markdown
|
||||
- [x] 任务描述 ✅ 2026-01-12完成 by张三
|
||||
- [x] 隞餃𦛚<EFBFBD>讛膩 <20>?2026-01-12摰峕<EFBFBD> by撘牐<E69298>
|
||||
```
|
||||
|
||||
### 优先级标记
|
||||
|
||||
### 隡睃<EFBFBD>蝥扳<EFBFBD>霈?
|
||||
- <20>𣞁 P0 - 敹<>◆摰峕<E691B0>
|
||||
- <20>椬 P1 - <20>滩<EFBFBD>
|
||||
- 🟢 P2 - 可选
|
||||
|
||||
### 状态标记
|
||||
|
||||
- ⏳ 待开始
|
||||
- 🚧 进行中
|
||||
- ✅ 已完成
|
||||
- ❌ 已取消
|
||||
- ⚠️ 阻塞
|
||||
- <EFBFBD>叚 P2 - <EFBFBD>舫<EFBFBD>?
|
||||
### <20>嗆<EFBFBD><E59786><EFBFBD>霈?
|
||||
- <20>?敺<><E695BA>憪?- <20>银 餈𥡝<E9A488>銝?- <20>?撌脣<E6928C><E884A3>?- <20>?撌脣<E6928C>瘨?- <20>𩤃<EFBFBD> <20>餃<EFBFBD>
|
||||
|
||||
---
|
||||
|
||||
## 📊 快速统计
|
||||
|
||||
## <EFBFBD><EFBFBD> 敹恍<E695B9>毺<EFBFBD>霈?
|
||||
```bash
|
||||
# 统计完成任务数
|
||||
grep -c "- \[x\]" 01-TODO清单(可追踪).md
|
||||
# 蝏蠘恣摰峕<EFBFBD>隞餃𦛚<EFBFBD>?grep -c "- \[x\]" 01-TODO皜<4F><E79A9C>嚗<EFBFBD>虾餈質葵嚗?md
|
||||
|
||||
# 蝏蠘恣<E8A098>颱遙<E9A2B1>⊥㺭
|
||||
grep -c "- \[ \]" 01-TODO清单(可追踪).md
|
||||
grep -c "- \[ \]" 01-TODO皜<EFBFBD><EFBFBD>嚗<EFBFBD>虾餈質葵嚗?md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD>2026-01-11 Phase 3.5.4摰峕<EFBFBD>*
|
||||
|
||||
**🚀 下一步:Phase 3.5.5 RVW模块集成 - 业务模块使用 PromptService!**
|
||||
**<EFBFBD><EFBFBD> 銝衤<E98A9D>甇伐<E79487>Phase 3.5.5 RVW璅∪<EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 銝𡁜𦛚璅∪<E79285>雿輻鍂 PromptService嚗?*
|
||||
|
||||
|
||||
Reference in New Issue
Block a user