- 新增 llmusage_history 表:定时备份已记账(use_date<today)的历史记录 - 新增 llmusage_accounting_failed 表:记录记账失败详情,支持检索 - 新增 backup_accounted_llmusage() 函数:备份+清理历史数据 - 新增 get_failed_accounting_records() 函数:按条件检索失败记录 - 更新 llm_accoung_failed():同时写入失败表记录 - 新增 failed_accounting.ui 页面和 failed_accounting_list.dspy API - 新增 llmusage CRUD API (create/update/delete) - 新增表索引优化查询性能 - 更新 setup_llmage_perms.sh 添加新端点权限 - 生成生产迁移SQL: scripts/migrate_llmusage_history.sql
87 lines
3.9 KiB
SQL
87 lines
3.9 KiB
SQL
-- ============================================================
|
|
-- llmage 模块数据库迁移脚本
|
|
-- 新增: llmusage_history (使用历史表) + llmusage_accounting_failed (记账失败表)
|
|
-- 日期: 2026-05-24
|
|
-- 执行前请备份数据库!
|
|
-- ============================================================
|
|
|
|
-- 1. 创建 llmusage_history 表 (已记账记录的历史归档)
|
|
CREATE TABLE IF NOT EXISTS llmusage_history
|
|
(
|
|
`id` VARCHAR(32) NOT NULL COMMENT 'id',
|
|
`llmid` VARCHAR(32) COMMENT '模型id',
|
|
`use_date` date COMMENT '使用日期',
|
|
`use_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '使用时间',
|
|
`userid` VARCHAR(32) COMMENT '用户id',
|
|
`usages` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '使用信息',
|
|
`ioinfo` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '交互内容',
|
|
`transno` VARCHAR(32) COMMENT '交易号',
|
|
`responsed_seconds` double(18,3) COMMENT '响应时间',
|
|
`finish_seconds` double(18,3) COMMENT '结束时间',
|
|
`status` VARCHAR(32) COMMENT '状态',
|
|
`taskid` VARCHAR(256) COMMENT '任务号',
|
|
`amount` double(18,5) COMMENT '交易金额',
|
|
`cost` double(18,5) COMMENT '交易成本',
|
|
`userorgid` VARCHAR(32) COMMENT '用户机构id',
|
|
`ownerid` VARCHAR(32) COMMENT '模型机构id',
|
|
`accounting_status` VARCHAR(32) COMMENT '记账状态',
|
|
`backup_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '备份时间',
|
|
PRIMARY KEY(id)
|
|
)
|
|
CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_unicode_ci
|
|
engine=innodb
|
|
COMMENT '模型使用历史记录';
|
|
|
|
CREATE INDEX idx_lh_use_date ON llmusage_history(use_date);
|
|
CREATE INDEX idx_lh_userorgid ON llmusage_history(userorgid);
|
|
CREATE INDEX idx_lh_llmid ON llmusage_history(llmid);
|
|
CREATE INDEX idx_lh_backup_time ON llmusage_history(backup_time);
|
|
|
|
-- 2. 创建 llmusage_accounting_failed 表 (记账失败记录)
|
|
CREATE TABLE IF NOT EXISTS llmusage_accounting_failed
|
|
(
|
|
`id` VARCHAR(32) NOT NULL COMMENT 'id',
|
|
`llmusageid` VARCHAR(32) COMMENT '使用记录id',
|
|
`llmid` VARCHAR(32) COMMENT '模型id',
|
|
`userid` VARCHAR(32) COMMENT '用户id',
|
|
`userorgid` VARCHAR(32) COMMENT '用户机构id',
|
|
`use_date` date COMMENT '使用日期',
|
|
`use_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '使用时间',
|
|
`amount` double(18,5) COMMENT '交易金额',
|
|
`cost` double(18,5) COMMENT '交易成本',
|
|
`failed_reason` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '失败原因',
|
|
`failed_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '失败时间',
|
|
`retry_count` int COMMENT '重试次数',
|
|
`handled` VARCHAR(1) DEFAULT '0' COMMENT '是否已处理',
|
|
`handled_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '处理时间',
|
|
`handled_note` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '处理备注',
|
|
PRIMARY KEY(id)
|
|
)
|
|
CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_unicode_ci
|
|
engine=innodb
|
|
COMMENT '记账失败记录';
|
|
|
|
CREATE INDEX idx_laf_use_date ON llmusage_accounting_failed(use_date);
|
|
CREATE INDEX idx_laf_userorgid ON llmusage_accounting_failed(userorgid);
|
|
CREATE INDEX idx_laf_llmid ON llmusage_accounting_failed(llmid);
|
|
CREATE INDEX idx_laf_handled ON llmusage_accounting_failed(handled);
|
|
CREATE INDEX idx_laf_failed_time ON llmusage_accounting_failed(failed_time);
|
|
|
|
-- ============================================================
|
|
-- 验证步骤(执行后运行):
|
|
-- 1. 确认表创建成功:
|
|
-- SHOW TABLES LIKE 'llmusage_%';
|
|
-- 2. 确认索引创建成功:
|
|
-- SHOW INDEX FROM llmusage_history;
|
|
-- SHOW INDEX FROM llmusage_accounting_failed;
|
|
-- 3. 确认表结构正确:
|
|
-- DESCRIBE llmusage_history;
|
|
-- DESCRIBE llmusage_accounting_failed;
|
|
-- ============================================================
|
|
-- 回滚步骤(如需撤销):
|
|
-- DROP TABLE IF EXISTS llmusage_history;
|
|
-- DROP TABLE IF EXISTS llmusage_accounting_failed;
|
|
-- ============================================================
|