Files
AIclinicalresearch/docs/00-系统总体设计/05-Schema隔离方案与成本分析.md
HaHafeng 1b53ab9d52 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%)
2026-01-14 19:15:01 +08:00

1068 lines
22 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.
# Schema闅旂<E99785>鏂规<E98F82>涓庢垚鏈<E59E9A>垎鏋?
> **鏂囨。鐗堟湰锛?* v1.0
> **鍒涘缓鏃ユ湡锛?* 2025-11-06
> **鏈€鍚庢洿鏂帮細** 2025-11-06
> **鏂囨。鐘舵€侊細** 鏋舵瀯鍒嗘瀽
> **浣滆€咃細** 鎶€鏈<E282AC>灦鏋勫笀
---
## 馃搵 鏍稿績闂<E7B8BE><E99782>
1. 浠€涔堟槸鐪熸<E990AA>鐨凷chema闅旂<E99785>锛?
2. 浠庨€昏緫闅旂<E99785>鍒扮墿鐞嗛殧绂荤殑鏀归€犳垚鏈<E59E9A>湁澶氶珮锛?
3. 鐜板湪鍋歋chema闅旂<E99785>鐨勬垚鏈<E59E9A>珮鍚楋紵
4. 褰撳墠涓氬姟浣撻噺涓嬶紝闇€瑕佺幇鍦ㄥ仛鍚楋紵
5. 鏈€浣冲疄鏂芥椂鏈烘槸浠€涔堟椂鍊欙紵
---
## 馃幆 涓ょ<E6B693>闅旂<E99785>鏂瑰紡瀵规瘮
### 閫昏緫闅旂<E99785>锛堝綋鍓嶆柟妗堬級
**瀹氫箟锛?*
- 鎵€鏈夎〃閮藉湪鍚屼竴涓猄chema锛坄public`锛変腑
- 閫氳繃**琛ㄥ悕鍓嶇紑**鏉ュ尯鍒嗕笉鍚屾ā鍧?
- 浠g爜灞傞潰鎸夋ā鍧楃粍缁?
**绀轰緥锛?*
```sql
-- 鎵€鏈夎〃閮藉湪public schema
public.users -- 鐢ㄦ埛琛?
public.aia_projects -- AI闂<49>瓟妯″潡鐨勯」鐩<E3808D>
public.aia_conversations -- AI闂<49>瓟妯″潡鐨勫<E990A8>璇濊〃
public.asl_projects -- AI鏂囩尞妯″潡鐨勯」鐩<E3808D>
public.asl_literature_items -- AI鏂囩尞妯″潡鐨勬枃鐚<E69E83>
public.pkb_knowledge_bases -- 鐭ヨ瘑搴撴ā鍧楃殑鐭ヨ瘑搴撹〃
public.dc_projects -- 鏁版嵁娓呮礂妯″潡鐨勯」鐩<E3808D>
public.review_tasks -- 绋夸欢瀹℃煡妯″潡鐨勪换鍔¤〃
```
**Prisma Schema绀轰緥锛?*
```prisma
// 閫昏緫闅旂<E99785>锛氫娇鐢ˊ@map鎸囧畾琛ㄥ悕
model AiaProject {
id String @id @default(uuid())
userId String @map("user_id")
name String
// ...
@@map("aia_projects") // 琛ㄥ悕鍓嶇紑鏍囪瘑妯″潡
}
model AslProject {
id String @id @default(uuid())
userId String @map("user_id")
name String
// ...
@@map("asl_projects") // 琛ㄥ悕鍓嶇紑鏍囪瘑妯″潡
}
```
**鏌ヨ<E98F8C>鏂瑰紡锛?*
```typescript
// 涓氬姟浠g爜鏃犳劅鐭?
const project = await prisma.aiaProject.findUnique({
where: { id: projectId }
});
```
---
### 鐗╃悊闅旂<E99785>锛堢湡姝殑Schema闅旂<E99785>锛?
**瀹氫箟锛?*
- 涓烘瘡涓<E798A1>ā鍧楀垱寤?*鐙<>珛鐨凱ostgreSQL Schema**
- 琛ㄥ垎鏁湪涓嶅悓鐨凷chema涓?
- 鏁版嵁搴撳眰闈㈢湡姝i殧绂?
**绀轰緥锛?*
```sql
-- 鍒涘缓鐙<E7BC93>珛Schema
CREATE SCHEMA platform_schema; -- 骞冲彴灞?
CREATE SCHEMA aia_schema; -- AI闂<49>瓟妯″潡
CREATE SCHEMA asl_schema; -- AI鏂囩尞妯″潡
CREATE SCHEMA pkb_schema; -- 鐭ヨ瘑搴撴ā鍧?
CREATE SCHEMA dc_schema; -- 鏁版嵁娓呮礂妯″潡
CREATE SCHEMA review_schema; -- 绋夸欢瀹℃煡妯″潡
CREATE SCHEMA admin_schema; -- 杩愯惀绠$悊绔?
-- 琛ㄥ垎甯冨湪涓嶅悓Schema
platform_schema.users -- 鐢ㄦ埛琛?
aia_schema.projects -- AI闂<49>瓟鐨勯」鐩<E3808D>
aia_schema.conversations -- AI闂<49>瓟鐨勫<E990A8>璇濊〃
asl_schema.projects -- AI鏂囩尞鐨勯」鐩<E3808D>
asl_schema.literature_items -- AI鏂囩尞鐨勬枃鐚<E69E83>
pkb_schema.knowledge_bases -- 鐭ヨ瘑搴撹〃
dc_schema.projects -- 鏁版嵁娓呮礂鐨勯」鐩<E3808D>
review_schema.tasks -- 绋夸欢瀹℃煡鐨勪换鍔¤〃
```
**Prisma Schema绀轰緥锛?*
```prisma
// 鐗╃悊闅旂<E99785>锛氭寚瀹歴chema
model AiaProject {
id String @id @default(uuid())
userId String @map("user_id")
name String
// ...
@@map("projects") // 琛ㄥ悕涓嶉渶瑕佸墠缂€
@@schema("aia_schema") // 鎸囧畾Schema 猸?
}
model AslProject {
id String @id @default(uuid())
userId String @map("user_id")
name String
// ...
@@map("projects") // 琛ㄥ悕涓嶉渶瑕佸墠缂€
@@schema("asl_schema") // 鎸囧畾Schema 猸?
}
```
**鏌ヨ<E98F8C>鏂瑰紡锛?*
```typescript
// 涓氬姟浠爜鏃犳劅鐭ワ紙Prisma浼氳嚜鍔ㄥ<E98D94>鐞嗭級
const project = await prisma.aiaProject.findUnique({
where: { id: projectId }
});
// 瀹為檯鎵ц<E98EB5>鐨凷QL锛?
// SELECT * FROM aia_schema.projects WHERE id = $1
```
---
## 馃搳 涓ょ<E6B693>鏂规<E98F82>瀵规瘮
| 缁村害 | 閫昏緫闅旂<E99785>锛堝綋鍓嶏級 | 鐗╃悊闅旂<E99785>锛堢洰鏍囷級 |
|------|----------------|----------------|
| **澶嶆潅搴?* | 猸?绠€鍗?| 猸愨瓙猸?涓<>瓑 |
| **瀹炴柦闅惧害** | 猸?浣?| 猸愨瓙猸?涓<>瓑 |
| **缁存姢鎴愭湰** | 猸愨瓙 浣?| 猸愨瓙猸?涓<>瓑 |
| **闅旂<E99785>鎬?* | 猸愨瓙 涓<>瓑锛堜唬鐮佸眰闈<E79CB0>級 | 猸愨瓙猸愨瓙猸?楂橈紙鏁版嵁搴撳眰闈<E79CB0>級 |
| **鏉冮檺鎺у埗** | 猸愨瓙 涓<>瓑 | 猸愨瓙猸愨瓙猸?楂橈紙鏁版嵁搴撶骇鍒<E9AA87>級 |
| **寰<>湇鍔℃媶鍒?* | 猸愨瓙猸?闇€瑕佹敼閫?| 猸愨瓙猸愨瓙猸?鏄撲簬鎷嗗垎 |
| **妯″潡鐙<E6BDA1>珛閮ㄧ讲** | 猸愨瓙 鍥伴毦 | 猸愨瓙猸愨瓙猸?瀹规槗 |
| **璺ㄦā鍧楁煡璇?* | 猸愨瓙猸愨瓙猸?瀹规槗锛堝悓涓€Schema锛?| 猸愨瓙猸?闇€瑕佽法Schema鏌ヨ<E98F8C> |
| **澶囦唤鎭㈠<E98EAD>** | 猸愨瓙猸?鏁翠綋澶囦唤 | 猸愨瓙猸愨瓙猸?鍙<>寜Schema澶囦唤 |
| **褰撳墠閫傜敤鎬?* | 鉁?閫傚悎褰撳墠闃舵<E99783> | 鈿狅笍 鏈<>潵闃舵<E99783> |
---
## 馃挵 鏀归€犳垚鏈<E59E9A>垎鏋?
### 浠庨€昏緫闅旂<E99785>鍒扮墿鐞嗛殧绂婚渶瑕佹敼浠€涔堬紵
#### 1. 鏁版嵁搴撳眰闈㈡敼閫?
**姝ラ<E5A79D>1锛氬垱寤篠chema**
```sql
-- 鍒涘缓鏂癝chema锛堥潪甯哥畝鍗曪級
CREATE SCHEMA platform_schema;
CREATE SCHEMA aia_schema;
CREATE SCHEMA asl_schema;
CREATE SCHEMA pkb_schema;
CREATE SCHEMA dc_schema;
CREATE SCHEMA review_schema;
CREATE SCHEMA admin_schema;
```
**宸ヤ綔閲忥細** 10鍒嗛挓
---
**姝ラ<E5A79D>2锛氬垱寤烘柊琛ㄧ粨鏋?*
```sql
-- 鍦ㄦ柊Schema涓<61>垱寤鸿〃
CREATE TABLE aia_schema.projects (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL,
name VARCHAR(255) NOT NULL,
-- ... 鍏朵粬瀛楁<E7809B>
-- 澶栭敭鍙<E695AD>兘闇€瑕佽法Schema
CONSTRAINT fk_user FOREIGN KEY (user_id)
REFERENCES platform_schema.users(id)
);
-- 绫讳技鐨勶紝涓烘墍鏈夎〃鍒涘缓鏂扮殑琛ㄧ粨鏋?
```
**宸ヤ綔閲忥細**
-<>姩鐢熸垚锛圥risma Migrate锛夛細1-2灏忔椂
- 鎵嬪姩鍒涘缓锛?澶?
---
**姝ラ<E5A79D>3锛氭暟鎹<E69A9F>縼绉?*
```sql
-- 杩佺Щ鏁版嵁锛堜粠public鍒版柊Schema锛?
INSERT INTO aia_schema.projects
SELECT * FROM public.aia_projects;
INSERT INTO aia_schema.conversations
SELECT * FROM public.aia_conversations;
-- ... 涓烘墍鏈夎〃杩佺Щ鏁版嵁
```
**宸ヤ綔閲忥細**
- 鏁版嵁閲忓皬锛?100涓囪<E6B693>锛夛細1-2灏忔椂
- 鏁版嵁閲忓ぇ锛?100涓囪<E6B693>锛夛細鍗婂ぉ鍒?澶?
**椋庨櫓锛?*
- 鈿狅笍 闇€瑕佸仠鏈猴紙鎴栧仛鍦ㄧ嚎杩佺Щ锛?
- 鈿狅笍 闇€瑕侀獙璇佹暟鎹<E69A9F>畬鏁存€?
- 鈿狅笍 澶栭敭绾︽潫鍙<E6BDAB>兘鏈夐棶棰?
---
**姝ラ<E5A79D>4锛氭竻鐞嗘棫琛?*
```sql
-- 鍒犻櫎鏃ц〃锛堢璁ゆ棤璇<E6A3A4>悗锛?
DROP TABLE public.aia_projects;
DROP TABLE public.aia_conversations;
-- ...
```
**宸ヤ綔閲忥細** 1灏忔椂
**鎬昏<E98EAC>鏁版嵁搴撴敼閫犲伐浣滈噺锛?*
-<>姩鍖栵細鍗婂ぉ鍒?澶?
- 鎵嬪姩锛?-3澶?
---
#### 2. 浠g爜灞傞潰鏀归€?
**姝ラ<E5A79D>1锛氫慨鏀筆risma Schema**
**閫昏緫闅旂<E99785>锛堝綋鍓嶏級锛?*
```prisma
model AiaProject {
id String @id @default(uuid())
userId String @map("user_id")
name String
@@map("aia_projects") // 闇€瑕佸墠缂€
}
```
**鐗╃悊闅旂<E99785>锛堜慨鏀瑰悗锛夛細**
```prisma
model AiaProject {
id String @id @default(uuid())
userId String @map("user_id")
name String
@@map("projects") // 涓嶉渶瑕佸墠缂€
@@schema("aia_schema") // 鏂板<E98F82>锛氭寚瀹歋chema 猸?
}
```
**宸ヤ綔閲忥細**
-<>敼鎵€鏈塎odel锛堢害50-100涓狹odel锛?
- 鏃堕棿锛?-4灏忔椂
---
**姝ラ<E5A79D>2锛氬<E9949B>鐞嗗<E9909E><EFBFBD>拰鍏宠仈**
**闂<><E99782>锛氳法Schema鐨勫<E990A8>閿?*
```prisma
// User鍦╬latform_schema
model User {
id String @id @default(uuid())
email String
@@map("users")
@@schema("platform_schema")
}
// Project鍦╝ia_schema
model AiaProject {
id String @id @default(uuid())
userId String @map("user_id")
// 璺⊿chema鍏宠仈 鈿狅笍
user User @relation(fields: [userId], references: [id])
@@map("projects")
@@schema("aia_schema")
}
```
**Prisma澶勭悊锛?*
- 鉁?Prisma浼氳嚜鍔ㄥ<E98D94>鐞嗚法Schema鐨勫叧鑱?
- 鉁?鐢熸垚鐨凷QL浼氬寘鍚<E5AF98><E98D9A><EFBFBD>殑Schema鍓嶇紑
- 鈿狅笍 浣嗛渶瑕佹祴璇曢獙璇?
**宸ヤ綔閲忥細**
- 娴嬭瘯鎵€鏈夎法Schema鍏宠仈锛氬崐澶╁埌1澶?
---
**姝ラ<E5A79D>3锛氫笟鍔唬鐮佹敼閫?*
**濂芥秷鎭<E7A7B7>細涓氬姟浠爜鍑犱箮涓嶉渶瑕佹敼锛?* 鉁?
```typescript
// 涓氬姟浠g爜瀹屽叏涓嶅彉
const project = await prisma.aiaProject.findUnique({
where: { id: projectId },
include: {
user: true // 璺⊿chema鍏宠仈锛孭risma鑷<61>姩澶勭悊
}
});
```
**鍘熷洜锛?*
- 鉁?Prisma ORM鎶借薄浜嗗簳灞係chema
- 鉁?涓氬姟浠爜鍙<E7889C>緷璧朠risma Model锛屼笉鐩存帴鍐橲QL
**渚嬪<E6B89A>鎯呭喌锛?*
- 鈿狅笍 濡傛灉鏈夊師濮婼QL鏌ヨ<E98F8C>锛坄prisma.$queryRaw`锛夛紝闇€瑕佷慨鏀?
- 鈿狅笍 濡傛灉鏈夋暟鎹<E69A9F>簱瑙嗗浘锛圴iew锛夛紝闇€瑕佷慨鏀?
- 鈿狅笍 濡傛灉鏈夋暟鎹<E69A9F>簱鍑芥暟锛團unction锛夛紝闇€瑕佷慨鏀?
**宸ヤ綔閲忥細**
- 涓氬姟浠g爜锛?鏀归€狅紙濡傛灉娌℃湁鍘熷<E98D98>SQL锛?
- 鍘熷<E98D98>SQL锛氶渶瑕侀€愪釜淇<E9879C>敼锛堜及璁?0-20澶勶級
- 鏃堕棿锛氬崐澶╁埌1澶?
---
**姝ラ<E5A79D>4锛氳繍琛孭risma Migrate**
```bash
# 鐢熸垚鏂扮殑杩佺Щ鏂囦欢
npx prisma migrate dev --name schema-isolation
# 鎴栨墜鍔ㄨ縼绉伙紙鐢熶骇鐜<E9AA87><E9909C>锛?
npx prisma migrate deploy
```
**宸ヤ綔閲忥細**
- 寮€鍙戠幆澧冿細10鍒嗛挓
- 鐢熶骇鐜<E9AA87><E9909C>锛氶渶瑕佽<E79195>缁嗚<E7BC81>鍒掞紙鍗婂ぉ鍑嗗<E98D91>锛?
---
#### 3. 娴嬭瘯楠岃瘉
**闇€瑕佹祴璇曠殑鍐呭<E98D90>锛?*
1. 鉁?鎵€鏈堿PI鎺ュ彛鏄<E5BD9B>惁姝
2. 鉁?璺⊿chema鍏宠仈鏄<E4BB88>惁姝父锛堢敤鎴?椤圭洰銆侀」鐩?瀵硅瘽绛夛級
3. 鉁?澶栭敭绾︽潫鏄<E6BDAB>惁姝
4. 鉁?鏁版嵁瀹屾暣鎬ф<E98EAC>鏌?
5. 鉁?鎬ц兘娴嬭瘯锛堣法Schema鏌ヨ<E98F8C>鎬ц兘锛?
6. 鉁?澶囦唤鎭㈠<E98EAD>娴嬭瘯
**宸ヤ綔閲忥細**
- 鍗曞厓娴嬭瘯锛氳嚜鍔ㄥ寲锛?-2灏忔椂
- 闆嗘垚娴嬭瘯锛氬崐澶?
-<>埌绔<E59F8C>祴璇曪細1澶?
- 鎬昏<E98EAC>锛?-2澶?
---
### 鎬绘敼閫犳垚鏈?
**寮€鍙戠幆澧冿細**
| 浠诲姟 | 宸ヤ綔閲?|
|------|-------|
| 鏁版嵁搴揝chema鍒涘缓 | 10鍒嗛挓 |
| Prisma Schema淇<61>敼 | 2-4灏忔椂 |
| 鏁版嵁杩佺Щ鑴氭湰 | 1-2灏忔椂 |
| 鍘熷<E98D98>SQL淇<4C>敼 | 鍗婂ぉ |
| 娴嬭瘯楠岃瘉 | 1-2澶?|
| **鎬昏<E98EAC>** | **2-3澶?* |
**鐢熶骇鐜<E9AA87><E9909C>锛?*
| 浠诲姟 | 宸ヤ綔閲?|
|------|-------|
| 杩佺Щ鏂规<E98F82>璁捐<E79281> | 鍗婂ぉ |
| 鏁版嵁澶囦唤 | 1灏忔椂 |
| 鏁版嵁杩佺Щ | 鍗婂ぉ鍒?澶?|
| 楠岃瘉娴嬭瘯 | 1澶?|
| 搴旀€ュ洖婊氭柟妗?| 鍗婂ぉ |
| **鎬昏<E98EAC>** | **3-4澶?* |
**椋庨櫓璇勪及锛?*
- 鈿狅笍 **椋庨櫓绛夌骇锛氫腑绛?*
- 鈿狅笍 **涓昏<E6B693>椋庨櫓锛氭暟鎹<E69A9F>縼绉诲け璐ャ€佸<E282AC><EFBFBD>害鏉熼棶棰樸€佸仠鏈烘椂闂?*
- 鉁?**缂撹В<D092>柦锛氳<E9949B>缁嗘祴璇曘€佸洖婊氭柟妗堛€佺伆搴﹀彂甯?*
---
## 馃<> 鐜板湪鍋?vs 浠ュ悗鍋?
### 鐜板湪鍋氱殑浼樺娍 鉁?
1. **鏁版嵁閲忓皬锛岃縼绉诲揩**
```
褰撳墠鏁版嵁閲忥紙浼扮畻锛夛細
- 鐢ㄦ埛锛? 100
- 椤圭洰锛? 500
- 瀵硅瘽锛? 5,000
- 鏂囨。锛? 1,000
杩佺Щ鏃堕棿锛? 1灏忔椂
椋庨櫓锛氫綆
```
2. **涓氬姟澶嶆潅搴︿綆锛屾祴璇曠畝鍗?*
```
褰撳墠妯″潡锛?
- 鉁?AIA锛圓I闂<49>瓟锛? 宸插畬鎴?
- 鉁?PKB锛堢煡璇嗗簱锛? 宸插畬鎴?
- 鈴?ASL锛圓I鏂囩尞锛? 鏈<>紑鍙?
- 鈴?DC銆丼SA銆丼T銆丷VW - 鏈<>紑鍙?
闇€瑕佹祴璇曠殑妯″潡灏?
```
3. **涓烘湭鏉ユ墦涓嬪潥瀹炲熀纭€**
```
浼樺娍锛?
- 鉁?鏂版ā鍧楋紙ASL銆丏C绛夛級鐩存帴鐢ㄧ墿鐞嗛殧绂?
- 鉁?閬垮厤鏈<E58EA4>潵澶ц<E6BEB6>妯℃敼閫?
- 鉁?鏀<>寔妯″潡鐙<E6BDA1>珛閮ㄧ讲
- 鉁?鏀<>寔寰<E5AF94>湇鍔℃媶鍒?
```
4. **鍥㈤槦瀛︿範鎴愭湰浣?*
```
褰撳墠鍥㈤槦灏忥細
- 寮€鍙戜汉鍛樺皯锛屾矡閫氭垚鏈<E59E9A>
- 浠g爜鏀瑰姩褰卞搷鑼冨洿灏?
- 鏄撲簬鎺ㄥ箍鏂拌<E98F82>鑼?
```
---
### 鐜板湪鍋氱殑鍔e娍 鉂?
1. **闇€瑕佹姇鍏ユ椂闂?*
```
寮€鍙戞椂闂达細2-3澶╋紙寮€鍙戠幆澧冿級
鐢熶骇鏃堕棿锛?-4澶╋紙鐢熶骇鐜<E9AA87><E9909C>锛?
鎬昏<E98EAC>锛?鍛?
寤惰繜锛欰SL妯″潡寮€鍙戝欢杩?鍛?
```
2. **鏈変竴瀹氶<E780B9>闄?*
```
椋庨櫓锛?
- 鏁版嵁杩佺Щ澶辫触
- 澶栭敭绾︽潫闂<E6BDAB><E99782>
- 闇€瑕佸仠鏈?
缂撹В锛氳<E9949B>缁嗘祴璇曘€佸洖婊氭柟妗?
```
3. **褰撳墠娌℃湁绱ц揩闇€姹?*
```
浜嬪疄锛?
- 娌℃湁寰<E6B981>湇鍔℃媶鍒嗛渶姹?
- 娌℃湁妯″潡鐙<E6BDA1>珛閮ㄧ讲闇€姹?
- 娌℃湁绉佹湁鍖栭儴缃查渶姹?
缁撹<E7BC81>锛氭殏鏃朵笉闇€瑕佺墿鐞嗛殧绂?
```
---
### 浠ュ悗鍋氱殑浼樺娍 鉁?
1. **寤惰繜鎶曞叆**
```
褰撳墠锛氫笓娉ㄤ笟鍔″紑鍙戯紙ASL銆丏C绛夛級
<>潵锛氭湁闇€姹傛椂鍐嶆敼閫?
浼樺娍锛氬揩閫熸帹杩涗笟鍔?
```
2. **闇€姹傛槑纭<E6A791>椂鍐嶅仛**
```
瑙﹀彂鏉′欢锛?
- 闇€瑕佸井鏈嶅姟鎷嗗垎
- 闇€瑕佹ā鍧楃嫭绔嬮儴缃?
- 闇€瑕佺<E79195>鏈夊寲閮ㄧ讲
- 鏁版嵁閲忓ぇ锛岄渶瑕佹€ц兘浼樺寲
姝ゆ椂鏀归€犵洰鏍囨槑纭?
```
---
### 浠ュ悗鍋氱殑鍔e娍 鉂?
1. **鏁版嵁閲忓ぇ锛岃縼绉绘參**
```
<>潵鏁版嵁閲忥紙浼扮畻锛夛細
- 鐢ㄦ埛锛?0,000+
- 椤圭洰锛?00,000+
- 瀵硅瘽锛?,000,000+
- 鏂囨。锛?00,000+
杩佺Щ鏃堕棿锛氭暟灏忔椂鍒版暟澶?
椋庨櫓锛氶珮
```
2. **涓氬姟澶嶆潅锛屾祴璇曞洶闅?*
```
<>潵妯″潡锛?
- 鉁?7涓<37>ā鍧楀叏閮ㄤ笂绾?
- 鉁?澶嶆潅鐨勮法妯″潡鍏宠仈
- 鉁?澶ч噺鐢ㄦ埛鍦ㄤ娇鐢?
娴嬭瘯闅惧害锛氶珮
鍥炴粴鎴愭湰锛氶珮
```
3. **闇€瑕佸仠鏈烘垨鍦ㄧ嚎杩佺Щ**
```
鍋滄満杩佺Щ锛?
- 褰卞搷鐢ㄦ埛浣撻獙
- 鍙<>兘涓㈠け璁㈠崟
鍦ㄧ嚎杩佺Щ锛?
- 鎶€鏈<E282AC><E98F88>鏉傚害楂?
- 闇€瑕佸弻鍐欍€佹暟鎹<E69A9F>悓姝?
```
4. **鏀归€犳垚鏈<E59E9A>垚鍊嶅<E98D8A>闀?*
```
<>潵鏀归€犳垚鏈<E59E9A>紙浼扮畻锛夛細
- 寮€鍙戞椂闂达細1-2鍛?
- 娴嬭瘯鏃堕棿锛?-2鍛?
- 鐢熶骇杩佺Щ锛?鍛?
- 鎬昏<E98EAC>锛?-5鍛?
鐜板湪鐨?-5鍊嶏紒
```
---
## 馃幆 寤鸿<E5AFA4>涓庡喅绛?
### 鏂规<E98F82>A锛氱幇鍦ㄥ仛鐗╃悊闅旂<E99785> 猸愨瓙猸愨瓙猸?**寮虹儓鎺ㄨ崘**
**閫傜敤鍦烘櫙锛?*
- 鉁?鏈?鍛ㄦ椂闂存姇鍏?
- 鉁?閲嶈<E996B2>闀挎湡鏋舵瀯鍋ュ悍
- 鉁?鏈<>潵鏈夋ā鍧楃嫭绔嬮儴缃查渶姹?
- 鉁?鏈<>潵鏈夌<E98F88>鏈夊寲閮ㄧ讲闇€姹?
**鐞嗙敱锛?*
1. **鎴愭湰鏈€浣?*锛氭暟鎹<E69A9F>噺灏忥紝杩佺Щ蹇<D0A9>紙< 1灏忔椂锛?
2. **椋庨櫓鏈€浣?*锛氫笟鍔$畝鍗曪紝娴嬭瘯瀹规槗
3. **鏀剁泭鏈€澶?*锛氫负鏈<E8B49F>潵7涓<37>ā鍧楁墦涓嬪潥瀹炲熀纭€
4. **閬垮厤鎶€鏈<E282AC>€?*锛氶伩鍏嶆湭鏉ュぇ瑙勬ā鏀归€?
**瀹炴柦璁″垝锛?*
```
Week 1锛歋chema闅旂<E99785>鏀归€狅紙2-3澶╋級
Day 1-2锛氬紑鍙戠幆澧冩敼閫?
- 鍒涘缓Schema
- 淇<>敼Prisma Schema
- 鏁版嵁杩佺Щ鑴氭湰
- 娴嬭瘯楠岃瘉
Day 3锛氱敓浜х幆澧冭縼绉?
- 澶囦唤鏁版嵁
- 鎵ц<E98EB5>杩佺Щ
- 楠岃瘉娴嬭瘯
- 鐩戞帶
Week 2锛氱户缁瑼SL妯″潡寮€鍙?
```
**鎶曞叆浜у嚭姣旓細** 猸愨瓙猸愨瓙猸?鏋侀珮
---
### 鏂规<E98F82>B锛氭殏涓嶅仛鐗╃悊闅旂<E99785>锛岀户缁<E688B7>€昏緫闅旂<E99785> 猸愨瓙猸?**鍙<>帴鍙?*
**閫傜敤鍦烘櫙锛?*
- 鉁?鏃堕棿绱ц揩锛屽繀椤诲敖蹇<E69596>笂绾緼SL妯″潡
- 鉁?杩戞湡锛?涓<>湀鍐咃級娌℃湁寰<E6B981>湇鍔℃媶鍒嗛渶姹?
- 鉁?杩戞湡娌℃湁绉佹湁鍖栭儴缃查渶姹?
**鐞嗙敱锛?*
1. **蹇<>€熸帹杩涗笟鍔?*锛氫笓娉ˋSL妯″潡寮€鍙?
2. **閫昏緫闅旂<E99785>瓒冲<E79392>鐢?*锛氬綋鍓嶉樁娈靛彲浠ユ弧瓒抽渶姹?
3. **寤惰繜鏀归€?*锛氭湭鏉ユ湁闇€姹傛椂鍐嶅仛
**浣嗛渶瑕侀伒瀹堢邯寰嬶細** 鈿狅笍 闈炲父閲嶈<E996B2>
```
涓ユ牸浣跨敤琛ㄥ悕鍓嶇紑锛?
- aia_*
- asl_*
- pkb_*
- dc_*
- review_*
- admin_*
涓烘湭鏉ユ敼閫犳墦鍩虹<EFBFBD>
```
**瑙﹀彂鏀归€犵殑鏉′欢锛?*
1. 闇€瑕佸井鏈嶅姟鎷嗗垎
2. 闇€瑕佹ā鍧楃嫭绔嬮儴缃?
3. 闇€瑕佺<E79195>鏈夊寲閮ㄧ讲
4. 鏁版嵁閲忚秴杩?00涓囪<E6B693>
**鎶曞叆浜у嚭姣旓細** 猸愨瓙猸?涓<>
---
### 鏂规<E98F82>C锛氭贩鍚堟柟妗堬紙鎶樹腑锛?猸愨瓙猸愨瓙 **鎺ㄨ崘**
**鏂规<E98F82>鎻忚堪锛?*
1. **鏂版ā鍧椾娇鐢ㄧ墿鐞嗛殧绂?*
- ASL銆丏C銆丼SA銆丼T銆丷VW绛夋柊妯″潡鐩存帴鐢ㄧ墿鐞嗛殧绂?
- 浠庝竴寮€濮嬪氨鍒涘缓鐙<E7BC93>珛Schema
2. **鑰佹ā鍧楁殏鏃朵繚鎸侀€昏緫闅旂<E99785>**
- AIA銆丳KB绛夊凡瀹屾垚妯″潡鏆傛椂涓嶅姩
- 绛夋湭鏉ユ湁闇€姹傛椂鍐嶈縼绉?
**瀹炴柦璁″垝锛?*
```
绔嬪嵆锛?
1. 鍒涘缓鏂癝chema
CREATE SCHEMA asl_schema;
CREATE SCHEMA dc_schema;
CREATE SCHEMA admin_schema;
...
2. ASL妯″潡浣跨敤鐗╃悊闅旂<E99785>
model AslProject {
@@schema("asl_schema")
}
<EFBFBD>潵锛?-12涓<32>湀鍚庯級锛?
3. 杩佺Щ鑰佹ā鍧?
- 杩佺ЩAIA鍒癮ia_schema
- 杩佺ЩPKB鍒皃kb_schema
```
**浼樺娍锛?*
- 鉁?绔嬪嵆鎶曞叆灏忥紙鍙<E7B499>渶鍒涘缓Schema锛?0鍒嗛挓锛?
- 鉁?鏂版ā鍧椾韩鍙楃墿鐞嗛殧绂荤殑濂藉<E6BF82>
- 鉁?鑰佹ā鍧楀欢杩熸敼閫狅紝椋庨櫓浣?
**鎶曞叆浜у嚭姣旓細** 猸愨瓙猸愨瓙 楂?
---
## 馃搳 鍐崇瓥鐭╅樀
| 鏂规<E98F82> | 绔嬪嵆鎶曞叆 | 鏈<>潵鎴愭湰 | 椋庨櫓 | 鐏垫椿鎬?| 鎺ㄨ崘搴?|
|------|---------|---------|------|-------|-------|
| **鏂规<E98F82>A锛氱幇鍦ㄥ仛鐗╃悊闅旂<E99785>** | 猸愨瓙猸?涓<>紙1鍛<31>級 | 猸愨瓙猸愨瓙猸?浣?| 猸愨瓙猸愨瓙 浣?| 猸愨瓙猸愨瓙猸?楂?| 猸愨瓙猸愨瓙猸?|
| **鏂规<E98F82>B锛氱户缁<E688B7>€昏緫闅旂<E99785>** | 猸愨瓙猸愨瓙猸?闆?| 猸愨瓙 楂?| 猸愨瓙猸?涓?| 猸愨瓙 浣?| 猸愨瓙猸?|
| **鏂规<E98F82>C锛氭贩鍚堟柟妗?* | 猸愨瓙猸愨瓙猸?浣庯紙10鍒嗛挓锛?| 猸愨瓙猸愨瓙 涓?| 猸愨瓙猸愨瓙 浣?| 猸愨瓙猸愨瓙 楂?| 猸愨瓙猸愨瓙 |
---
## 馃幆 鏈€缁堝缓璁?
### 鎴戠殑鎺ㄨ崘锛氭柟妗圓锛堢幇鍦ㄥ仛鐗╃悊闅旂<E99785>锛夆瓙猸愨瓙猸愨瓙
**鐞嗙敱锛?*
**1. 鎴愭湰鏈€浣庣殑鏃堕棿绐楀彛**
```
褰撳墠锛?
- 鏁版嵁閲忓皬锛? 1涓囪<E6B693>锛?
- 杩佺Щ鏃堕棿锛? 1灏忔椂
- 娴嬭瘯鏃堕棿锛?-2澶?
- 鎬绘垚鏈<E59E9A>細1鍛?
6涓<EFBFBD>湀鍚庯細
- 鏁版嵁閲忓ぇ锛?00涓囪<E6B693>+锛?
- 杩佺Щ鏃堕棿锛氭暟灏忔椂鍒版暟澶?
- 娴嬭瘯鏃堕棿锛?-2鍛?
- 鎬绘垚鏈<E59E9A>細3-5鍛?
鎴愭湰宸<EFBFBD>紓锛?-5鍊嶏紒
```
**2. 鏈€浣冲<E6B5A3>涔犳満浼?*
```
褰撳墠锛?
- 鍥㈤槦灏忥紝娌熼€氭垚鏈<E59E9A>
- 妯″潡灏戯紝鏀归€犺寖鍥村皬
- 鏄撲簬寤虹珛瑙勮寖
<EFBFBD>潵锛?
- 鍥㈤槦澶э紝娌熼€氭垚鏈<E59E9A>
- 妯″潡澶氾紝鏀归€犺寖鍥村ぇ
- 闅句互缁熶竴瑙勮寖
```
**3. 閬垮厤鎶€鏈<E282AC>€虹疮绉?*
```
鎶€鏈<EFBFBD>€虹殑鐗圭偣锛?
- 鏃堕棿瓒婁箙锛屽埄鎭<E59F84>秺楂?
- 鏀归€犳垚鏈<E59E9A>垚鍊嶅<E98D8A>闀?
- 褰卞搷涓氬姟鍒涙柊
鐜板湪鏀归€狅細
- 涓€娆℃€ц繕娓?
- 杞昏<E69D9E>涓婇樀
```
**4. 涓烘湭鏉ユ墦涓嬪潥瀹炲熀纭€**
```
<EFBFBD>潵闇€姹傦紙6-12涓<32>湀锛夛細
- 瀹ǹ绯荤粺鐙<E7B2BA>珛閮ㄧ讲
- AI鏂囩尞妯″潡鐙<E6BDA1>珛閿€鍞?
- 绉佹湁鍖栭儴缃?
- 寰<>湇鍔℃媶鍒?
鐗╃悊闅旂<EFBFBD><EFBFBD>熀纭€璁炬柦
```
---
### 濡傛灉蹇呴』閫夋嫨鏂规<E98F82>B鎴朇
**鎺ㄨ崘锛氭柟妗圕锛堟贩鍚堟柟妗堬級**
**鏈€浣庤<E6B5A3>姹傦細**
1. 鉁?绔嬪嵆鍒涘缓鎵€鏈塖chema锛?0鍒嗛挓锛?
2. 鉁?鏂版ā鍧楋紙ASL銆丏C绛夛級浣跨敤鐗╃悊闅旂<E99785>
3. 鉁?鑰佹ā鍧楋紙AIA銆丳KB锛夊欢杩熻縼绉?
**瑙﹀彂鑰佹ā鍧楄縼绉荤殑鏉′欢锛?*
- 鏁版嵁閲忚秴杩?0涓囪<E6B693>
- 闇€瑕佹ā鍧楃嫭绔嬮儴缃?
- 闇€瑕佺<E79195>鏈夊寲閮ㄧ讲
---
## 馃搵 瀹炴柦娓呭崟锛堟柟妗圓锛?
### 鍑嗗<E98D91>闃舵<E99783>锛?澶╋級
- [ ] 璇︾粏闃呰<E99783>Prisma Schema鏂囨。
- [ ] 璁捐<E79281>Schema缁撴瀯锛坧latform_schema, aia_schema, asl_schema绛夛級
- [ ] 缂栧啓鏁版嵁杩佺Щ鑴氭湰
- [ ] 鍑嗗<E98D91>娴嬭瘯鐢ㄤ緥
- [ ] 鍑嗗<E98D91>鍥炴粴鏂规<E98F82>
### 寮€鍙戠幆澧冩敼閫狅紙1-2澶╋級
- [ ] 鍒涘缓鎵€鏈塖chema
- [ ] 淇<>敼Prisma Schema锛堟墍鏈塎odel锛?
- [ ] 杩愯<E69DA9>Prisma Migrate
- [ ] 杩佺Щ寮€鍙戠幆澧冩暟鎹?
- [ ] 杩愯<E69DA9>鍗曞厓娴嬭瘯
- [ ] 杩愯<E69DA9>闆嗘垚娴嬭瘯
- [ ] 鎵嬪姩娴嬭瘯鎵€鏈夊姛鑳?
### 鐢熶骇鐜<E9AA87><E9909C>杩佺Щ锛?澶╋級
- [ ] 澶囦唤鏁版嵁搴?
- [ ] 鍒涘缓Schema
- [ ] 鎵ц<E98EB5>鏁版嵁杩佺Щ
- [ ] 楠岃瘉鏁版嵁瀹屾暣鎬?
- [ ] 鍚<>姩搴旂敤
- [ ] 鐩戞帶閿欒<E996BF>鏃ュ織
- [ ] 鎬ц兘娴嬭瘯
### 楠屾敹鏍囧噯
- [ ] 鎵€鏈堿PI鎺ュ彛姝
- [ ] 璺⊿chema鍏宠仈姝
- [ ] 澶栭敭绾︽潫姝e父
- [ ] 鏁版嵁瀹屾暣鎬ф<E98EAC>甯?
- [ ] 鎬ц兘鏃犳槑鏄句笅闄?
- [ ] 鏃犻敊璇<E6958A>棩蹇?
---
## 馃挕 鎶€鏈<E282AC>粏鑺傦細濡備綍瀹炵幇鐗╃悊闅旂<E99785>
### Step 1: 鍒涘缓Schema
```sql
-- 鍒涘缓鎵€鏈塖chema
CREATE SCHEMA platform_schema;
CREATE SCHEMA aia_schema;
CREATE SCHEMA asl_schema;
CREATE SCHEMA pkb_schema;
CREATE SCHEMA dc_schema;
CREATE SCHEMA ssa_schema;
CREATE SCHEMA st_schema;
CREATE SCHEMA review_schema;
CREATE SCHEMA admin_schema;
```
---
### Step 2: 淇<>敼Prisma Schema
**淇<>敼database閰嶇疆锛?*
```prisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["multiSchema"] // 鍚<>敤澶歋chema鏀<61>寔 猸?
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
schemas = [
"platform_schema",
"aia_schema",
"asl_schema",
"pkb_schema",
"dc_schema",
"ssa_schema",
"st_schema",
"review_schema",
"admin_schema"
] // 澹版槑鎵€鏈塖chema 猸?
}
```
**淇<>敼Model锛?*
```prisma
// 骞冲彴灞?
model User {
id String @id @default(uuid())
email String @unique
password String
// ...
@@map("users")
@@schema("platform_schema") // 鎸囧畾Schema 猸?
}
// AI闂<49>瓟妯″潡
model AiaProject {
id String @id @default(uuid())
userId String @map("user_id")
name String
user User @relation(fields: [userId], references: [id])
@@map("projects") // 涓嶉渶瑕佸墠缂€
@@schema("aia_schema") // 鎸囧畾Schema 猸?
}
// AI鏂囩尞妯″潡
model AslProject {
id String @id @default(uuid())
userId String @map("user_id")
name String
user User @relation(fields: [userId], references: [id])
@@map("projects")
@@schema("asl_schema") // 鎸囧畾Schema 猸?
}
```
---
### Step 3: 鐢熸垚杩佺Щ
```bash
# 鐢熸垚杩佺Щ鏂囦欢
npx prisma migrate dev --name schema-isolation --create-only
# 鏌ョ湅鐢熸垚鐨凷QL
# migrations/20251106_schema-isolation/migration.sql
```
**鐢熸垚鐨凷QL绀轰緥锛?*
```sql
-- CreateSchema
CREATE SCHEMA IF NOT EXISTS "platform_schema";
CREATE SCHEMA IF NOT EXISTS "aia_schema";
-- ...
-- CreateTable
CREATE TABLE "platform_schema"."users" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"email" VARCHAR(255) NOT NULL,
-- ...
PRIMARY KEY ("id")
);
CREATE TABLE "aia_schema"."projects" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"user_id" UUID NOT NULL,
"name" VARCHAR(255) NOT NULL,
-- ...
CONSTRAINT "fk_user" FOREIGN KEY ("user_id")
REFERENCES "platform_schema"."users"("id") ON DELETE CASCADE,
PRIMARY KEY ("id")
);
```
---
### Step 4: 鏁版嵁杩佺Щ
**缂栧啓杩佺Щ鑴氭湰锛?*
```sql
-- migrate-data.sql
-- 杩佺Щ鐢ㄦ埛琛?
INSERT INTO platform_schema.users
SELECT * FROM public.users;
-- 杩佺ЩAIA妯″潡
INSERT INTO aia_schema.projects
SELECT * FROM public.aia_projects;
INSERT INTO aia_schema.conversations
SELECT * FROM public.aia_conversations;
INSERT INTO aia_schema.messages
SELECT * FROM public.aia_messages;
-- 杩佺ЩPKB妯″潡
INSERT INTO pkb_schema.knowledge_bases
SELECT * FROM public.knowledge_bases;
INSERT INTO pkb_schema.documents
SELECT * FROM public.documents;
-- ... 鍏朵粬琛?
```
**鎵ц<E98EB5>杩佺Щ锛?*
```bash
# 鏂瑰紡1锛氫娇鐢╬sql
psql -U postgres -d ai_clinical_research -f migrate-data.sql
# 鏂瑰紡2锛氫娇鐢≒risma
npx prisma db execute --file migrate-data.sql
```
---
### Step 5: 楠岃瘉
```typescript
// test-schema-isolation.ts
async function testSchemaIsolation() {
// 娴嬭瘯璺⊿chema鍏宠仈
const project = await prisma.aiaProject.findUnique({
where: { id: 'test-id' },
include: {
user: true // 璺⊿chema鍏宠仈锛坧latform_schema.users锛?
}
});
console.log('璺⊿chema鍏宠仈姝父:', project);
// 娴嬭瘯鎵€鏈夋ā鍧?
const stats = {
users: await prisma.user.count(),
aiaProjects: await prisma.aiaProject.count(),
aslProjects: await prisma.aslProject.count(),
knowledgeBases: await prisma.knowledgeBase.count(),
};
console.log('鏁版嵁缁熻<E7BC81>:', stats);
}
```
---
## 馃搳 鎴愭湰鏀剁泭鎬荤粨
### 鎶曞叆鎴愭湰
| 椤圭洰 | 鏃堕棿 | 椋庨櫓 |
|------|------|------|
| 瀛︿範鍜屽噯澶?| 1澶?| 浣?|
| 寮€鍙戠幆澧冩敼閫?| 1-2澶?| 浣?|
| 娴嬭瘯楠岃瘉 | 1-2澶?| 涓?|
| 鐢熶骇鐜<E9AA87><E9909C>杩佺Щ | 1澶?| 涓?|
| **鎬昏<E98EAC>** | **5-6澶?* | **涓<>** |
### 棰勬湡鏀剁泭
| 鏀剁泭 | 浠峰€?|
|------|------|
| 妯″潡鐙<E6BDA1>珛閮ㄧ讲 | 猸愨瓙猸愨瓙猸?|
| 寰<>湇鍔℃媶鍒?| 猸愨瓙猸愨瓙猸?|
| 鏁版嵁搴撶骇鍒<E9AA87>潈闄愭帶鍒?| 猸愨瓙猸愨瓙 |
| 鎸塖chema澶囦唤鎭㈠<E98EAD> | 猸愨瓙猸愨瓙 |
| 閬垮厤鏈<E58EA4>潵澶ц<E6BEB6>妯℃敼閫?| 猸愨瓙猸愨瓙猸?|
| **鎬讳环鍊?* | **鏋侀珮** |
---
## 馃幆 鏈€缁堝缓璁<E7BC93>€荤粨
### 鎴戠殑寤鸿<E5AFA4>锛氱珛鍗冲仛鐗╃悊闅旂<E99785>锛堟柟妗圓锛?
**鏍稿績鐞嗙敱锛?*
1. 鉁?**鐜板湪鏄<E6B9AA>垚鏈<E59E9A>渶浣庣殑鏃堕棿绐楀彛**锛堟暟鎹<E69A9F>噺灏忥紝鏀归€犲揩锛?
2. 鉁?**閬垮厤鎶€鏈<E282AC>€虹疮绉?*锛堟湭鏉ユ敼閫犳垚鏈<E59E9A>垚鍊嶅<E98D8A>闀匡級
3. 鉁?**涓?涓<>ā鍧楁墦涓嬪潥瀹炲熀纭€**锛堟ā鍧楃嫭绔嬮儴缃层€佸井鏈嶅姟鎷嗗垎锛?
4. 鉁?**鏀<>寔鏈<E5AF94>潵鍟嗕笟妯″紡**锛堟ā鍧楀寲閿€鍞<E282AC>€佺<E282AC>鏈夊寲閮ㄧ讲锛?
**鎶曞叆锛?* 1鍛?
**鏀剁泭锛?* 閬垮厤鏈<E58EA4>潵3-5鍊嶇殑鏀归€犳垚鏈?
**鎶曞叆浜у嚭姣旓細** 鏋侀珮
---
**濡傛灉鎮ㄥ喅瀹氶噰绾虫柟妗圓锛屾垜鍙<E59E9C>互绔嬪嵆甯<E5B586>偍锛?*
1. 璁捐<E79281>璇︾粏鐨凷chema缁撴瀯
2. 缂栧啓Prisma Schema淇<61>敼鏂规<E98F82>
3. 缂栧啓鏁版嵁杩佺Щ鑴氭湰
4. 鍒跺畾璇︾粏鐨勫疄鏂借<E98F82>鍒?
5. 鍑嗗<E98D91>娴嬭瘯鐢ㄤ緥鍜岄獙鏀舵爣鍑?
**鎮ㄨ<E98EAE>寰楀憿锛?* 馃槉