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