-- ================================================================= -- V2: AI任务与积分消费系统 数据库结构定义 -- 时间: 2025-10-19 -- 描述: 为集成第三方AI模型和积分商业化,新增相关表结构。 -- 此脚本为增量更新,不修改现有表,保证向前兼容。 -- ================================================================= -- 1. AI生成任务表 (核心) -- 作用: 持久化用户的每一次AI生成请求,追踪其完整的生命周期。 -- ================================================================= CREATE TABLE IF NOT EXISTS `ai_task` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `task_no` varchar(64) UNIQUE NOT NULL COMMENT '任务编号 (系统生成的唯一ID)', `user_id` bigint NOT NULL COMMENT '关联的用户ID', `model_name` varchar(64) NOT NULL COMMENT '请求的模型名称 (如: sora_image)', `task_type` varchar(32) NOT NULL COMMENT '任务类型 (image/video)', `prompt` text NOT NULL COMMENT '用户提交的提示词', `status` varchar(32) NOT NULL DEFAULT 'created' COMMENT '任务状态 (created, queued, processing, completed, failed, cancelled)', `progress` int DEFAULT 0 COMMENT '生成进度百分比 (0-100)', `progress_message` varchar(255) DEFAULT NULL COMMENT '当前进度文本描述', `points_frozen` int NOT NULL COMMENT '本次任务冻结的积分', `points_consumed` int DEFAULT 0 COMMENT '任务成功后实际消耗的积分', `result_url` varchar(512) DEFAULT NULL COMMENT '生成结果的URL', `error_message` text DEFAULT NULL COMMENT '任务失败时的错误信息', `queue_time` datetime DEFAULT NULL COMMENT '进入队列的时间', `start_time` datetime DEFAULT NULL COMMENT '开始处理的时间', `complete_time` datetime DEFAULT NULL COMMENT '任务完成或失败的时间', `expire_time` datetime DEFAULT NULL COMMENT '结果URL的过期时间 (根据第三方API策略设定)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '任务创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', `is_deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标识', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_no` (`task_no`), KEY `idx_user_status` (`user_id`, `status`), KEY `idx_status_time` (`status`, `create_time`), FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI生成任务表'; -- ================================================================= -- 2. 积分消费配置表 -- 作用: 管理员可在此配置不同AI模型的积分价格,实现动态调价。 -- ================================================================= CREATE TABLE IF NOT EXISTS `points_config` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `model_name` varchar(64) UNIQUE NOT NULL COMMENT '模型名称 (如: sora_image)', `points_cost` int NOT NULL COMMENT '调用一次消耗的积分', `description` varchar(255) DEFAULT NULL COMMENT '模型描述', `is_enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否启用 (0:禁用, 1:启用)', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分消费配置表'; -- ================================================================= -- 3. 积分消费记录表 -- 作用: 提供完整的积分变动审计日志,便于追踪和对账。 -- ================================================================= CREATE TABLE IF NOT EXISTS `points_consumption_log` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` bigint NOT NULL COMMENT '关联的用户ID', `task_no` varchar(64) DEFAULT NULL COMMENT '关联的AI任务编号', `change_type` varchar(32) NOT NULL COMMENT '变动类型 (consume:消费, refund:退款, admin_adjust:管理员调整)', `change_amount` int NOT NULL COMMENT '变动积分数量 (正数表示增加,负数表示减少)', `balance_before` int NOT NULL COMMENT '变动前积分余额', `balance_after` int NOT NULL COMMENT '变动后积分余额', `description` varchar(255) DEFAULT NULL COMMENT '变动描述', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', PRIMARY KEY (`id`), KEY `idx_user_id_type` (`user_id`, `change_type`), FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分消费记录表'; -- ================================================================= -- 4. 系统配置表 -- 作用: 存储可由管理员在后台动态调整的系统级参数。 -- ================================================================= CREATE TABLE IF NOT EXISTS `system_config` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `config_key` varchar(64) UNIQUE NOT NULL COMMENT '配置键 (如: ai.queue.max_concurrent)', `config_value` varchar(512) NOT NULL COMMENT '配置值', `description` varchar(255) DEFAULT NULL COMMENT '配置说明', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表'; -- ================================================================= -- 初始化默认配置数据 -- 作用: 插入一些基础配置,保证系统首次启动时功能正常。 -- ================================================================= -- 初始化系统配置 INSERT INTO `system_config` (`config_key`, `config_value`, `description`) VALUES ('ai.queue.max_concurrent', '50', '每个AI模型的最大并发处理数'), ('ai.queue.max_user_concurrent', '3', '单个用户的最大并发任务数'), ('ai.task.timeout_minutes', '10', '任务处理超时时间(分钟)'), ('ai.task.max_retry', '2', '任务失败后的最大自动重试次数') ON DUPLICATE KEY UPDATE `config_value` = VALUES(`config_value`); -- 初始化图片模型定价 INSERT INTO `points_config` (`model_name`, `points_cost`, `description`, `is_enabled`) VALUES ('sora_image', 11, 'Sora高质量图片生成', 1), ('gpt-4o-image', 11, 'GPT-4o图片生成', 1) ON DUPLICATE KEY UPDATE `points_cost` = VALUES(`points_cost`); -- 初始化视频模型定价 INSERT INTO `points_config` (`model_name`, `points_cost`, `description`, `is_enabled`) VALUES ('sora_video2', 160, 'Sora视频生成 (竖屏10秒)', 1), ('sora_video2-landscape', 160, 'Sora视频生成 (横屏10秒)', 1), ('sora_video2-15s', 260, 'Sora视频生成 (竖屏15秒)', 1), ('sora_video2-landscape-15s', 260, 'Sora视频生成 (横屏15秒)', 1), ('sora-2-pro-all', 420, 'Sora Pro高清视频', 1) ON DUPLICATE KEY UPDATE `points_cost` = VALUES(`points_cost`); -- ================================================================= -- V2脚本结束 -- =================================================================