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%)
1068 lines
22 KiB
Markdown
1068 lines
22 KiB
Markdown
# 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>锛堢湡姝g殑Schema闅旂<E99785>锛?
|
||
|
||
**瀹氫箟锛?*
|
||
- 涓烘瘡涓<E798A1>ā鍧楀垱寤?*鐙<>珛鐨凱ostgreSQL Schema**
|
||
- 琛ㄥ垎鏁e湪涓嶅悓鐨凷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
|
||
// 涓氬姟浠g爜鏃犳劅鐭ワ紙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>細涓氬姟浠g爜鍑犱箮涓嶉渶瑕佹敼锛?* 鉁?
|
||
|
||
```typescript
|
||
// 涓氬姟浠g爜瀹屽叏涓嶅彉
|
||
const project = await prisma.aiaProject.findUnique({
|
||
where: { id: projectId },
|
||
include: {
|
||
user: true // 璺⊿chema鍏宠仈锛孭risma鑷<61>姩澶勭悊
|
||
}
|
||
});
|
||
```
|
||
|
||
**鍘熷洜锛?*
|
||
- 鉁?Prisma ORM鎶借薄浜嗗簳灞係chema
|
||
- 鉁?涓氬姟浠g爜鍙<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>惁姝e父
|
||
2. 鉁?璺⊿chema鍏宠仈鏄<E4BB88>惁姝e父锛堢敤鎴?椤圭洰銆侀」鐩?瀵硅瘽绛夛級
|
||
3. 鉁?澶栭敭绾︽潫鏄<E6BDAB>惁姝e父
|
||
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鎺ュ彛姝e父
|
||
- [ ] 璺⊿chema鍏宠仈姝e父
|
||
- [ ] 澶栭敭绾︽潫姝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鍏宠仈姝e父:', 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>寰楀憿锛?* 馃槉
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|