Files
AIclinicalresearch/docs/03-业务模块/AIA-AI智能问答/02-技术设计/01-数据库设计.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

14 KiB
Raw Blame History

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>

  1. <EFBFBD><EFBFBD>
  2. Schema靽⊥<EFBFBD>
  3. <EFBFBD>唳旿摨栞”霈曇恣
  4. 銵典<EFBFBD>蝟餃㦛
  5. <EFBFBD>霈曇恣
  6. <EFBFBD>唳旿蝐餃<EFBFBD>霂湔<EFBFBD>
  7. <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>

  1. 憿寧𤌍蝞∠<EFBFBD> - <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. <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>

  1. *頧臬<EFBFBD><EFBFBD>斗㦤<EFBFBD>? - 雿輻鍂deleted_at<EFBFBD><EFBFBD><EFBFBD>𣳇膄嚗䔶<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𣳇膄
  2. 蝥扯<EFBFBD><EFBFBD>𣳇膄 - <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>

銵函<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>

  1. *憿寧𤌍<EFBFBD><EFBFBD><EFBFBD><EFBFBD>? - project_id<EFBFBD>臭蛹蝛綽<EFBFBD><EFBFBD><EFBFBD>憿寧𤌍<EFBFBD><EFBFBD><EFBFBD>撖寡<EFBFBD>
  2. *霈⊥㺭<EFBFBD><EFBFBD>畾? - message_count<EFBFBD>䈣total_tokens`<60><EFBFBD>蝏蠘恣嚗屸<E59A97><EFBFBD><E996AC><EFBFBD>嗆凒<E59786>?
  3. <EFBFBD><EFBFBD>㗇𥋘 - <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>

銵函<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>

  1. 閫坿𠧧蝐餃<EFBFBD> - role<EFBFBD><EFBFBD>銝槁user<EFBFBD><EFBFBD>assistant<EFBFBD>飜system`
  2. *<EFBFBD>芾粉<EFBFBD>? - 瘨<><E798A8><EFBFBD><E98A9D><EFBFBD>撱箔<E692B1><E7AE94>臭耨<E887AD><EFBFBD><E5B08D><EFBFBD>is_pinned<EFBFBD>臭耨<EFBFBD><EFBFBD>
  3. 蝥扯<EFBFBD><EFBFBD>𣳇膄 - <20>𣳇膄撖寡<E69296><E5AFA1><EFBFBD><EFBFBD><E798A8><EFBFBD>芸𢆡<E88AB8>𣳇膄
  4. 蝵桅▲<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>

  1. *頧駁<EFBFBD>蝥批笆霂? - 銝漤<E98A9D><EFBFBD><EFBFBD><EFBFBD><E6A180><EFBFBD>雿枏<E99BBF><E69E8F>?
  2. *敹恍<EFBFBD>笔倮霂? - <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>

銵函<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>

  1. *<EFBFBD><EFBFBD>𤥁挽霈? - <20><EFBFBD>憿寧𤌍瘨<F0A48C8D><E798A8><EFBFBD><EFBFBD><EFBFBD>token蝏蠘恣<E8A098>𣬚蔭憿嗅<E686BF><E59785>?
  2. 蝥扯<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.id
  • conversations.user_id <20>?platform_schema.users.id
  • general_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>


<EFBFBD>霈曇恣

銝駁睸蝝<EFBFBD>

<EFBFBD><EFBFBD><EFBFBD>㕑”<EFBFBD><EFBFBD>id`摮埈挾<E59F88>芸𢆡<E88AB8>𥕦遣B-tree銝駁睸蝝<E89D9D><EFBCB7>?

憭㚚睸蝝<EFBFBD>

銵典<EFBFBD> <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>園𡢿蝝<EFBFBD>

銵典<EFBFBD> <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><EFBFBD>

銵典<EFBFBD> <EFBFBD>摮埈挾 <EFBFBD><EFBFBD>?
messages is_pinned 敹恍<EFBFBD><EFBFBD>䰻霂蔭憿嗆<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>蝚虫葡敶<EFBFBD><EFBFBD><EFBFBD>UID嚗<EFBFBD><EFBFBD>"a6ce8b46-bac6-4284-a9ae-031d636086bc"嚗?
  • 隡条<EFBFBD>嚗帋<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>澆捆嚗峕<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
  • <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.metadata
  • messages.metadata
  • general_messages.metadata

*隡条<EFBFBD>嚗?

  • <EFBFBD>菜暑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
  • <EFBFBD><EFBFBD>GIN蝝<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>捆嚗?

  1. 隞𥳾public schema餈<61><EFBFBD>躬aia_schema
  2. 5銝芾”<EFBFBD><EFBFBD><EFBFBD>宏嚗?
    • projects
    • conversations
    • messages
    • general_conversations
    • general_messages
  3. <EFBFBD>沌risma銝剜溶<EFBFBD>鮏@@schema("aia_schema")`<60><>
  4. <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>


<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>