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:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,4 +1,4 @@
# 数据库开发规范
# <EFBFBD>唳旿摨枏<EFBFBD><EFBFBD>𤏸<EFBFBD><EFBFBD>?
> <EFBFBD><EFBFBD>𧋦: v1.0
> <EFBFBD>湔鰵<EFBFBD><EFBFBD>: 2026-01-11
@@ -14,27 +14,27 @@
<EFBFBD>𩤃<EFBFBD><><E69ABA>瘜訫<E7989C>嚗帋遙雿閙㺭<E99699><EFBFBD><E6A180><EFBFBD><E6BBA2><EFBFBD><EFBFBD><EFBFBD><E29786><EFBFBD>隞踝<E99A9E>
```
### 1.2 禁止使用的危险命令
### 1.2 <EFBFBD>迫雿輻鍂<EFBFBD><EFBFBD><EFBFBD>拙𦶢隞?
| <20>賭誘 | <20>梢埯蝑厩漣 | 霂湔<E99C82> |
|------|----------|------|
| `prisma db push --force-reset` | 🔴 **极高** | 会删除所有数据和非Prisma管理的对象 |
| `prisma migrate reset` | 🔴 **极高** | 重置整个数据库 |
| `DROP DATABASE` | 🔴 **极高** | 删除整个数据库 |
| `TRUNCATE TABLE` | 🟠 高 | 清空表数据 |
| `prisma db push --force-reset` | <EFBFBD>𣞁 **<EFBFBD><EFBFBD><EFBFBD>** | 隡𡁜<EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇㺭<EFBFBD><EFBFBD><EFBFBD>鱲risma蝞∠<EFBFBD><EFBFBD><EFBFBD>笆鞊?|
| `prisma migrate reset` | <EFBFBD>𣞁 **<EFBFBD><EFBFBD><EFBFBD>** | <EFBFBD>滨蔭<EFBFBD>港葵<EFBFBD>唳旿摨?|
| `DROP DATABASE` | <EFBFBD>𣞁 **<EFBFBD><EFBFBD><EFBFBD>** | <EFBFBD>𣳇膄<EFBFBD>港葵<EFBFBD>唳旿摨?|
| `TRUNCATE TABLE` | <EFBFBD><EFBFBD> 擃?| 皜<>征銵冽㺭<E586BD>?|
### 1.3 推荐的安全命令
### 1.3 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>典𦶢隞?
| 命令 | 用途 | 安全性 |
| <EFBFBD>賭誘 | <20><EFBFBD>?| 摰匧<E691B0><E58CA7>?|
|------|------|--------|
| `prisma migrate dev` | 开发环境迁移 | ✅ 安全 |
| `prisma migrate deploy` | 生产环境迁移 | ✅ 安全 |
| `prisma db push` (--force-reset) | 同步schema到数据库 | ⚠️ 谨慎使用 |
| `prisma generate` | 生成客户端 | ✅ 安全 |
| `prisma migrate dev` | <EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD><EFBFBD>蝘?| <20>?摰匧<E691B0> |
| `prisma migrate deploy` | <EFBFBD>煺漣<EFBFBD><EFBFBD><EFBFBD>宏 | <20>?摰匧<E691B0> |
| `prisma db push` (<EFBFBD>?--force-reset) | <EFBFBD>峕郊schema<EFBFBD>唳㺭<EFBFBD><EFBFBD> | <20>𩤃<EFBFBD> 靚冽<E99D9A>雿輻鍂 |
| `prisma generate` | <EFBFBD><EFBFBD><EFBFBD><EFBFBD>蝡?| <20>?摰匧<E691B0> |
---
## 2. 数据库备份规范
## 2. <EFBFBD>唳旿摨枏<EFBFBD>隞質<EFBFBD><EFBFBD>?
### 2.1 憭<><EFBFBD>賭誘
@@ -51,11 +51,11 @@ docker exec ai-clinical-postgres pg_dump -U postgres -d ai_clinical_research > "
| <20>嗆㦤 | <20>臬炏敹<E7828F>◆ |
|------|----------|
| 执行任何 `prisma migrate` 前 | ✅ 必须 |
| 执行 `prisma db push` 前 | ✅ 必须 |
| 部署到生产环境前 | ✅ 必须 |
| 每日自动备份 | ✅ 推荐 |
| 重大功能发布前 | ✅ 必须 |
| <EFBFBD><EFBFBD>隞颱<EFBFBD> `prisma migrate` <EFBFBD>?| <20>?敹<> |
| <EFBFBD><EFBFBD> `prisma db push` <EFBFBD>?| <20>?敹<> |
| <EFBFBD>函蔡<EFBFBD><EFBFBD>鈭抒㴓憓<EFBFBD><EFBFBD> | <20>?敹<> |
| 瘥𤩺𠯫<EFBFBD>芸𢆡憭<EFBFBD>遢 | <20>?<3F><EFBFBD> |
| <EFBFBD>滚之<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?| <20>?敹<> |
### 2.3 憭<><EFBFBD><E981A2>辣蝞∠<E89D9E>
@@ -87,7 +87,7 @@ graph TD
### 3.2 <20><EFBFBD>甇仿炊
```bash
# 1. 备份数据库
# 1. <EFBFBD><EFBFBD>唳旿摨?
docker exec ai-clinical-postgres pg_dump -U postgres -d ai_clinical_research > backup_before_migration.sql
# 2. 靽格㺿 schema.prisma
@@ -100,36 +100,36 @@ cat prisma/migrations/xxx_describe_your_change/migration.sql
# 5. 瘚贝<E7989A>
# 6. 如果失败,恢复备份
# 6. <EFBFBD><EFBFBD>憭梯揖嚗峕<EFBFBD>憭滚<EFBFBD>隞?
cat backup_before_migration.sql | docker exec -i ai-clinical-postgres psql -U postgres -d ai_clinical_research
```
---
## 4. Prisma 与数据库不一致问题
## 4. Prisma 銝擧㺭<EFBFBD><EFBFBD>銝滢<EFBFBD><EFBFBD>湧䔮憸?
### 4.1 Prisma 銝滨恣<E6BBA8><E681A3><EFBFBD>撖寡情
以下数据库对象不在 `schema.prisma` 中定义,需要单独管理:
隞乩<EFBFBD><EFBFBD>唳旿摨枏笆鞊∩<EFBFBD><EFBFBD>?`schema.prisma` 銝剖<EFBFBD>銋㚁<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>祉恣<EFBFBD><EFBFBD><EFBFBD>
| 撖寡情 | 蝐餃<E89D90> | <20><EFBFBD> | <20><EFBFBD><EFBCB7>𡁏𧋦 |
|------|------|------|----------|
| `platform_schema.job_common` | | pg-boss 运行时创建 | `restore_job_common.sql` |
| `platform_schema.create_queue()` | 函数 | pg-boss 初始化 | `restore_pgboss_functions.sql` |
| `platform_schema.delete_queue()` | 函数 | pg-boss 初始化 | `restore_pgboss_functions.sql` |
| `platform_schema.job_common` | 銵?| pg-boss 餈鞱<EFBFBD><EFBFBD><EFBFBD>撱?| `restore_job_common.sql` |
| `platform_schema.create_queue()` | <EFBFBD>賣㺭 | pg-boss <EFBFBD><EFBFBD><EFBFBD>?| `restore_pgboss_functions.sql` |
| `platform_schema.delete_queue()` | <EFBFBD>賣㺭 | pg-boss <EFBFBD><EFBFBD><EFBFBD>?| `restore_pgboss_functions.sql` |
### 4.2 恢复非 Prisma 管理的对象
### 4.2 <EFBFBD><EFBFBD><EFBFBD>?Prisma 蝞∠<EFBFBD><EFBFBD><EFBFBD>笆鞊?
```bash
# 如果误删了 pg-boss 相关对象,执行:
# <EFBFBD><EFBFBD>霂臬<EFBFBD>鈭?pg-boss <20><EFBFBD>撖寡情嚗峕<E59A97>銵䕘<E98AB5>
npx prisma db execute --file restore_job_common.sql --schema prisma/schema.prisma
npx prisma db execute --file restore_pgboss_functions.sql --schema prisma/schema.prisma
```
### 4.3 检查数据库与 Prisma 一致性
### 4.3 <EFBFBD><EFBFBD>交㺭<EFBFBD><EFBFBD>銝?Prisma <EFBFBD><EFBFBD><EFBFBD>?
```bash
# 查看数据库中的函数
# <EFBFBD><EFBFBD><EFBFBD>唳旿摨㮖葉<EFBFBD><EFBFBD><EFBFBD>?
SELECT routine_name FROM information_schema.routines WHERE routine_schema = 'platform_schema';
# <20><EFBFBD><E4BAA6>唳旿摨㮖葉<E3AE96><E89189>
@@ -140,29 +140,29 @@ SELECT table_name FROM information_schema.tables WHERE table_schema = 'platform_
---
## 5. Schema 架构规范
## 5. 憭?Schema <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
### 5.1 Schema <20><EFBFBD><EFBFBD><E996AB>
| Schema | 用途 | 示例表 |
| Schema | <EFBFBD><EFBFBD>?| 蝷箔<E89DB7>銵?|
|--------|------|--------|
| `platform_schema` | 撟喳蝱<E596B3><EFBFBD>霈暹鴌 | users, tenants, app_cache |
| `admin_schema` | 餈鞱𨯫蝞∠<E89D9E> | admin_operation_logs |
| `aia_schema` | AI<41><EFBFBD><E7AE84><EFBFBD> | conversations, messages |
| `asl_schema` | 文献筛选 | screening_projects, literatures |
| `asl_schema` | <EFBFBD><EFBFBD>讃蝑偦<EFBFBD>?| screening_projects, literatures |
| `dc_schema` | <20>唳旿皜<E697BF><E79A9C> | dc_templates, dc_extraction_tasks |
| `pkb_schema` | 个人知识库 | knowledge_bases, documents |
| `pkb_schema` | 銝芯犖<EFBFBD><EFBFBD>摨?| knowledge_bases, documents |
| `iit_schema` | IIT憿寧𤌍 | projects, audit_logs |
| `rvw_schema` | 霈箸<E99C88><EFBFBD>恣 | review_tasks |
| `capability_schema` | <20>𡁶鍂<F0A181B6><EFBFBD> | prompt_templates |
| `public` | 旧数据/兼容 | users (旧), admin_logs |
| `public` | <EFBFBD>扳㺭<EFBFBD>?<3F>澆捆 | users (<EFBFBD>?, admin_logs |
### 5.2 表命名规范
### 5.2 銵典𦶢<EFBFBD><EFBFBD><EFBFBD>?
```
{schema_name}.{module_prefix}_{entity_name}
示例:
蝷箔<EFBFBD>嚗?
- dc_schema.dc_templates
- dc_schema.dc_extraction_tasks
- asl_schema.screening_projects
@@ -170,12 +170,12 @@ SELECT table_name FROM information_schema.tables WHERE table_schema = 'platform_
---
## 6. 外键与数据完整性
## 6. 憭㚚睸銝擧㺭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
### 6.1 Schema 外键
### 6.1 頝?Schema 憭㚚睸
```prisma
// ✅ 正确:明确指定关系
// <EFBFBD>?甇<>嚗𡁏<E59A97>蝖格<E89D96>摰𡁜<E691B0>蝟?
model ReviewTask {
userId String @map("user_id")
user PublicUser @relation(fields: [userId], references: [id])
@@ -191,9 +191,9 @@ model PublicUser {
}
```
### 6.2 外键指向检查
### 6.2 憭㚚睸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
在使用 `prisma db push` 后,检查外键是否正确:
<EFBFBD>其蝙<EFBFBD>?`prisma db push` <EFBFBD>𠬍<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>格糓<EFBFBD>行迤蝖殷<EFBFBD>
```sql
SELECT
@@ -213,7 +213,7 @@ WHERE tc.constraint_type = 'FOREIGN KEY';
```bash
# 1. <20>𨀣迫摨𠉛鍂
# 2. 从备份恢复
# 2. 隞𤾸<EFBFBD>隞賣<EFBFBD>憭?
cat backup_xxx.sql | docker exec -i ai-clinical-postgres psql -U postgres -d ai_clinical_research
# 3. 撉諹<E69289><E8ABB9>唳旿
@@ -222,13 +222,13 @@ npx tsx verify_system.ts
# 4. <20>滚鍳摨𠉛鍂
```
### 7.2 Schema 不一致恢复
### 7.2 Schema 銝滢<EFBFBD><EFBFBD><EFBFBD>憭?
```bash
# 1. 检查差异
# 1. <EFBFBD><EFBFBD>亙榆撘?
npx tsx compare_schema_db.ts
# 2. 恢复缺失的对象
# 2. <EFBFBD><EFBFBD>蝻箏仃<EFBFBD><EFBFBD>笆鞊?
npx prisma db execute --file restore_xxx.sql --schema prisma/schema.prisma
# 3. 撉諹<E69289>
@@ -236,37 +236,37 @@ npx prisma db execute --file restore_xxx.sql --schema prisma/schema.prisma
---
## 8. 开发环境 vs 生产环境
## 8. <EFBFBD><EFBFBD>𤑳㴓憓?vs <20>煺漣<E785BA><EFBFBD>
### 8.1 开发环境
### 8.1 <EFBFBD><EFBFBD>𤑳㴓憓?
- <20>臭誑雿輻鍂 `prisma migrate dev`
- <20>臭誑雿輻鍂 `prisma db push`<EFBFBD><EFBFBD>𠬍<EFBFBD>
- 定期同步生产数据库结构
- 摰𡁏<EFBFBD><EFBFBD>峕郊<EFBFBD>煺漣<EFBFBD>唳旿摨梶<EFBFBD><EFBFBD>?
### 8.2 <20>煺漣<E785BA><EFBFBD>
- **<2A><EFBFBD>**雿輻鍂 `prisma migrate deploy`
- **禁止**使用任何 `--force` `--reset` 参数
- **<EFBFBD>迫**雿輻鍂隞颱<E99A9E> `--force` <EFBFBD>?`--reset` <EFBFBD><EFBFBD>
- <20>䀹凒<E480B9><EFBFBD>憿餅<E686BF><E9A485><EFBFBD><E99C88>
- 必须有最新备份
- <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隞?
---
## 9. 检查清单
## 9. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
### 9.1 数据库变更前检查
### 9.1 <EFBFBD>唳旿摨枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
- [ ] 撌脣<E6928C>隞賣㺭<E8B3A3><EFBFBD>
- [ ] 已审查 schema.prisma 变更
- [ ] 已检查是否影响非 Prisma 管理的对象
- [ ] 已准备回滚方案
- [ ] 已在开发环境测试
- [ ] 撌脣恣<EFBFBD>?schema.prisma <EFBFBD>䀹凒
- [ ] 撌脫<EFBFBD><EFBFBD>交糓<EFBFBD>血蔣<EFBFBD><EFBFBD> Prisma 蝞∠<E89D9E><E288A0><EFBFBD>笆鞊?
- [ ] 撌脣<EFBFBD><EFBFBD><EFBFBD>皛𡁏䲮獢?
- [ ] 撌脣銁撘<EFBFBD><EFBFBD>𤑳㴓憓<EFBFBD><EFBFBD>霂?
### 9.2 部署后检查
### 9.2 <EFBFBD>函蔡<EFBFBD><EFBFBD><EFBFBD>?
- [ ] 摨𠉛鍂甇<E98D82><EFBFBD>臬𢆡
- [ ] 数据库连接正常
- [ ] <EFBFBD>唳旿摨栞<EFBFBD><EFBFBD>交迤撣?
- [ ] pg-boss <20><EFBFBD><EFBFBD>虜撌乩<E6928C>
- [ ] <20><EFBFBD><E8A9A8><EFBFBD>瘚贝<E7989A><E8B49D><EFBFBD>
@@ -278,14 +278,14 @@ npx prisma db execute --file restore_xxx.sql --schema prisma/schema.prisma
```
backend/
├── verify_system.ts # 系统完整性验证
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> verify_system.ts # 蝟餌<EFBFBD>摰峕㟲<EFBFBD><EFBFBD>霂?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> compare_schema_db.ts # Schema銝擧㺭<E693A7><EFBFBD>撖寞<E69296>
├── check_iit_asl_data.ts # 检查模块数据
├── restore_job_common.sql # 恢复 job_common
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> check_iit_asl_data.ts # <EFBFBD><EFBFBD>交芋<EFBFBD>埈㺭<EFBFBD>?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> restore_job_common.sql # <EFBFBD><EFBFBD> job_common 銵?
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> restore_pgboss_functions.sql # <20><EFBFBD> pg-boss <20>賣㺭
```
### 10.2 快速验证命令
### 10.2 敹恍<EFBFBD><EFBFBD><EFBFBD>𦶢隞?
```bash
# 霈曄蔭<E69B84><EFBFBD><E887AC><EFBFBD>
@@ -294,27 +294,27 @@ $env:DATABASE_URL="postgresql://postgres:postgres123@localhost:5432/ai_clinical_
# 撉諹<E69289>蝟餌<E89D9F>
npx tsx verify_system.ts
# 检查数据
# <EFBFBD><EFBFBD>交㺭<EFBFBD>?
npx tsx check_iit_asl_data.ts
```
---
## 附录:事故案例
## <EFBFBD><EFBFBD><EFBFBD>嚗帋<EFBFBD><EFBFBD><EFBFBD><EFBFBD>靘?
### 案例12026-01-11 数据库重置事故
### <EFBFBD><EFBFBD>1嚗?026-01-11 <EFBFBD>唳旿摨㯄<EFBFBD>蝵桐<EFBFBD><EFBFBD>?
**原因**:使用 `prisma db push --force-reset` 导致非 Prisma 管理的对象丢失
**<EFBFBD><EFBFBD>**嚗帋蝙<E5B88B>?`prisma db push --force-reset` 撖潸稲<EFBFBD>?Prisma 蝞∠<EFBFBD><EFBFBD><EFBFBD>笆鞊∩腺憭?
**影响**
- pg-boss 函数丢失,队列无法注册
- job_common 表丢失
- 用户数据丢失(已通过 seed 恢复)
**敶勗<EFBFBD>**嚗?
- pg-boss <EFBFBD>賣㺭銝仃嚗屸<EFBFBD><EFBFBD><EFBFBD>瘜閙釣<EFBFBD>?
- job_common 銵其腺憭?
- <EFBFBD><EFBFBD><EFBFBD>唳旿銝仃嚗<EFBFBD><EFBFBD><EFBFBD> seed <EFBFBD><EFBFBD>嚗?
**教训**
**<EFBFBD>躰悌**嚗?
1. 瘞貉<E7989E>銝滩<E98A9D>雿輻鍂 `--force-reset`
2. 操作前必须备份
3. 了解 Prisma 的管理边界
2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>憿餃<EFBFBD>隞?
3. <EFBFBD> Prisma <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
霂西<EFBFBD>嚗䫤docs/08-憿寧𤌍蝞∠<E89D9E>/2026-01-11-<2D>唳旿摨㮖<E691A8><E3AE96><EFBFBD><EFBFBD><EFBFBD>.md`
@@ -323,3 +323,4 @@ npx tsx check_iit_asl_data.ts