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%)
14 KiB
AIA - AI<41>箄<EFBFBD><E7AE84>桃<EFBFBD>璅∪<E79285>嚗𡁏㺭<F0A1818F>桀<EFBFBD>霈曇恣
*<EFBFBD><EFBFBD>𧋦嚗? v1.0
*<EFBFBD>湔鰵<EFBFBD>園𡢿嚗? 2025-11-12
*<EFBFBD>唳旿摨廍chema嚗?aia_schema
<EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD> <20>?撌脣<E6928C><E884A3>賢僎餈<E5838E>宏
<EFBFBD><EFBFBD> <20>桀<EFBFBD>
- 璅∪<EFBFBD>璁<EFBFBD>膩
- Schema靽⊥<EFBFBD>
- <EFBFBD>唳旿摨栞”霈曇恣
- 銵典<EFBFBD>蝟餃㦛
- 蝝W<EFBFBD>霈曇恣
- <EFBFBD>唳旿蝐餃<EFBFBD>霂湔<EFBFBD>
- <EFBFBD>䀹凒<EFBFBD><EFBFBD>蟮
璅∪<EFBFBD>璁<EFBFBD>膩
<EFBFBD>蠘<EFBFBD>摰帋<EFBFBD>
AIA嚗㇁I Intelligent Assistant嚗? AI<41>箄<EFBFBD><E7AE84>桃<EFBFBD>璅∪<E79285><EFBFBD>臬像<EFBFBD>啁<EFBFBD><EFBFBD>詨<EFBFBD>撖寡<EFBFBD>撘閙<EFBFBD>嚗峕<EFBFBD>靘𨥈<EFBFBD>
- 憿寧𤌍蝞∠<EFBFBD> - <20>𠉛弦憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>撱箏<E692B1>蝞∠<E89D9E>
- <EFBFBD>箄<EFBFBD>撖寡<EFBFBD> - <20>箔<EFBFBD>LLM<4C><4D><EFBFBD>銝𡁻<E98A9D><F0A181BB>笔笆霂?
- <EFBFBD>𡁶鍂<EFBFBD>桃<EFBFBD> - 銝滨<E98A9D>摰𡁻★<F0A181BB>桃<EFBFBD><E6A183>𡁶鍂AI撖寡<E69296>
- 瘨<EFBFBD><EFBFBD>蝞∠<EFBFBD> - 撖寡<E69296><E5AFA1><EFBFBD>蟮霈啣<E99C88><E595A3>峕<EFBFBD>蝝?
<EFBFBD>詨<EFBFBD>銝𡁜𦛚<EFBFBD>箸艶
- <EFBFBD>冽<EFBFBD><EFBFBD>𥕦遣銝游<EFBFBD><EFBFBD>𠉛弦憿寧𤌍
- <EFBFBD>券★<EFBFBD>桀<EFBFBD>銝垾I餈𥡝<EFBFBD>銝㮖<EFBFBD>撖寡<EFBFBD>
- 雿輻鍂<EFBFBD>𡁶鍂撖寡<EFBFBD><EFBFBD>蠘<EFBFBD>敹恍<EFBFBD>笔倮霂?
- <EFBFBD>亦<EFBFBD><EFBFBD>𣬚恣<EFBFBD><EFBFBD>笆霂嘥<EFBFBD><EFBFBD>?
Schema靽⊥<EFBFBD>
Schema<EFBFBD>滨妍
aia_schema
<EFBFBD>𥕦遣霂剖蘂
CREATE SCHEMA IF NOT EXISTS aia_schema;
GRANT ALL ON SCHEMA aia_schema TO aiclinical_admin;
<EFBFBD>唳旿餈<EFBFBD>宏
- *餈<EFBFBD>宏<EFBFBD>園𡢿嚗? 2025-11-12
- *皞𠩐chema嚗? public
- *餈<EFBFBD>宏<EFBFBD>𡁏𧋦嚗?
docs/09-<2D>嗆<EFBFBD>摰墧鴌/migration-scripts/003-migrate-aia.sql - <EFBFBD>唳旿摰峕㟲<EFBFBD>改<EFBFBD> <20>?100%餈<>宏<EFBFBD>𣂼<EFBFBD>
<EFBFBD>唳旿摨栞”霈曇恣
銵典<EFBFBD>銵?
| 銵典<EFBFBD> | <EFBFBD>券<EFBFBD>? | 銵峕㺭嚗<EFBFBD>摯霈∴<EFBFBD> | <EFBFBD>嗆<EFBFBD>? |
|---|---|---|---|
projects |
<EFBFBD>𠉛弦憿寧𤌍 | 1-100/<2F>冽<EFBFBD> | <EFBFBD>?撌脤<E6928C>蝵? |
conversations |
憿寧𤌍撖寡<EFBFBD> | 10-500/憿寧𤌍 | <EFBFBD>?撌脤<E6928C>蝵? |
messages |
撖寡<EFBFBD>瘨<EFBFBD><EFBFBD> | 10-1000/撖寡<E69296> | <EFBFBD>?撌脤<E6928C>蝵? |
general_conversations |
<EFBFBD>𡁶鍂撖寡<EFBFBD> | 10-100/<2F>冽<EFBFBD> | <EFBFBD>?撌脤<E6928C>蝵? |
general_messages |
<EFBFBD>𡁶鍂撖寡<EFBFBD>瘨<EFBFBD><EFBFBD> | 10-1000/撖寡<E69296> | <EFBFBD>?撌脤<E6928C>蝵? |
*<EFBFBD>餉恣嚗? 5銝芾”
1. projects - <20>𠉛弦憿寧𤌍銵?
<EFBFBD>券<EFBFBD>䈑<EFBFBD> 摮睃<E691AE><E79D83>冽<EFBFBD><E586BD>𥕦遣<F0A595A6><E981A3>葩摨羓<E691A8>蝛園★<E59C92>?
銵函<EFBFBD><EFBFBD>?
| 摮埈挾<EFBFBD>? | <EFBFBD>唳旿蝐餃<EFBFBD> | 蝥行<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|---|
| id | TEXT | PRIMARY KEY | 憿寧𤌍<EFBFBD>臭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㇎UID嚗? |
| user_id | TEXT | NOT NULL, FK | <EFBFBD><EFBFBD>撅䂿鍂<EFBFBD>弒D |
| name | TEXT | NOT NULL | 憿寧𤌍<EFBFBD>滨妍 |
| background | TEXT | NULL | <EFBFBD>𠉛弦<EFBFBD>峕艶 |
| research_type | TEXT | NULL | <EFBFBD>𠉛弦蝐餃<EFBFBD>嚗èbservational/experimental蝑㚁<E89D91> |
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <EFBFBD>𥕦遣<EFBFBD>園𡢿 |
| updated_at | TIMESTAMPTZ | NOT NULL | <EFBFBD>湔鰵<EFBFBD>園𡢿 |
| deleted_at | TIMESTAMPTZ | NULL | 頧臬<EFBFBD><EFBFBD>斗𧒄<EFBFBD>? |
Prisma Model
model Project {
id String @id @default(uuid())
userId String @map("user_id")
name String
background String?
researchType String? @map("research_type")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
conversations Conversation[]
@@index([userId])
@@index([createdAt])
@@index([deletedAt])
@@map("projects")
@@schema("aia_schema")
}
銝𡁜𦛚閫<EFBFBD><EFBFBD>
- *頧臬<EFBFBD><EFBFBD>斗㦤<EFBFBD>? - 雿輻鍂
deleted_at<EFBFBD><EFBFBD>扇<EFBFBD>𣳇膄嚗䔶<EFBFBD><EFBFBD>拍<EFBFBD><EFBFBD>𣳇膄 - 蝥扯<EFBFBD><EFBFBD>𣳇膄 - <20>𣳇膄憿寧𤌍<E5AFA7>塚<EFBFBD><E5A19A>唾<EFBFBD><E594BE><EFBFBD>笆霂苷<E99C82>鋡怨蔓<E680A8>𣳇膄
- <EFBFBD>冽<EFBFBD><EFBFBD>𠉛氖 - <20>朞<EFBFBD>
user_id摰䂿緵<EFBFBD>唳旿<EFBFBD>𠉛氖
2. conversations - 憿寧𤌍撖寡<E69296>銵?
<EFBFBD>券<EFBFBD>䈑<EFBFBD> 摮睃<E691AE>憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>AI撖寡<E69296>隡朞<E99AA1>
銵函<EFBFBD><EFBFBD>?
| 摮埈挾<EFBFBD>? | <EFBFBD>唳旿蝐餃<EFBFBD> | 蝥行<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|---|
| id | TEXT | PRIMARY KEY | 撖寡<EFBFBD><EFBFBD>臭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㇎UID嚗? |
| user_id | TEXT | NOT NULL, FK | <EFBFBD><EFBFBD>撅䂿鍂<EFBFBD>弒D |
| project_id | TEXT | NULL, FK | <EFBFBD><EFBFBD>撅鮋★<EFBFBD>埋D嚗<EFBFBD>虾<EFBFBD>㚁<EFBFBD> |
| agent_id | TEXT | NOT NULL | <EFBFBD>箄<EFBFBD>雿𨧻D |
| title | TEXT | NOT NULL | 撖寡<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
| model_name | TEXT | NOT NULL, DEFAULT 'deepseek-v3' | 雿輻鍂<EFBFBD><EFBFBD>LM璅∪<EFBFBD> |
| message_count | INTEGER | NOT NULL, DEFAULT 0 | 瘨<EFBFBD><EFBFBD><EFBFBD>圈<EFBFBD> |
| total_tokens | INTEGER | NOT NULL, DEFAULT 0 | 蝝航恣token<EFBFBD>? |
| metadata | JSONB | NULL | <EFBFBD>拙<EFBFBD><EFBFBD><EFBFBD>㺭<EFBFBD>? |
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <EFBFBD>𥕦遣<EFBFBD>園𡢿 |
| updated_at | TIMESTAMPTZ | NOT NULL | <EFBFBD>湔鰵<EFBFBD>園𡢿 |
| deleted_at | TIMESTAMPTZ | NULL | 頧臬<EFBFBD><EFBFBD>斗𧒄<EFBFBD>? |
Prisma Model
model Conversation {
id String @id @default(uuid())
userId String @map("user_id")
projectId String? @map("project_id")
agentId String @map("agent_id")
title String
modelName String @default("deepseek-v3") @map("model_name")
messageCount Int @default(0) @map("message_count")
totalTokens Int @default(0) @map("total_tokens")
metadata Json?
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
project Project? @relation(fields: [projectId], references: [id], onDelete: Cascade)
messages Message[]
@@index([userId])
@@index([projectId])
@@index([agentId])
@@index([createdAt])
@@index([deletedAt])
@@map("conversations")
@@schema("aia_schema")
}
銝𡁜𦛚閫<EFBFBD><EFBFBD>
- *憿寧𤌍<EFBFBD>唾<EFBFBD><EFBFBD>舫<EFBFBD>? -
project_id<EFBFBD>臭蛹蝛綽<EFBFBD><EFBFBD>舀<EFBFBD>憿寧𤌍<EFBFBD><EFBFBD><EFBFBD>撖寡<EFBFBD> - *霈⊥㺭<EFBFBD>典<EFBFBD>畾? -
message_count<EFBFBD>䈣total_tokens`<60>其<EFBFBD>蝏蠘恣嚗屸<E59A97>閬<EFBFBD><E996AC><EFBFBD>嗆凒<E59786>? - 璅∪<EFBFBD><EFBFBD>㗇𥋘 - <20>舀<EFBFBD>憭𡁶<E686AD>LLM璅∪<E79285>嚗Ê̌eepseek-v3/gpt-5-pro/claude-4.5蝑㚁<EFBFBD>
- *<EFBFBD>拙<EFBFBD><EFBFBD><EFBFBD>㺭<EFBFBD>? -
metadata<EFBFBD>其<EFBFBD>摮睃<EFBFBD><EFBFBD>滨蔭<EFBFBD><EFBFBD>㺭<EFBFBD><EFBFBD><EFBFBD>銝𧢲<EFBFBD>蝑?
3. messages - 撖寡<E69296>瘨<EFBFBD><E798A8>銵?
<EFBFBD>券<EFBFBD>䈑<EFBFBD> 摮睃<E691AE>撖寡<E69296>銝剔<E98A9D>瘥𤩺辺瘨<E8BEBA><E798A8>
銵函<EFBFBD><EFBFBD>?
| 摮埈挾<EFBFBD>? | <EFBFBD>唳旿蝐餃<EFBFBD> | 蝥行<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|---|
| id | TEXT | PRIMARY KEY | 瘨<EFBFBD><EFBFBD><EFBFBD>臭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㇎UID嚗? |
| conversation_id | TEXT | NOT NULL, FK | <EFBFBD><EFBFBD>撅𧼮笆霂䣺D |
| role | TEXT | NOT NULL | 閫坿𠧧嚗óser/assistant/system嚗? |
| content | TEXT | NOT NULL | 瘨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>捆 |
| model | TEXT | NULL | 雿輻鍂<EFBFBD><EFBFBD>芋<EFBFBD>页<EFBFBD>assistant瘨<EFBFBD><EFBFBD>嚗? |
| metadata | JSONB | NULL | <EFBFBD>拙<EFBFBD><EFBFBD><EFBFBD>㺭<EFBFBD>? |
| tokens | INTEGER | NULL | 瘨<EFBFBD><EFBFBD>token<EFBFBD>? |
| is_pinned | BOOLEAN | NOT NULL, DEFAULT false | <EFBFBD>臬炏蝵桅▲ |
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <EFBFBD>𥕦遣<EFBFBD>園𡢿 |
Prisma Model
model Message {
id String @id @default(uuid())
conversationId String @map("conversation_id")
role String
content String @db.Text
model String?
metadata Json?
tokens Int?
isPinned Boolean @default(false) @map("is_pinned")
createdAt DateTime @default(now()) @map("created_at")
conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)
@@index([conversationId])
@@index([createdAt])
@@index([isPinned])
@@map("messages")
@@schema("aia_schema")
}
銝𡁜𦛚閫<EFBFBD><EFBFBD>
- 閫坿𠧧蝐餃<EFBFBD> -
role<EFBFBD>箏<EFBFBD>銝槁user<EFBFBD><EFBFBD>assistant<EFBFBD>飜system` - *<EFBFBD>芾粉<EFBFBD>? - 瘨<><E798A8>銝<EFBFBD><E98A9D>血<EFBFBD>撱箔<E692B1><E7AE94>臭耨<E887AD>對<EFBFBD><E5B08D>芣<EFBFBD>
is_pinned<EFBFBD>臭耨<EFBFBD>對<EFBFBD> - 蝥扯<EFBFBD><EFBFBD>𣳇膄 - <20>𣳇膄撖寡<E69296><E5AFA1>塚<EFBFBD>瘨<EFBFBD><E798A8><EFBFBD>芸𢆡<E88AB8>𣳇膄
- 蝵桅▲<EFBFBD>蠘<EFBFBD> - <20>滩<EFBFBD>瘨<EFBFBD><E798A8><EFBFBD>舫<EFBFBD>朞<EFBFBD>
is_pinned<EFBFBD><EFBFBD>扇
4. general_conversations - <20>𡁶鍂撖寡<E69296>銵?
<EFBFBD>券<EFBFBD>䈑<EFBFBD> 摮睃<E691AE>銝滨<E98A9D>摰𡁻★<F0A181BB>桃<EFBFBD><E6A183>𡁶鍂AI撖寡<E69296>
銵函<EFBFBD><EFBFBD>?
| 摮埈挾<EFBFBD>? | <EFBFBD>唳旿蝐餃<EFBFBD> | 蝥行<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|---|
| id | TEXT | PRIMARY KEY | 撖寡<EFBFBD><EFBFBD>臭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㇎UID嚗? |
| user_id | TEXT | NOT NULL, FK | <EFBFBD><EFBFBD>撅䂿鍂<EFBFBD>弒D |
| title | TEXT | NOT NULL | 撖寡<EFBFBD><EFBFBD><EFBFBD><EFBFBD> |
| model_name | TEXT | NOT NULL, DEFAULT 'qwen-long' | 雿輻鍂<EFBFBD><EFBFBD>LM璅∪<EFBFBD> |
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <EFBFBD>𥕦遣<EFBFBD>園𡢿 |
| updated_at | TIMESTAMPTZ | NOT NULL | <EFBFBD>湔鰵<EFBFBD>園𡢿 |
| deleted_at | TIMESTAMPTZ | NULL | 頧臬<EFBFBD><EFBFBD>斗𧒄<EFBFBD>? |
Prisma Model
model GeneralConversation {
id String @id @default(uuid())
userId String @map("user_id")
title String
modelName String @default("qwen-long") @map("model_name")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
deletedAt DateTime? @map("deleted_at")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
messages GeneralMessage[]
@@index([userId])
@@index([createdAt])
@@index([updatedAt])
@@map("general_conversations")
@@schema("aia_schema")
}
銝𡁜𦛚閫<EFBFBD><EFBFBD>
- *頧駁<EFBFBD>蝥批笆霂? - 銝漤<E98A9D>閬<EFBFBD>★<EFBFBD>桀<EFBFBD><E6A180>箄<EFBFBD>雿枏<E99BBF><E69E8F>?
- *敹恍<EFBFBD>笔倮霂? - <20>其<EFBFBD><E585B6>冽<EFBFBD><E586BD><EFBFBD>葩<EFBFBD>園䔮憸睃<E686B8>敹恍<E695B9><E6818D>䰻霂?
- <EFBFBD>祉<EFBFBD>蝞∠<EFBFBD> - 銝𡡞★<F0A1A19E>桀笆霂嘥<E99C82>撘<EFBFBD>蝞∠<E89D9E>
5. general_messages - <20>𡁶鍂撖寡<E69296>瘨<EFBFBD><E798A8>銵?
<EFBFBD>券<EFBFBD>䈑<EFBFBD> 摮睃<E691AE><E79D83>𡁶鍂撖寡<E69296>銝剔<E98A9D>瘥𤩺辺瘨<E8BEBA><E798A8>
銵函<EFBFBD><EFBFBD>?
| 摮埈挾<EFBFBD>? | <EFBFBD>唳旿蝐餃<EFBFBD> | 蝥行<EFBFBD> | 霂湔<EFBFBD> |
|---|---|---|---|
| id | TEXT | PRIMARY KEY | 瘨<EFBFBD><EFBFBD><EFBFBD>臭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗㇎UID嚗? |
| conversation_id | TEXT | NOT NULL, FK | <EFBFBD><EFBFBD>撅𧼮笆霂䣺D |
| role | TEXT | NOT NULL | 閫坿𠧧嚗óser/assistant/system嚗? |
| content | TEXT | NOT NULL | 瘨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>捆 |
| metadata | JSONB | NULL | <EFBFBD>拙<EFBFBD><EFBFBD><EFBFBD>㺭<EFBFBD>? |
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <EFBFBD>𥕦遣<EFBFBD>園𡢿 |
Prisma Model
model GeneralMessage {
id String @id @default(uuid())
conversationId String @map("conversation_id")
role String
content String @db.Text
metadata Json?
createdAt DateTime @default(now()) @map("created_at")
conversation GeneralConversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)
@@index([conversationId])
@@index([createdAt])
@@map("general_messages")
@@schema("aia_schema")
}
銝𡁜𦛚閫<EFBFBD><EFBFBD>
- *蝞<EFBFBD><EFBFBD>𤥁挽霈? - <20>豢<EFBFBD>憿寧𤌍瘨<F0A48C8D><E798A8>嚗<EFBFBD>縧<EFBFBD>劐<EFBFBD>token蝏蠘恣<E8A098>𣬚蔭憿嗅<E686BF><E59785>?
- 蝥扯<EFBFBD><EFBFBD>𣳇膄 - <20>𣳇膄撖寡<E69296><E5AFA1>塚<EFBFBD>瘨<EFBFBD><E798A8><EFBFBD>芸𢆡<E88AB8>𣳇膄
銵典<EFBFBD>蝟餃㦛
erDiagram
PLATFORM_USERS ||--o{ PROJECTS : "owns"
PLATFORM_USERS ||--o{ CONVERSATIONS : "owns"
PLATFORM_USERS ||--o{ GENERAL_CONVERSATIONS : "owns"
PROJECTS ||--o{ CONVERSATIONS : "contains"
CONVERSATIONS ||--o{ MESSAGES : "contains"
GENERAL_CONVERSATIONS ||--o{ GENERAL_MESSAGES : "contains"
PLATFORM_USERS {
text id PK
text email
text password
}
PROJECTS {
text id PK
text user_id FK
text name
text research_type
timestamptz created_at
timestamptz deleted_at
}
CONVERSATIONS {
text id PK
text user_id FK
text project_id FK
text agent_id
text title
text model_name
int message_count
timestamptz created_at
}
MESSAGES {
text id PK
text conversation_id FK
text role
text content
int tokens
boolean is_pinned
timestamptz created_at
}
GENERAL_CONVERSATIONS {
text id PK
text user_id FK
text title
text model_name
timestamptz created_at
}
GENERAL_MESSAGES {
text id PK
text conversation_id FK
text role
text content
timestamptz created_at
}
頝沒chema撘閧鍂
*憭㚚睸<EFBFBD>喟頂嚗?
projects.user_id<20>?platform_schema.users.idconversations.user_id<20>?platform_schema.users.idgeneral_conversations.user_id<20>?platform_schema.users.id
*霂湔<EFBFBD>嚗? Prisma<6D>芸𢆡憭<F0A286A1><E686AD>頝沒chema憭㚚睸嚗<E79DB8><E59A97><EFBFBD>其誨<E585B6><E8AAA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>喳<EFBFBD>Schema<6D>滨<EFBFBD>
蝝W<EFBFBD>霈曇恣
銝駁睸蝝W<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>㕑”<EFBFBD><EFBFBD>id`摮埈挾<E59F88>芸𢆡<E88AB8>𥕦遣B-tree銝駁睸蝝W<E89D9D><EFBCB7>?
憭㚚睸蝝W<EFBFBD>
| 銵典<EFBFBD> | 蝝W<EFBFBD>摮埈挾 | <EFBFBD>券<EFBFBD>? |
|---|---|---|
| projects | user_id | <EFBFBD>亥砭<EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>厰★<EFBFBD>? |
| conversations | user_id | <EFBFBD>亥砭<EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>匧笆霂? |
| conversations | project_id | <EFBFBD>亥砭憿寧𤌍<EFBFBD><EFBFBD><EFBFBD>撖寡<EFBFBD> |
| conversations | agent_id | <EFBFBD>㗇惣<EFBFBD>賭<EFBFBD>餈<EFBFBD>誘撖寡<EFBFBD> |
| messages | conversation_id | <EFBFBD>亥砭撖寡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇<EFBFBD><EFBFBD>? |
| general_conversations | user_id | <EFBFBD>亥砭<EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡁶鍂撖寡<EFBFBD> |
| general_messages | conversation_id | <EFBFBD>亥砭撖寡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㗇<EFBFBD><EFBFBD>? |
<EFBFBD>園𡢿蝝W<EFBFBD>
| 銵典<EFBFBD> | 蝝W<EFBFBD>摮埈挾 | <EFBFBD>券<EFBFBD>? |
|---|---|---|
| projects | created_at | <EFBFBD>㗇𧒄<EFBFBD>湔<EFBFBD>摨誯★<EFBFBD>? |
| projects | deleted_at | 餈<EFBFBD>誘撌脣<EFBFBD><EFBFBD>日★<EFBFBD>? |
| conversations | created_at | <EFBFBD>㗇𧒄<EFBFBD>湔<EFBFBD>摨誩笆霂? |
| conversations | updated_at | <EFBFBD>㗇凒<EFBFBD>唳𧒄<EFBFBD>湔<EFBFBD>摨? |
| conversations | deleted_at | 餈<EFBFBD>誘撌脣<EFBFBD><EFBFBD>文笆霂? |
| messages | created_at | <EFBFBD>㗇𧒄<EFBFBD>湔<EFBFBD>摨𤩺<EFBFBD><EFBFBD>? |
| general_conversations | created_at | <EFBFBD>㗇𧒄<EFBFBD>湔<EFBFBD>摨誩笆霂? |
| general_conversations | updated_at | <EFBFBD>㗇凒<EFBFBD>唳𧒄<EFBFBD>湔<EFBFBD>摨? |
| general_messages | created_at | <EFBFBD>㗇𧒄<EFBFBD>湔<EFBFBD>摨𤩺<EFBFBD><EFBFBD>? |
<EFBFBD>蠘<EFBFBD>蝝W<EFBFBD>
| 銵典<EFBFBD> | 蝝W<EFBFBD>摮埈挾 | <EFBFBD>券<EFBFBD>? |
|---|---|---|
| messages | is_pinned | 敹恍<EFBFBD><EFBFBD>䰻霂Y蔭憿嗆<EFBFBD><EFBFBD>? |
<EFBFBD>唳旿蝐餃<EFBFBD>霂湔<EFBFBD>
銝駁睸蝐餃<EFBFBD>嚗関EXT vs UUID
*敶枏<EFBFBD>摰䂿緵嚗? TEXT
id TEXT PRIMARY KEY
*UUID<EFBFBD><EFBFBD><EFBFBD>嚗? Prisma @default(uuid())
id String @id @default(uuid())
*霂湔<EFBFBD>嚗?
- 摮睃<EFBFBD><EFBFBD>澆<EFBFBD>嚗𡁜<EFBFBD>蝚虫葡敶W<EFBFBD><EFBFBD><EFBFBD>UID嚗<EFBFBD><EFBFBD>
"a6ce8b46-bac6-4284-a9ae-031d636086bc"嚗? - 隡条<EFBFBD>嚗帋<EFBFBD><EFBFBD>唳<EFBFBD>隞<EFBFBD><EFBFBD><EFBFBD>澆捆嚗峕<EFBFBD><EFBFBD><EFBFBD>餈<EFBFBD>宏
- 蝝W<EFBFBD><EFBFBD>扯<EFBFBD>嚗帋<EFBFBD><EFBFBD>毺<EFBFBD>UUID蝐餃<EFBFBD><EFBFBD>詨<EFBFBD>
<EFBFBD>園𡢿蝐餃<EFBFBD>嚗関IMESTAMPTZ
<EFBFBD><EFBFBD><EFBFBD>㗇𧒄<EFBFBD>游<EFBFBD>畾萎蝙<EFBFBD>灼TIMESTAMPTZ`嚗<>蒂<EFBFBD>嗅躹<E59785><E8BAB9>𧒄<EFBFBD>湔<EFBFBD>嚗㚁<E59A97>
- <EFBFBD>芸𢆡摮睃<EFBFBD>UTC<EFBFBD>園𡢿
- <EFBFBD>舀<EFBFBD><EFBFBD>嗅躹頧祆揢
- Prisma<EFBFBD>惩<EFBFBD>銝槁DateTime`
JSONB蝐餃<EFBFBD>
<EFBFBD>券<EFBFBD>䈑<EFBFBD> 摮睃<E691AE><E79D83>拙<EFBFBD><E68B99><EFBFBD>㺭<EFBFBD>桀<EFBFBD><E6A180>滨蔭
conversations.metadatamessages.metadatageneral_messages.metadata
*隡条<EFBFBD>嚗?
- <EFBFBD>菜暑<EFBFBD><EFBFBD>㺭<EFBFBD>桃<EFBFBD><EFBFBD>?
- <EFBFBD>舀<EFBFBD>GIN蝝W<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>瘛餃<EFBFBD>嚗?
- <EFBFBD>舀<EFBFBD>JSONB<EFBFBD>滢<EFBFBD>蝚行䰻霂?
<EFBFBD>䀹凒<EFBFBD><EFBFBD>蟮
v1.0 - 2025-11-12 - <20>嘥<EFBFBD><E598A5><EFBFBD>𧋦 <20>?
*<EFBFBD>䀹凒<EFBFBD><EFBFBD>捆嚗?
- 隞𥳾public
schema餈<61>宏<EFBFBD>躬aia_schema - 5銝芾”<EFBFBD>券<EFBFBD>餈<EFBFBD>宏嚗?
- projects
- conversations
- messages
- general_conversations
- general_messages
- <EFBFBD>沌risma銝剜溶<EFBFBD>鮏@@schema("aia_schema")`<60><>倌
- <EFBFBD><EFBFBD><EFBFBD>㗇㺭<EFBFBD>?00%摰峕㟲餈<E39FB2>宏
*餈<EFBFBD>宏<EFBFBD>𡁏𧋦嚗? docs/09-<2D>嗆<EFBFBD>摰墧鴌/migration-scripts/003-migrate-aia.sql
撉諹<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD> <20>?撌脤<E6928C>霂<EFBFBD><E99C82><EFBFBD>蠘<EFBFBD>甇<EFBFBD>虜
<EFBFBD><EFBFBD> <20>詨<EFBFBD><E8A9A8><EFBFBD>﹝
- Schema<EFBFBD>𠉛氖<EFBFBD>嗆<EFBFBD>霈曇恣
- Schema餈<EFBFBD>宏摰峕<EFBFBD><EFBFBD>亙<EFBFBD>
- Prisma<EFBFBD>滨蔭摰峕<EFBFBD><EFBFBD>亙<EFBFBD>
- [敹恍<E695B9>笔<EFBFBD><E7AC94>賣<EFBFBD>霂閙𥁒<E99699>𠺖(../../../09-<2D>嗆<EFBFBD>摰墧鴌/敹恍<E695B9>笔<EFBFBD><E7AC94>賣<EFBFBD>霂閙𥁒<E99699>?md)
<EFBFBD><EFBFBD>﹝蝏湔擪<EFBFBD><EFBFBD><EFBFBD> AI<41>拇<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>堆<EFBFBD> 2025-11-12
<EFBFBD><EFBFBD>﹝<EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD> <20>?撌脣<E6928C><E884A3>𣂼僎撉諹<E69289>