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%)
540 lines
14 KiB
Markdown
540 lines
14 KiB
Markdown
# AIA - AI<41>箄<EFBFBD><E7AE84>桃<EFBFBD>璅∪<E79285>嚗𡁏㺭<F0A1818F>桀<EFBFBD>霈曇恣
|
||
|
||
> **<2A><>𧋦嚗?* v1.0
|
||
> **<2A>湔鰵<E6B994>園𡢿嚗?* 2025-11-12
|
||
> **<2A>唳旿摨廍chema嚗?* `aia_schema`
|
||
> **<2A>嗆<EFBFBD><E59786><EFBFBD>** <20>?撌脣<E6928C><E884A3>賢僎餈<E5838E>宏
|
||
|
||
---
|
||
|
||
## <20><> <20>桀<EFBFBD>
|
||
|
||
1. [璅∪<EFBFBD>璁<EFBFBD>膩](#璅∪<E79285>璁<EFBFBD>膩)
|
||
2. [Schema靽⊥<EFBFBD>](#schema靽⊥<E99DBD>)
|
||
3. [<EFBFBD>唳旿摨栞”霈曇恣](#<23>唳旿摨栞”霈曇恣)
|
||
4. [銵典<EFBFBD>蝟餃㦛](#銵典<E98AB5>蝟餃㦛)
|
||
5. [蝝W<EFBFBD>霈曇恣](#蝝W<E89D9D>霈曇恣)
|
||
6. [<EFBFBD>唳旿蝐餃<EFBFBD>霂湔<EFBFBD>](#<23>唳旿蝐餃<E89D90>霂湔<E99C82>)
|
||
7. [<EFBFBD>䀹凒<EFBFBD><EFBFBD>蟮](#<23>䀹凒<E480B9><E58792>蟮)
|
||
|
||
---
|
||
|
||
## 璅∪<E79285>璁<EFBFBD>膩
|
||
|
||
### <20>蠘<EFBFBD>摰帋<E691B0>
|
||
|
||
**AIA嚗㇁I Intelligent Assistant嚗? AI<41>箄<EFBFBD><E7AE84>桃<EFBFBD>璅∪<E79285>**<EFBFBD>臬像<EFBFBD>啁<EFBFBD><EFBFBD>詨<EFBFBD>撖寡<EFBFBD>撘閙<EFBFBD>嚗峕<EFBFBD>靘𨥈<EFBFBD>
|
||
|
||
1. **憿寧𤌍蝞∠<E89D9E>** - <20>𠉛弦憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>撱箏<E692B1>蝞∠<E89D9E>
|
||
2. **<EFBFBD>箄<EFBFBD>撖寡<EFBFBD>** - <20>箔<EFBFBD>LLM<4C><4D><EFBFBD>銝𡁻<E98A9D><F0A181BB>笔笆霂?
|
||
3. **<EFBFBD>𡁶鍂<EFBFBD>桃<EFBFBD>** - 銝滨<E98A9D>摰𡁻★<F0A181BB>桃<EFBFBD><E6A183>𡁶鍂AI撖寡<E69296>
|
||
4. **瘨<><E798A8>蝞∠<E89D9E>** - 撖寡<E69296><E5AFA1><EFBFBD>蟮霈啣<E99C88><E595A3>峕<EFBFBD>蝝?
|
||
|
||
### <20>詨<EFBFBD>銝𡁜𦛚<F0A1819C>箸艶
|
||
|
||
- <20>冽<EFBFBD><E586BD>𥕦遣銝游<E98A9D><E6B8B8>𠉛弦憿寧𤌍
|
||
- <20>券★<E588B8>桀<EFBFBD>銝垾I餈𥡝<E9A488>銝㮖<E98A9D>撖寡<E69296>
|
||
- 雿輻鍂<E8BCBB>𡁶鍂撖寡<E69296><E5AFA1>蠘<EFBFBD>敹恍<E695B9>笔倮霂?
|
||
- <20>亦<EFBFBD><E4BAA6>𣬚恣<F0A3AC9A><E681A3>笆霂嘥<E99C82><E598A5>?
|
||
|
||
---
|
||
|
||
## Schema靽⊥<E99DBD>
|
||
|
||
### Schema<6D>滨妍
|
||
```sql
|
||
aia_schema
|
||
```
|
||
|
||
### <20>𥕦遣霂剖蘂
|
||
```sql
|
||
CREATE SCHEMA IF NOT EXISTS aia_schema;
|
||
GRANT ALL ON SCHEMA aia_schema TO aiclinical_admin;
|
||
```
|
||
|
||
### <20>唳旿餈<E697BF>宏
|
||
- **餈<>宏<EFBFBD>園𡢿嚗?* 2025-11-12
|
||
- **皞𠩐chema嚗?* public
|
||
- **餈<>宏<EFBFBD>𡁏𧋦嚗?* `docs/09-<2D>嗆<EFBFBD>摰墧鴌/migration-scripts/003-migrate-aia.sql`
|
||
- **<2A>唳旿摰峕㟲<E5B395>改<EFBFBD>** <20>?100%餈<>宏<EFBFBD>𣂼<EFBFBD>
|
||
|
||
---
|
||
|
||
## <20>唳旿摨栞”霈曇恣
|
||
|
||
### 銵典<E98AB5>銵?
|
||
|
||
| 銵典<E98AB5> | <20>券<EFBFBD>?| 銵峕㺭嚗<E3BAAD>摯霈∴<E99C88> | <20>嗆<EFBFBD>?|
|
||
|------|------|------------|------|
|
||
| `projects` | <20>𠉛弦憿寧𤌍 | 1-100/<2F>冽<EFBFBD> | <20>?撌脤<E6928C>蝵?|
|
||
| `conversations` | 憿寧𤌍撖寡<E69296> | 10-500/憿寧𤌍 | <20>?撌脤<E6928C>蝵?|
|
||
| `messages` | 撖寡<E69296>瘨<EFBFBD><E798A8> | 10-1000/撖寡<E69296> | <20>?撌脤<E6928C>蝵?|
|
||
| `general_conversations` | <20>𡁶鍂撖寡<E69296> | 10-100/<2F>冽<EFBFBD> | <20>?撌脤<E6928C>蝵?|
|
||
| `general_messages` | <20>𡁶鍂撖寡<E69296>瘨<EFBFBD><E798A8> | 10-1000/撖寡<E69296> | <20>?撌脤<E6928C>蝵?|
|
||
|
||
**<EFBFBD>餉恣嚗?* 5銝芾”
|
||
|
||
---
|
||
|
||
### 1. projects - <20>𠉛弦憿寧𤌍銵?
|
||
|
||
**<EFBFBD>券<EFBFBD>䈑<EFBFBD>** 摮睃<E691AE><E79D83>冽<EFBFBD><E586BD>𥕦遣<F0A595A6><E981A3>葩摨羓<E691A8>蝛園★<E59C92>?
|
||
|
||
#### 銵函<E98AB5><E587BD>?
|
||
|
||
| 摮埈挾<E59F88>?| <20>唳旿蝐餃<E89D90> | 蝥行<E89DA5> | 霂湔<E99C82> |
|
||
|--------|---------|------|------|
|
||
| id | TEXT | PRIMARY KEY | 憿寧𤌍<E5AFA7>臭<EFBFBD><E887AD><EFBFBD><EFBFBD>嚗㇎UID嚗?|
|
||
| user_id | TEXT | NOT NULL, FK | <20><>撅䂿鍂<E482BF>弒D |
|
||
| name | TEXT | NOT NULL | 憿寧𤌍<E5AFA7>滨妍 |
|
||
| background | TEXT | NULL | <20>𠉛弦<F0A0899B>峕艶 |
|
||
| research_type | TEXT | NULL | <20>𠉛弦蝐餃<E89D90>嚗èbservational/experimental蝑㚁<E89D91> |
|
||
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <20>𥕦遣<F0A595A6>園𡢿 |
|
||
| updated_at | TIMESTAMPTZ | NOT NULL | <20>湔鰵<E6B994>園𡢿 |
|
||
| deleted_at | TIMESTAMPTZ | NULL | 頧臬<E9A0A7><E887AC>斗𧒄<E69697>?|
|
||
|
||
#### Prisma Model
|
||
|
||
```prisma
|
||
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")
|
||
}
|
||
```
|
||
|
||
#### 銝𡁜𦛚閫<F0A69B9A><E996AB>
|
||
|
||
1. **頧臬<E9A0A7><E887AC>斗㦤<E69697>?* - 雿輻鍂`deleted_at`<EFBFBD><EFBFBD>扇<EFBFBD>𣳇膄嚗䔶<EFBFBD><EFBFBD>拍<EFBFBD><EFBFBD>𣳇膄
|
||
2. **蝥扯<E89DA5><E689AF>𣳇膄** - <20>𣳇膄憿寧𤌍<E5AFA7>塚<EFBFBD><E5A19A>唾<EFBFBD><E594BE><EFBFBD>笆霂苷<E99C82>鋡怨蔓<E680A8>𣳇膄
|
||
3. **<EFBFBD>冽<EFBFBD><EFBFBD>𠉛氖** - <20>朞<EFBFBD>`user_id`摰䂿緵<EFBFBD>唳旿<EFBFBD>𠉛氖
|
||
|
||
---
|
||
|
||
### 2. conversations - 憿寧𤌍撖寡<E69296>銵?
|
||
|
||
**<EFBFBD>券<EFBFBD>䈑<EFBFBD>** 摮睃<E691AE>憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>AI撖寡<E69296>隡朞<E99AA1>
|
||
|
||
#### 銵函<E98AB5><E587BD>?
|
||
|
||
| 摮埈挾<E59F88>?| <20>唳旿蝐餃<E89D90> | 蝥行<E89DA5> | 霂湔<E99C82> |
|
||
|--------|---------|------|------|
|
||
| id | TEXT | PRIMARY KEY | 撖寡<E69296><E5AFA1>臭<EFBFBD><E887AD><EFBFBD><EFBFBD>嚗㇎UID嚗?|
|
||
| user_id | TEXT | NOT NULL, FK | <20><>撅䂿鍂<E482BF>弒D |
|
||
| project_id | TEXT | NULL, FK | <20><>撅鮋★<E9AE8B>埋D嚗<44>虾<EFBFBD>㚁<EFBFBD> |
|
||
| agent_id | TEXT | NOT NULL | <20>箄<EFBFBD>雿𨧻D |
|
||
| title | TEXT | NOT NULL | 撖寡<E69296><E5AFA1><EFBFBD><EFBFBD> |
|
||
| model_name | TEXT | NOT NULL, DEFAULT 'deepseek-v3' | 雿輻鍂<E8BCBB><E98D82>LM璅∪<E79285> |
|
||
| message_count | INTEGER | NOT NULL, DEFAULT 0 | 瘨<><E798A8><EFBFBD>圈<EFBFBD> |
|
||
| total_tokens | INTEGER | NOT NULL, DEFAULT 0 | 蝝航恣token<65>?|
|
||
| metadata | JSONB | NULL | <20>拙<EFBFBD><E68B99><EFBFBD>㺭<EFBFBD>?|
|
||
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <20>𥕦遣<F0A595A6>園𡢿 |
|
||
| updated_at | TIMESTAMPTZ | NOT NULL | <20>湔鰵<E6B994>園𡢿 |
|
||
| deleted_at | TIMESTAMPTZ | NULL | 頧臬<E9A0A7><E887AC>斗𧒄<E69697>?|
|
||
|
||
#### Prisma Model
|
||
|
||
```prisma
|
||
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")
|
||
}
|
||
```
|
||
|
||
#### 銝𡁜𦛚閫<F0A69B9A><E996AB>
|
||
|
||
1. **憿寧𤌍<E5AFA7>唾<EFBFBD><E594BE>舫<EFBFBD>?* - `project_id`<EFBFBD>臭蛹蝛綽<EFBFBD><EFBFBD>舀<EFBFBD>憿寧𤌍<EFBFBD><EFBFBD><EFBFBD>撖寡<EFBFBD>
|
||
2. **霈⊥㺭<E28AA5>典<EFBFBD>畾?* - `message_count`<EFBFBD>䈣total_tokens`<60>其<EFBFBD>蝏蠘恣嚗屸<E59A97>閬<EFBFBD><E996AC><EFBFBD>嗆凒<E59786>?
|
||
3. **璅∪<E79285><E288AA>㗇𥋘** - <20>舀<EFBFBD>憭𡁶<E686AD>LLM璅∪<E79285>嚗Ê̌eepseek-v3/gpt-5-pro/claude-4.5蝑㚁<EFBFBD>
|
||
4. **<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>
|
||
|
||
#### 銵函<E98AB5><E587BD>?
|
||
|
||
| 摮埈挾<E59F88>?| <20>唳旿蝐餃<E89D90> | 蝥行<E89DA5> | 霂湔<E99C82> |
|
||
|--------|---------|------|------|
|
||
| id | TEXT | PRIMARY KEY | 瘨<><E798A8><EFBFBD>臭<EFBFBD><E887AD><EFBFBD><EFBFBD>嚗㇎UID嚗?|
|
||
| conversation_id | TEXT | NOT NULL, FK | <20><>撅𧼮笆霂䣺D |
|
||
| role | TEXT | NOT NULL | 閫坿𠧧嚗óser/assistant/system嚗?|
|
||
| content | TEXT | NOT NULL | 瘨<><E798A8><EFBFBD><EFBFBD>捆 |
|
||
| model | TEXT | NULL | 雿輻鍂<E8BCBB><E98D82>芋<EFBFBD>页<EFBFBD>assistant瘨<74><E798A8>嚗?|
|
||
| metadata | JSONB | NULL | <20>拙<EFBFBD><E68B99><EFBFBD>㺭<EFBFBD>?|
|
||
| tokens | INTEGER | NULL | 瘨<><E798A8>token<65>?|
|
||
| is_pinned | BOOLEAN | NOT NULL, DEFAULT false | <20>臬炏蝵桅▲ |
|
||
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <20>𥕦遣<F0A595A6>園𡢿 |
|
||
|
||
#### Prisma Model
|
||
|
||
```prisma
|
||
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")
|
||
}
|
||
```
|
||
|
||
#### 銝𡁜𦛚閫<F0A69B9A><E996AB>
|
||
|
||
1. **閫坿𠧧蝐餃<E89D90>** - `role`<EFBFBD>箏<EFBFBD>銝槁user`<60><>assistant`<EFBFBD>飜system`
|
||
2. **<EFBFBD>芾粉<EFBFBD>?* - 瘨<><E798A8>銝<EFBFBD><E98A9D>血<EFBFBD>撱箔<E692B1><E7AE94>臭耨<E887AD>對<EFBFBD><E5B08D>芣<EFBFBD>`is_pinned`<EFBFBD>臭耨<EFBFBD>對<EFBFBD>
|
||
3. **蝥扯<E89DA5><E689AF>𣳇膄** - <20>𣳇膄撖寡<E69296><E5AFA1>塚<EFBFBD>瘨<EFBFBD><E798A8><EFBFBD>芸𢆡<E88AB8>𣳇膄
|
||
4. **蝵桅▲<E6A185>蠘<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>
|
||
|
||
#### 銵函<E98AB5><E587BD>?
|
||
|
||
| 摮埈挾<E59F88>?| <20>唳旿蝐餃<E89D90> | 蝥行<E89DA5> | 霂湔<E99C82> |
|
||
|--------|---------|------|------|
|
||
| id | TEXT | PRIMARY KEY | 撖寡<E69296><E5AFA1>臭<EFBFBD><E887AD><EFBFBD><EFBFBD>嚗㇎UID嚗?|
|
||
| user_id | TEXT | NOT NULL, FK | <20><>撅䂿鍂<E482BF>弒D |
|
||
| title | TEXT | NOT NULL | 撖寡<E69296><E5AFA1><EFBFBD><EFBFBD> |
|
||
| model_name | TEXT | NOT NULL, DEFAULT 'qwen-long' | 雿輻鍂<E8BCBB><E98D82>LM璅∪<E79285> |
|
||
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <20>𥕦遣<F0A595A6>園𡢿 |
|
||
| updated_at | TIMESTAMPTZ | NOT NULL | <20>湔鰵<E6B994>園𡢿 |
|
||
| deleted_at | TIMESTAMPTZ | NULL | 頧臬<E9A0A7><E887AC>斗𧒄<E69697>?|
|
||
|
||
#### Prisma Model
|
||
|
||
```prisma
|
||
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")
|
||
}
|
||
```
|
||
|
||
#### 銝𡁜𦛚閫<F0A69B9A><E996AB>
|
||
|
||
1. **頧駁<E9A0A7>蝥批笆霂?* - 銝漤<E98A9D>閬<EFBFBD>★<EFBFBD>桀<EFBFBD><E6A180>箄<EFBFBD>雿枏<E99BBF><E69E8F>?
|
||
2. **敹恍<E695B9>笔倮霂?* - <20>其<EFBFBD><E585B6>冽<EFBFBD><E586BD><EFBFBD>葩<EFBFBD>園䔮憸睃<E686B8>敹恍<E695B9><E6818D>䰻霂?
|
||
3. **<EFBFBD>祉<EFBFBD>蝞∠<EFBFBD>** - 銝𡡞★<F0A1A19E>桀笆霂嘥<E99C82>撘<EFBFBD>蝞∠<E89D9E>
|
||
|
||
---
|
||
|
||
### 5. general_messages - <20>𡁶鍂撖寡<E69296>瘨<EFBFBD><E798A8>銵?
|
||
|
||
**<EFBFBD>券<EFBFBD>䈑<EFBFBD>** 摮睃<E691AE><E79D83>𡁶鍂撖寡<E69296>銝剔<E98A9D>瘥𤩺辺瘨<E8BEBA><E798A8>
|
||
|
||
#### 銵函<E98AB5><E587BD>?
|
||
|
||
| 摮埈挾<E59F88>?| <20>唳旿蝐餃<E89D90> | 蝥行<E89DA5> | 霂湔<E99C82> |
|
||
|--------|---------|------|------|
|
||
| id | TEXT | PRIMARY KEY | 瘨<><E798A8><EFBFBD>臭<EFBFBD><E887AD><EFBFBD><EFBFBD>嚗㇎UID嚗?|
|
||
| conversation_id | TEXT | NOT NULL, FK | <20><>撅𧼮笆霂䣺D |
|
||
| role | TEXT | NOT NULL | 閫坿𠧧嚗óser/assistant/system嚗?|
|
||
| content | TEXT | NOT NULL | 瘨<><E798A8><EFBFBD><EFBFBD>捆 |
|
||
| metadata | JSONB | NULL | <20>拙<EFBFBD><E68B99><EFBFBD>㺭<EFBFBD>?|
|
||
| created_at | TIMESTAMPTZ | NOT NULL, DEFAULT now() | <20>𥕦遣<F0A595A6>園𡢿 |
|
||
|
||
#### Prisma Model
|
||
|
||
```prisma
|
||
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")
|
||
}
|
||
```
|
||
|
||
#### 銝𡁜𦛚閫<F0A69B9A><E996AB>
|
||
|
||
1. **蝞<><E89D9E>𤥁挽霈?* - <20>豢<EFBFBD>憿寧𤌍瘨<F0A48C8D><E798A8>嚗<EFBFBD>縧<EFBFBD>劐<EFBFBD>token蝏蠘恣<E8A098>𣬚蔭憿嗅<E686BF><E59785>?
|
||
2. **蝥扯<E89DA5><E689AF>𣳇膄** - <20>𣳇膄撖寡<E69296><E5AFA1>塚<EFBFBD>瘨<EFBFBD><E798A8><EFBFBD>芸𢆡<E88AB8>𣳇膄
|
||
|
||
---
|
||
|
||
## 銵典<E98AB5>蝟餃㦛
|
||
|
||
```mermaid
|
||
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撘閧鍂
|
||
|
||
**憭㚚睸<E39A9A>喟頂嚗?*
|
||
- `projects.user_id` <20>?`platform_schema.users.id`
|
||
- `conversations.user_id` <20>?`platform_schema.users.id`
|
||
- `general_conversations.user_id` <20>?`platform_schema.users.id`
|
||
|
||
**霂湔<E99C82>嚗?* Prisma<6D>芸𢆡憭<F0A286A1><E686AD>頝沒chema憭㚚睸嚗<E79DB8><E59A97><EFBFBD>其誨<E585B6><E8AAA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>喳<EFBFBD>Schema<6D>滨<EFBFBD>
|
||
|
||
---
|
||
|
||
## 蝝W<E89D9D>霈曇恣
|
||
|
||
### 銝駁睸蝝W<E89D9D>
|
||
<EFBFBD><EFBFBD><EFBFBD>㕑”<EFBFBD><EFBFBD>id`摮埈挾<E59F88>芸𢆡<E88AB8>𥕦遣B-tree銝駁睸蝝W<E89D9D><EFBCB7>?
|
||
|
||
### 憭㚚睸蝝W<E89D9D>
|
||
|
||
| 銵典<E98AB5> | 蝝W<E89D9D>摮埈挾 | <20>券<EFBFBD>?|
|
||
|------|---------|------|
|
||
| projects | user_id | <20>亥砭<E4BAA5>冽<EFBFBD><E586BD><EFBFBD><EFBFBD><EFBFBD>厰★<E58EB0>?|
|
||
| conversations | user_id | <20>亥砭<E4BAA5>冽<EFBFBD><E586BD><EFBFBD><EFBFBD><EFBFBD>匧笆霂?|
|
||
| conversations | project_id | <20>亥砭憿寧𤌍<E5AFA7><F0A48C8D><EFBFBD>撖寡<E69296> |
|
||
| conversations | agent_id | <20>㗇惣<E39787>賭<EFBFBD>餈<EFBFBD>誘撖寡<E69296> |
|
||
| messages | conversation_id | <20>亥砭撖寡<E69296><E5AFA1><EFBFBD><EFBFBD><EFBFBD>㗇<EFBFBD><E39787>?|
|
||
| general_conversations | user_id | <20>亥砭<E4BAA5>冽<EFBFBD><E586BD><EFBFBD><EFBFBD>𡁶鍂撖寡<E69296> |
|
||
| general_messages | conversation_id | <20>亥砭撖寡<E69296><E5AFA1><EFBFBD><EFBFBD><EFBFBD>㗇<EFBFBD><E39787>?|
|
||
|
||
### <20>園𡢿蝝W<E89D9D>
|
||
|
||
| 銵典<E98AB5> | 蝝W<E89D9D>摮埈挾 | <20>券<EFBFBD>?|
|
||
|------|---------|------|
|
||
| projects | created_at | <20>㗇𧒄<E39787>湔<EFBFBD>摨誯★<E8AAAF>?|
|
||
| projects | deleted_at | 餈<>誘撌脣<E6928C><E884A3>日★<E697A5>?|
|
||
| conversations | created_at | <20>㗇𧒄<E39787>湔<EFBFBD>摨誩笆霂?|
|
||
| conversations | updated_at | <20>㗇凒<E39787>唳𧒄<E594B3>湔<EFBFBD>摨?|
|
||
| conversations | deleted_at | 餈<>誘撌脣<E6928C><E884A3>文笆霂?|
|
||
| messages | created_at | <20>㗇𧒄<E39787>湔<EFBFBD>摨𤩺<E691A8><F0A4A9BA>?|
|
||
| general_conversations | created_at | <20>㗇𧒄<E39787>湔<EFBFBD>摨誩笆霂?|
|
||
| general_conversations | updated_at | <20>㗇凒<E39787>唳𧒄<E594B3>湔<EFBFBD>摨?|
|
||
| general_messages | created_at | <20>㗇𧒄<E39787>湔<EFBFBD>摨𤩺<E691A8><F0A4A9BA>?|
|
||
|
||
### <20>蠘<EFBFBD>蝝W<E89D9D>
|
||
|
||
| 銵典<E98AB5> | 蝝W<E89D9D>摮埈挾 | <20>券<EFBFBD>?|
|
||
|------|---------|------|
|
||
| messages | is_pinned | 敹恍<E695B9><E6818D>䰻霂Y蔭憿嗆<E686BF><E59786>?|
|
||
|
||
---
|
||
|
||
## <20>唳旿蝐餃<E89D90>霂湔<E99C82>
|
||
|
||
### 銝駁睸蝐餃<E89D90>嚗関EXT vs UUID
|
||
|
||
**敶枏<E695B6>摰䂿緵嚗?* TEXT
|
||
```sql
|
||
id TEXT PRIMARY KEY
|
||
```
|
||
|
||
**UUID<49><44><EFBFBD>嚗?* Prisma `@default(uuid())`
|
||
```prisma
|
||
id String @id @default(uuid())
|
||
```
|
||
|
||
**霂湔<E99C82>嚗?*
|
||
- 摮睃<E691AE><E79D83>澆<EFBFBD>嚗𡁜<E59A97>蝚虫葡敶W<E695B6><EFBCB7><EFBFBD>UID嚗<44><E59A97>`"a6ce8b46-bac6-4284-a9ae-031d636086bc"`嚗?
|
||
- 隡条<E99AA1>嚗帋<E59A97><E5B88B>唳<EFBFBD>隞<EFBFBD><E99A9E><EFBFBD>澆捆嚗峕<E59A97><E5B395><EFBFBD>餈<EFBFBD>宏
|
||
- 蝝W<E89D9D><EFBCB7>扯<EFBFBD>嚗帋<E59A97><E5B88B>毺<EFBFBD>UUID蝐餃<E89D90><E9A483>詨<EFBFBD>
|
||
|
||
### <20>園𡢿蝐餃<E89D90>嚗関IMESTAMPTZ
|
||
|
||
**<2A><><EFBFBD>㗇𧒄<E39787>游<EFBFBD>畾萎蝙<E8908E>灼TIMESTAMPTZ`嚗<EFBFBD>蒂<EFBFBD>嗅躹<EFBFBD><EFBFBD>𧒄<EFBFBD>湔<EFBFBD>嚗㚁<EFBFBD>**
|
||
- <20>芸𢆡摮睃<E691AE>UTC<54>園𡢿
|
||
- <20>舀<EFBFBD><E88880>嗅躹頧祆揢
|
||
- Prisma<6D>惩<EFBFBD>銝槁DateTime`
|
||
|
||
### JSONB蝐餃<E89D90>
|
||
|
||
**<EFBFBD>券<EFBFBD>䈑<EFBFBD>** 摮睃<E691AE><E79D83>拙<EFBFBD><E68B99><EFBFBD>㺭<EFBFBD>桀<EFBFBD><E6A180>滨蔭
|
||
- `conversations.metadata`
|
||
- `messages.metadata`
|
||
- `general_messages.metadata`
|
||
|
||
**隡条<E99AA1>嚗?*
|
||
- <20>菜暑<E88F9C><E69A91>㺭<EFBFBD>桃<EFBFBD><E6A183>?
|
||
- <20>舀<EFBFBD>GIN蝝W<E89D9D>嚗<EFBFBD><E59A97><EFBFBD><EFBFBD>瘛餃<E7989B>嚗?
|
||
- <20>舀<EFBFBD>JSONB<4E>滢<EFBFBD>蝚行䰻霂?
|
||
|
||
---
|
||
|
||
## <20>䀹凒<E480B9><E58792>蟮
|
||
|
||
### v1.0 - 2025-11-12 - <20>嘥<EFBFBD><E598A5><EFBFBD>𧋦 <20>?
|
||
|
||
**<EFBFBD>䀹凒<EFBFBD><EFBFBD>捆嚗?*
|
||
1. 隞𥳾public` schema餈<61>宏<EFBFBD>躬aia_schema`
|
||
2. 5銝芾”<E88ABE>券<EFBFBD>餈<EFBFBD>宏嚗?
|
||
- projects
|
||
- conversations
|
||
- messages
|
||
- general_conversations
|
||
- general_messages
|
||
3. <20>沌risma銝剜溶<E5899C>鮏@@schema("aia_schema")`<60><>倌
|
||
4. <20><><EFBFBD>㗇㺭<E39787>?00%摰峕㟲餈<E39FB2>宏
|
||
|
||
**餈<>宏<EFBFBD>𡁏𧋦嚗?* `docs/09-<2D>嗆<EFBFBD>摰墧鴌/migration-scripts/003-migrate-aia.sql`
|
||
|
||
**撉諹<E69289><E8ABB9>嗆<EFBFBD><E59786><EFBFBD>** <20>?撌脤<E6928C>霂<EFBFBD><E99C82><EFBFBD>蠘<EFBFBD>甇<EFBFBD>虜
|
||
|
||
---
|
||
|
||
## <20><> <20>詨<EFBFBD><E8A9A8><EFBFBD>﹝
|
||
|
||
- [Schema<EFBFBD>𠉛氖<EFBFBD>嗆<EFBFBD>霈曇恣](../../../09-<2D>嗆<EFBFBD>摰墧鴌/01-Schema<6D>𠉛氖<F0A0899B>嗆<EFBFBD>霈曇恣嚗?0銝迎<E98A9D>.md)
|
||
- [Schema餈<EFBFBD>宏摰峕<EFBFBD><EFBFBD>亙<EFBFBD>](../../../09-<2D>嗆<EFBFBD>摰墧鴌/Schema餈<61>宏摰峕<E691B0><E5B395>亙<EFBFBD>.md)
|
||
- [Prisma<EFBFBD>滨蔭摰峕<EFBFBD><EFBFBD>亙<EFBFBD>](../../../09-<2D>嗆<EFBFBD>摰墧鴌/Prisma<6D>滨蔭摰峕<E691B0><E5B395>亙<EFBFBD>.md)
|
||
- [敹恍<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>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|