- 新增 /api/mcp (Streamable HTTP) 与 41 个工具: 项目/看板列/任务/清单/打卡; - 新增 McpToken 模型与迁移, DB 仅存 SHA-256 哈希, token 绑定用户; - 新增 /api/mcp-tokens 增删改查, 支持独立命名 (如 R1); - 「我的」页新增 AI 接入 (MCP) 区块: 地址复制/新建/一次性展示/删除; - 补充 docs/MCP.md 与样式
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
-- AI 接入 (MCP): 个人授权 token, 与用户绑定, 独立命名
|
||||
CREATE TABLE "McpToken" (
|
||||
"id" SERIAL NOT NULL,
|
||||
"userId" INTEGER NOT NULL,
|
||||
"name" VARCHAR(32) NOT NULL,
|
||||
"prefix" VARCHAR(16) NOT NULL,
|
||||
"tokenHash" VARCHAR(64) NOT NULL,
|
||||
"lastUsedAt" TIMESTAMP(3),
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "McpToken_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "McpToken_tokenHash_key" ON "McpToken"("tokenHash");
|
||||
CREATE UNIQUE INDEX "McpToken_userId_name_key" ON "McpToken"("userId", "name");
|
||||
CREATE INDEX "McpToken_userId_idx" ON "McpToken"("userId");
|
||||
|
||||
ALTER TABLE "McpToken" ADD CONSTRAINT "McpToken_userId_fkey"
|
||||
FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
+22
-1
@@ -32,6 +32,9 @@ model User {
|
||||
assignedTasks Task[] @relation("TaskAssignee")
|
||||
createdTasks Task[] @relation("TaskCreator")
|
||||
taskMembers TaskMember[]
|
||||
|
||||
// AI 接入 (MCP): 每人可创建多个具名授权 token
|
||||
mcpTokens McpToken[]
|
||||
}
|
||||
|
||||
model Article {
|
||||
@@ -459,4 +462,22 @@ model TaskTag {
|
||||
name String @db.VarChar(20)
|
||||
|
||||
@@index([taskId])
|
||||
}
|
||||
}
|
||||
|
||||
// ==================== AI 接入 (MCP) ====================
|
||||
// 个人授权 token: 与用户绑定, 可独立命名 (如 R1), 每个 token 拥有该用户全部业务权限.
|
||||
// 安全: 数据库只存 SHA-256 哈希, 明文仅在创建时返回一次; 前缀用于界面辨识.
|
||||
model McpToken {
|
||||
id Int @id @default(autoincrement())
|
||||
userId Int
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
name String @db.VarChar(32)
|
||||
prefix String @db.VarChar(16)
|
||||
tokenHash String @unique @db.VarChar(64)
|
||||
lastUsedAt DateTime?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@unique([userId, name])
|
||||
@@index([userId])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user