pipeline-llm/mysql.ddl.sql

137 lines
8.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- pipeline-llm 模块数据表8 张,全部 llm_ 前缀pipeline 库)
-- 手写幂等 DDLIF NOT EXISTS + 内联索引),由宿主 scripts/create_tables.py 执行
-- 金额用 DECIMAL对账精度时间用 datetime
CREATE TABLE IF NOT EXISTS llm_vendor (
`id` varchar(32) NOT NULL comment '主键ID',
`name` varchar(100) NOT NULL comment '供应商名称',
`protocol` varchar(20) NOT NULL DEFAULT 'openai_compat' comment '协议类型',
`endpoints` text comment '端点目录(JSON): [{region,base_url,proxy,timeout,note}]',
`description` text comment '描述',
`status` varchar(20) NOT NULL DEFAULT 'active' comment '状态',
`org_id` varchar(32) NOT NULL DEFAULT '0' comment '所属机构',
`created_at` datetime NOT NULL DEFAULT current_timestamp() comment '创建时间',
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() comment '更新时间',
PRIMARY KEY (`id`),
KEY `idx_llm_vendor_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='模型供应商';
CREATE TABLE IF NOT EXISTS llm_account (
`id` varchar(32) NOT NULL comment '主键ID',
`vendor_id` varchar(32) NOT NULL comment '供应商ID',
`name` varchar(100) NOT NULL comment '账号名称',
`api_key` varchar(500) comment 'API密钥(AES加密)',
`endpoint_ids` text comment '选用端点索引列表(JSON)',
`balance` decimal(14,4) NOT NULL DEFAULT 0 comment '余额',
`total_recharge` decimal(14,4) NOT NULL DEFAULT 0 comment '累计充值',
`status` varchar(20) NOT NULL DEFAULT 'active' comment '状态',
`org_id` varchar(32) NOT NULL DEFAULT '0' comment '所属机构',
`created_at` datetime NOT NULL DEFAULT current_timestamp() comment '创建时间',
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() comment '更新时间',
PRIMARY KEY (`id`),
KEY `idx_llm_account_vendor` (`vendor_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='供应商账号(钱包)';
CREATE TABLE IF NOT EXISTS llm_model (
`id` varchar(32) NOT NULL comment '主键ID',
`vendor_id` varchar(32) NOT NULL comment '供应商ID',
`account_id` varchar(32) comment '默认账号ID',
`name` varchar(100) NOT NULL comment '模型注册名(平台唯一)',
`vendor_model_id` varchar(100) comment '供应商侧模型名',
`capability` varchar(20) NOT NULL DEFAULT 't2t' comment '能力类型',
`sync_mode` varchar(10) NOT NULL DEFAULT 'sync' comment '同步性',
`profile_id` varchar(32) comment '适配模板ID',
`query_profile_ids` text comment '后续步骤模板链(JSON数组,异步模型提交后顺序执行:查询/下载)',
`ppid` varchar(32) comment '定价项目ID(pricing_program)',
`price_input` decimal(12,6) NOT NULL DEFAULT 0 comment '输入单价(元/千token)',
`price_output` decimal(12,6) NOT NULL DEFAULT 0 comment '输出单价(元/千token)',
`cost_input` decimal(12,6) NOT NULL DEFAULT 0 comment '输入成本(元/千token)',
`cost_output` decimal(12,6) NOT NULL DEFAULT 0 comment '输出成本(元/千token)',
`default_params` text comment '默认参数(JSON)',
`status` varchar(20) NOT NULL DEFAULT 'active' comment '状态',
`description` text comment '描述',
`org_id` varchar(32) NOT NULL DEFAULT '0' comment '所属机构',
`created_at` datetime NOT NULL DEFAULT current_timestamp() comment '创建时间',
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() comment '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_llm_model_name` (`name`),
KEY `idx_llm_model_vendor` (`vendor_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='模型注册';
CREATE TABLE IF NOT EXISTS llm_api_profile (
`id` varchar(32) NOT NULL comment '主键ID',
`name` varchar(100) NOT NULL comment '模板名称',
`protocol` varchar(20) NOT NULL comment '协议类型',
`capability` varchar(20) NOT NULL DEFAULT 't2t' comment '能力类型',
`path` varchar(200) comment '请求路径(相对端点base_url,如/chat/completions)',
`headers` text comment '请求头(JSON,含认证头模板)',
`request_template` text comment '请求模板(Jinja2)',
`response_template` text comment '响应模板(Jinja2)',
`param_schema` text comment '参数Schema(bricks input_fields)',
`status` varchar(20) NOT NULL DEFAULT 'active' comment '状态',
`created_at` datetime NOT NULL DEFAULT current_timestamp() comment '创建时间',
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() comment '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='适配模板(协议x能力形态去重)';
CREATE TABLE IF NOT EXISTS llm_org_policy (
`id` varchar(32) NOT NULL comment '主键ID',
`org_id` varchar(32) NOT NULL comment '机构ID',
`primary_model_id` varchar(32) comment '主模型ID',
`backup_model_ids` text comment '备模型ID列表(JSON)',
`endpoint_pref` varchar(20) NOT NULL DEFAULT 'any' comment '端点偏好',
`status` varchar(20) NOT NULL DEFAULT 'active' comment '状态',
`created_at` datetime NOT NULL DEFAULT current_timestamp() comment '创建时间',
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() comment '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_llm_org_policy_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='组织模型容错策略';
CREATE TABLE IF NOT EXISTS llm_org_quota (
`id` varchar(32) NOT NULL comment '主键ID',
`org_id` varchar(32) NOT NULL comment '机构ID',
`balance` decimal(14,4) NOT NULL DEFAULT 0 comment '组织池余额',
`total_recharge` decimal(14,4) NOT NULL DEFAULT 0 comment '累计充值',
`rate_limit` int NOT NULL DEFAULT 0 comment '组织QPM上限(0=不限)',
`status` varchar(20) NOT NULL DEFAULT 'active' comment '状态',
`created_at` datetime NOT NULL DEFAULT current_timestamp() comment '创建时间',
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() comment '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_llm_org_quota_org` (`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='组织限额限流';
CREATE TABLE IF NOT EXISTS llm_user_quota (
`id` varchar(32) NOT NULL comment '主键ID',
`user_id` varchar(32) NOT NULL comment '用户ID',
`org_id` varchar(32) NOT NULL comment '所属机构',
`quota_limit` decimal(14,4) NOT NULL DEFAULT 0 comment '个人额度上限(0=不限)',
`quota_used` decimal(14,4) NOT NULL DEFAULT 0 comment '个人已用',
`rate_limit` int NOT NULL DEFAULT 0 comment '个人QPM上限(0=不限)',
`status` varchar(20) NOT NULL DEFAULT 'active' comment '状态',
`created_at` datetime NOT NULL DEFAULT current_timestamp() comment '创建时间',
`updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() comment '更新时间',
PRIMARY KEY (`id`),
KEY `idx_llm_user_quota_user` (`user_id`,`org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='个人限额限流';
CREATE TABLE IF NOT EXISTS llm_usage (
`id` varchar(32) NOT NULL comment '主键ID',
`org_id` varchar(32) comment '机构ID',
`user_id` varchar(32) comment '用户ID',
`model_id` varchar(32) comment '模型ID',
`account_id` varchar(32) comment '账号ID',
`endpoint_region` varchar(20) comment '端点区域',
`req_tokens` int NOT NULL DEFAULT 0 comment '请求token',
`resp_tokens` int NOT NULL DEFAULT 0 comment '响应token',
`cost` decimal(12,6) NOT NULL DEFAULT 0 comment '成本金额(账号侧)',
`charge` decimal(12,6) NOT NULL DEFAULT 0 comment '消费金额(组织池侧)',
`ppid` varchar(32) comment '定价项目ID',
`task_ref` varchar(100) comment '调用来源',
`status` varchar(20) NOT NULL DEFAULT 'ok' comment '状态(ok/failed/recharge)',
`note` varchar(200) comment '备注/原因',
`created_at` datetime NOT NULL DEFAULT current_timestamp() comment '创建时间',
PRIMARY KEY (`id`),
KEY `idx_llm_usage_org` (`org_id`,`created_at`),
KEY `idx_llm_usage_model` (`model_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci comment='用量流水(双维度记账)';