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

22 KiB
Raw Blame History

Schema闅旂<EFBFBD>鏂规<EFBFBD>涓庢垚鏈<EFBFBD>垎鏋?

*鏂囨。鐗堟湰锛? v1.0
*鍒涘缓鏃ユ湡锛? 2025-11-06
鏈€鍚庢洿鏂帮細 2025-11-06
鏂囨。鐘舵€侊細 鏋舵瀯鍒嗘瀽
浣滆€咃細 鎶€鏈<E282AC>灦鏋勫笀


馃搵 鏍稿績闂<E7B8BE><E99782>

  1. 浠€涔堟槸鐪熸<EFBFBD>鐨凷chema闅旂<EFBFBD>锛?
  2. 浠庨€昏緫闅旂<EFBFBD>鍒扮墿鐞嗛殧绂荤殑鏀归€犳垚鏈<EFBFBD>湁澶氶珮锛?
  3. 鐜板湪鍋歋chema闅旂<EFBFBD>鐨勬垚鏈<EFBFBD>珮鍚楋紵
  4. 褰撳墠涓氬姟浣撻噺涓嬶紝闇€瑕佺幇鍦ㄥ仛鍚楋紵
  5. 鏈€浣冲疄鏂芥椂鏈烘槸浠€涔堟椂鍊欙紵

馃幆 涓ょ<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>锛堢湡姝殑Schema闅旂<EFBFBD>锛?

*瀹氫箟锛?

  • 涓烘瘡涓<EFBFBD>ā鍧楀垱寤?<EFBFBD>珛鐨凱ostgreSQL Schema*
  • 琛ㄥ垎鏁湪涓嶅悓鐨凷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>鏂瑰紡锛?

// 涓氬姟浠爜鏃犳劅鐭ワ紙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爜瀹屽叏涓嶅彉
const project = await prisma.aiaProject.findUnique({
  where: { id: projectId },
  include: {
    user: true  // 璺⊿chema鍏宠仈锛孭risma鑷<61>姩澶勭悊
  }
});

*鍘熷洜锛?

  • 鉁?Prisma ORM鎶借薄浜嗗簳灞係chema
  • 鉁?涓氬姟浠爜鍙<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>锛?

  1. 鉁?鎵€鏈堿PI鎺ュ彛鏄<E5BD9B>惁姝
  2. 鉁?璺⊿chema鍏宠仈鏄<E4BB88>惁姝父锛堢敤鎴?椤圭洰銆侀」鐩?瀵硅瘽绛夛級
  3. 鉁?澶栭敭绾︽潫鏄<E6BDAB>惁姝
  4. 鉁?鏁版嵁瀹屾暣鎬ф<E98EAC>鏌?
  5. 鉁?鎬ц兘娴嬭瘯锛堣法Schema鏌ヨ<E98F8C>鎬ц兘锛?
  6. 鉁?澶囦唤鎭㈠<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 浠ュ悗鍋?

鐜板湪鍋氱殑浼樺娍 鉁?

  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. *鏈変竴瀹氶<EFBFBD>闄?

    椋庨櫓锛?
    - 鏁版嵁杩佺Щ澶辫触
    - 澶栭敭绾︽潫闂<E6BDAB><E99782>
    - 闇€瑕佸仠鏈?
    
    缂撹В锛氳<E9949B>缁嗘祴璇曘€佸洖婊氭柟妗?
    
  3. *褰撳墠娌℃湁绱ц揩闇€姹?

    浜嬪疄锛?
    - 娌℃湁寰<E6B981>湇鍔℃媶鍒嗛渶姹?
    - 娌℃湁妯″潡鐙<E6BDA1>珛閮ㄧ讲闇€姹?
    - 娌℃湁绉佹湁鍖栭儴缃查渶姹?
    
    缁撹<E7BC81>锛氭殏鏃朵笉闇€瑕佺墿鐞嗛殧绂?
    

浠ュ悗鍋氱殑浼樺娍 鉁?

  1. 寤惰繜鎶曞叆

    褰撳墠锛氫笓娉ㄤ笟鍔″紑鍙戯紙ASL銆丏C绛夛級
    鏈<>潵锛氭湁闇€姹傛椂鍐嶆敼閫?
    
    浼樺娍锛氬揩閫熸帹杩涗笟鍔?
    
  2. 闇€姹傛槑纭<EFBFBD>椂鍐嶅仛

    瑙﹀彂鏉′欢锛?
    - 闇€瑕佸井鏈嶅姟鎷嗗垎
    - 闇€瑕佹ā鍧楃嫭绔嬮儴缃?
    - 闇€瑕佺<E79195>鏈夊寲閮ㄧ讲
    - 鏁版嵁閲忓ぇ锛岄渶瑕佹€ц兘浼樺寲
    
    姝ゆ椂鏀归€犵洰鏍囨槑纭?
    

浠ュ悗鍋氱殑鍔e娍 鉂?

  1. 鏁版嵁閲忓ぇ锛岃縼绉绘參

    <EFBFBD>潵鏁版嵁閲忥紙浼扮畻锛夛細
    - 鐢ㄦ埛锛?0,000+
    - 椤圭洰锛?00,000+
    - 瀵硅瘽锛?,000,000+
    - 鏂囨。锛?00,000+
    
    杩佺Щ鏃堕棿锛氭暟灏忔椂鍒版暟澶?
    椋庨櫓锛氶珮
    
  2. *涓氬姟澶嶆潅锛屾祴璇曞洶闅?

    <EFBFBD>潵妯″潡锛?
    - 鉁?7涓<37>ā鍧楀叏閮ㄤ笂绾?
    - 鉁?澶嶆潅鐨勮法妯″潡鍏宠仈
    - 鉁?澶ч噺鐢ㄦ埛鍦ㄤ娇鐢?
    
    娴嬭瘯闅惧害锛氶珮
    鍥炴粴鎴愭湰锛氶珮
    
  3. 闇€瑕佸仠鏈烘垨鍦ㄧ嚎杩佺Щ

    鍋滄満杩佺Щ锛?
    - 褰卞搷鐢ㄦ埛浣撻獙
    - 鍙<>兘涓㈠け璁㈠崟
    
    鍦ㄧ嚎杩佺Щ锛?
    - 鎶€鏈<E282AC><E98F88>鏉傚害楂?
    - 闇€瑕佸弻鍐欍€佹暟鎹<E69A9F>悓姝?
    
  4. *鏀归€犳垚鏈<EFBFBD>垚鍊嶅<EFBFBD>闀?

    <EFBFBD>潵鏀归€犳垚鏈<EFBFBD>紙浼扮畻锛夛細
    - 寮€鍙戞椂闂达細1-2鍛?
    - 娴嬭瘯鏃堕棿锛?-2鍛?
    - 鐢熶骇杩佺Щ锛?鍛?
    - 鎬昏<E98EAC>锛?-5鍛?
    
    鐜板湪鐨?-5鍊嶏紒
    

馃幆 寤鸿<E5AFA4>涓庡喅绛?

鏂规<EFBFBD>A锛氱幇鍦ㄥ仛鐗╃悊闅旂<EFBFBD> 猸愨瓙猸愨瓙猸?寮虹儓鎺ㄨ崘

*閫傜敤鍦烘櫙锛?

  • 鉁?鏈?鍛ㄦ椂闂存姇鍏?
  • 鉁?閲嶈<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妯″潡寮€鍙?

鎶曞叆浜у嚭姣旓細 猸愨瓙猸愨瓙猸?鏋侀珮


鏂规<EFBFBD>B锛氭殏涓嶅仛鐗╃悊闅旂<EFBFBD>锛岀户缁<EFBFBD>€昏緫闅旂<EFBFBD> 猸愨瓙猸?*<EFBFBD>帴鍙?

*閫傜敤鍦烘櫙锛?

  • 鉁?鏃堕棿绱ц揩锛屽繀椤诲敖蹇<E69596>笂绾緼SL妯″潡
  • 鉁?杩戞湡锛?涓<>湀鍐咃級娌℃湁寰<E6B981>湇鍔℃媶鍒嗛渶姹?
  • 鉁?杩戞湡娌℃湁绉佹湁鍖栭儴缃查渶姹?

*鐞嗙敱锛?

  1. **蹇<>€熸帹杩涗笟鍔?*锛氫笓娉ˋSL妯″潡寮€鍙?
  2. **閫昏緫闅旂<E99785>瓒冲<E79392>鐢?*锛氬綋鍓嶉樁娈靛彲浠ユ弧瓒抽渶姹?
  3. **寤惰繜鏀归€?*锛氭湭鏉ユ湁闇€姹傛椂鍐嶅仛

浣嗛渶瑕侀伒瀹堢邯寰嬶細 鈿狅笍 闈炲父閲嶈<E996B2>

涓ユ牸浣跨敤琛ㄥ悕鍓嶇紑锛?
- aia_*
- asl_*
- pkb_*
- dc_*
- review_*
- admin_*

涓烘湭鏉ユ敼閫犳墦鍩虹<E98DA9>

*瑙﹀彂鏀归€犵殑鏉′欢锛?

  1. 闇€瑕佸井鏈嶅姟鎷嗗垎
  2. 闇€瑕佹ā鍧楃嫭绔嬮儴缃?
  3. 闇€瑕佺<EFBFBD>鏈夊寲閮ㄧ讲
  4. 鏁版嵁閲忚秴杩?00涓囪<E6B693>

鎶曞叆浜у嚭姣旓細 猸愨瓙猸?涓<>


鏂规<EFBFBD>C锛氭贩鍚堟柟妗堬紙鎶樹腑锛?猸愨瓙猸愨瓙 鎺ㄨ崘

*鏂规<EFBFBD>鎻忚堪锛?

  1. *鏂版ā鍧椾娇鐢ㄧ墿鐞嗛殧绂?

    • ASL銆丏C銆丼SA銆丼T銆丷VW绛夋柊妯″潡鐩存帴鐢ㄧ墿鐞嗛殧绂?
    • 浠庝竴寮€濮嬪氨鍒涘缓鐙<EFBFBD>珛Schema
  2. 鑰佹ā鍧楁殏鏃朵繚鎸侀€昏緫闅旂<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>姹傦細

  1. 鉁?绔嬪嵆鍒涘缓鎵€鏈塖chema锛?0鍒嗛挓锛?
  2. 鉁?鏂版ā鍧楋紙ASL銆丏C绛夛級浣跨敤鐗╃悊闅旂<E99785>
  3. 鉁?鑰佹ā鍧楋紙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鎺ュ彛姝
  • 璺⊿chema鍏宠仈姝
  • 澶栭敭绾︽潫姝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鍏宠仈姝父:', 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>锛堟柟妗圓锛?

*鏍稿績鐞嗙敱锛?

  1. 鉁?鐜板湪鏄<EFBFBD>垚鏈<EFBFBD>渶浣庣殑鏃堕棿绐楀彛锛堟暟鎹<EFBFBD>噺灏忥紝鏀归€犲揩锛?
  2. 鉁?**閬垮厤鎶€鏈<E282AC>€虹疮绉?*锛堟湭鏉ユ敼閫犳垚鏈<E59E9A>垚鍊嶅<E98D8A>闀匡級
  3. 鉁?**涓?涓<>ā鍧楁墦涓嬪潥瀹炲熀纭€**锛堟ā鍧楃嫭绔嬮儴缃层€佸井鏈嶅姟鎷嗗垎锛?
  4. 鉁?<EFBFBD>寔鏈<EFBFBD>潵鍟嗕笟妯″紡锛堟ā鍧楀寲閿€鍞<EFBFBD>€佺<EFBFBD>鏈夊寲閮ㄧ讲锛?

*鎶曞叆锛? 1鍛? *鏀剁泭锛? 閬垮厤鏈<E58EA4>潵3-5鍊嶇殑鏀归€犳垚鏈? 鎶曞叆浜у嚭姣旓細 鏋侀珮


*濡傛灉鎮ㄥ喅瀹氶噰绾虫柟妗圓锛屾垜鍙<EFBFBD>互绔嬪嵆甯<EFBFBD>偍锛?

  1. 璁捐<EFBFBD>璇︾粏鐨凷chema缁撴瀯
  2. 缂栧啓Prisma Schema淇<61>敼鏂规<E98F82>
  3. 缂栧啓鏁版嵁杩佺Щ鑴氭湰
  4. 鍒跺畾璇︾粏鐨勫疄鏂借<EFBFBD>鍒?
  5. 鍑嗗<EFBFBD>娴嬭瘯鐢ㄤ緥鍜岄獙鏀舵爣鍑?

*鎮ㄨ<EFBFBD>寰楀憿锛? 馃槉