feat(admin): LLM config, knowledge base, and WeCom AI binding
CI / verify (pull_request) Has been cancelled
CI / verify (pull_request) Has been cancelled
Add owner-scoped model API settings, uploadable knowledge bases, and WeCom bot AI/KB wiring with OpenAI-compatible URL normalization. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -352,24 +352,92 @@ model SystemConfig {
|
||||
|
||||
/// 企业微信智能机器人(HQ 可创建多实例,长连接)
|
||||
model WecomBot {
|
||||
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
|
||||
name String @db.VarChar(64)
|
||||
role String @db.VarChar(32)
|
||||
botId String @unique @map("bot_id") @db.VarChar(128)
|
||||
secret String @db.VarChar(256)
|
||||
avatarUrl String? @map("avatar_url") @db.VarChar(512)
|
||||
welcome String? @db.VarChar(1024)
|
||||
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
|
||||
name String @db.VarChar(64)
|
||||
role String @db.VarChar(32)
|
||||
botId String @unique @map("bot_id") @db.VarChar(128)
|
||||
secret String @db.VarChar(256)
|
||||
avatarUrl String? @map("avatar_url") @db.VarChar(512)
|
||||
welcome String? @db.VarChar(1024)
|
||||
/// JSON 字符串数组,如 ["ticket.create","user.view_sms"]
|
||||
permissions String @db.Text
|
||||
enabled Boolean @default(true)
|
||||
sortOrder Int @default(0) @map("sort_order")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.DateTime(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.DateTime(3)
|
||||
permissions String @db.Text
|
||||
/// 未匹配指令时是否调用语言模型
|
||||
aiEnabled Boolean @default(false) @map("ai_enabled")
|
||||
llmConfigId BigInt? @map("llm_config_id") @db.UnsignedBigInt
|
||||
knowledgeBaseId BigInt? @map("knowledge_base_id") @db.UnsignedBigInt
|
||||
enabled Boolean @default(true)
|
||||
sortOrder Int @default(0) @map("sort_order")
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.DateTime(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.DateTime(3)
|
||||
|
||||
llmConfig LlmApiConfig? @relation(fields: [llmConfigId], references: [id], onDelete: SetNull)
|
||||
knowledgeBase KnowledgeBase? @relation(fields: [knowledgeBaseId], references: [id], onDelete: SetNull)
|
||||
|
||||
@@index([enabled, sortOrder])
|
||||
@@index([llmConfigId])
|
||||
@@index([knowledgeBaseId])
|
||||
@@map("wecom_bot")
|
||||
}
|
||||
|
||||
/// HQ 语言模型 API 配置(非超管仅可见/可开关自己创建的)
|
||||
model LlmApiConfig {
|
||||
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
|
||||
name String @db.VarChar(64)
|
||||
provider String @db.VarChar(32)
|
||||
baseUrl String @map("base_url") @db.VarChar(512)
|
||||
apiKey String @map("api_key") @db.VarChar(512)
|
||||
modelName String @map("model_name") @db.VarChar(128)
|
||||
temperature Decimal? @db.Decimal(3, 2)
|
||||
maxTokens Int? @map("max_tokens")
|
||||
systemPrompt String? @map("system_prompt") @db.Text
|
||||
enabled Boolean @default(true)
|
||||
createdByHqAccountId BigInt @map("created_by_hq_account_id") @db.UnsignedBigInt
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.DateTime(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.DateTime(3)
|
||||
|
||||
wecomBots WecomBot[]
|
||||
|
||||
@@index([createdByHqAccountId, enabled])
|
||||
@@map("llm_api_config")
|
||||
}
|
||||
|
||||
/// HQ 知识库
|
||||
model KnowledgeBase {
|
||||
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
|
||||
name String @db.VarChar(128)
|
||||
description String? @db.VarChar(512)
|
||||
enabled Boolean @default(true)
|
||||
createdByHqAccountId BigInt @map("created_by_hq_account_id") @db.UnsignedBigInt
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.DateTime(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.DateTime(3)
|
||||
|
||||
documents KnowledgeDocument[]
|
||||
wecomBots WecomBot[]
|
||||
|
||||
@@index([createdByHqAccountId, enabled])
|
||||
@@map("knowledge_base")
|
||||
}
|
||||
|
||||
model KnowledgeDocument {
|
||||
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
|
||||
knowledgeBaseId BigInt @map("knowledge_base_id") @db.UnsignedBigInt
|
||||
title String @db.VarChar(256)
|
||||
fileName String? @map("file_name") @db.VarChar(256)
|
||||
fileUrl String? @map("file_url") @db.VarChar(1024)
|
||||
mimeType String? @map("mime_type") @db.VarChar(128)
|
||||
sizeBytes Int? @map("size_bytes")
|
||||
contentText String? @map("content_text") @db.LongText
|
||||
status String @default("READY") @db.VarChar(16)
|
||||
errorMessage String? @map("error_message") @db.VarChar(512)
|
||||
createdAt DateTime @default(now()) @map("created_at") @db.DateTime(3)
|
||||
updatedAt DateTime @updatedAt @map("updated_at") @db.DateTime(3)
|
||||
|
||||
knowledgeBase KnowledgeBase @relation(fields: [knowledgeBaseId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([knowledgeBaseId])
|
||||
@@map("knowledge_document")
|
||||
}
|
||||
|
||||
model MockSmsCode {
|
||||
id BigInt @id @default(autoincrement()) @db.UnsignedBigInt
|
||||
phone String @db.VarChar(20)
|
||||
|
||||
Reference in New Issue
Block a user