- 前端 React+TypeScript (源码+构建产物) - 后端 Python FastAPI - 数据库迁移 001-015 - Docker部署配置 - 微信ClawBot API频道绑定 - 项目文档 README.md
82 lines
5.6 KiB
SQL
82 lines
5.6 KiB
SQL
-- Qihu-AIFlow 012: 幂等修复orders表遗漏列 + 确保生产环境列完整
|
|
USE aiflow;
|
|
|
|
-- ============================================================
|
|
-- 存储过程:幂等添加列
|
|
-- ============================================================
|
|
DROP PROCEDURE IF EXISTS add_col_if_missing_012;
|
|
DELIMITER $$
|
|
CREATE PROCEDURE add_col_if_missing_012()
|
|
BEGIN
|
|
-- orders 表:发票相关列(可能在生产环境缺失)
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'orders' AND COLUMN_NAME = 'paid_at') THEN
|
|
ALTER TABLE orders ADD COLUMN paid_at DATETIME DEFAULT NULL COMMENT '支付时间';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'orders' AND COLUMN_NAME = 'receipt_number') THEN
|
|
ALTER TABLE orders ADD COLUMN receipt_number VARCHAR(100) DEFAULT NULL COMMENT '发票凭证号码';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'orders' AND COLUMN_NAME = 'receipt_type') THEN
|
|
ALTER TABLE orders ADD COLUMN receipt_type VARCHAR(20) DEFAULT NULL COMMENT '发票类型';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'orders' AND COLUMN_NAME = 'receipt_title') THEN
|
|
ALTER TABLE orders ADD COLUMN receipt_title VARCHAR(200) DEFAULT NULL COMMENT '发票抬头';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'orders' AND COLUMN_NAME = 'receipt_tax_number') THEN
|
|
ALTER TABLE orders ADD COLUMN receipt_tax_number VARCHAR(50) DEFAULT NULL COMMENT '发票税号';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'orders' AND COLUMN_NAME = 'receipt_issued_at') THEN
|
|
ALTER TABLE orders ADD COLUMN receipt_issued_at DATETIME DEFAULT NULL COMMENT '发票开具时间';
|
|
END IF;
|
|
|
|
-- 确保 storage_overview 需要的关键表有正确结构
|
|
-- knowledge_documents 的 file_size 列
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'knowledge_documents' AND COLUMN_NAME = 'file_size') THEN
|
|
ALTER TABLE knowledge_documents ADD COLUMN file_size BIGINT DEFAULT 0 COMMENT '文件大小(字节)';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'knowledge_documents' AND COLUMN_NAME = 'file_path') THEN
|
|
ALTER TABLE knowledge_documents ADD COLUMN file_path VARCHAR(500) DEFAULT NULL COMMENT '文件存储路径';
|
|
END IF;
|
|
|
|
-- messages 表的 used_skills 列
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'messages' AND COLUMN_NAME = 'used_skills') THEN
|
|
ALTER TABLE messages ADD COLUMN used_skills JSON DEFAULT NULL COMMENT '该轮对话调用的进化技能名列表';
|
|
END IF;
|
|
|
|
-- evolution_trajectories 补充列
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'evolution_trajectories' AND COLUMN_NAME = 'error_msg') THEN
|
|
ALTER TABLE evolution_trajectories ADD COLUMN error_msg VARCHAR(500) DEFAULT NULL COMMENT '轨迹处理失败的错误信息';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'evolution_trajectories' AND COLUMN_NAME = 'retry_count') THEN
|
|
ALTER TABLE evolution_trajectories ADD COLUMN retry_count INT DEFAULT 0 COMMENT '失败重试次数';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'evolution_trajectories' AND COLUMN_NAME = 'tasks_extracted') THEN
|
|
ALTER TABLE evolution_trajectories ADD COLUMN tasks_extracted INT DEFAULT 0 COMMENT '拆分的AtomTask数量';
|
|
END IF;
|
|
|
|
-- user_evolution_config 补充列
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'user_evolution_config' AND COLUMN_NAME = 'watcher_error') THEN
|
|
ALTER TABLE user_evolution_config ADD COLUMN watcher_error VARCHAR(500) DEFAULT NULL COMMENT 'watcher异常信息';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'user_evolution_config' AND COLUMN_NAME = 'pipeline_status') THEN
|
|
ALTER TABLE user_evolution_config ADD COLUMN pipeline_status VARCHAR(20) DEFAULT 'idle' COMMENT '流水线状态';
|
|
END IF;
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'user_evolution_config' AND COLUMN_NAME = 'pipeline_processed') THEN
|
|
ALTER TABLE user_evolution_config ADD COLUMN pipeline_processed INT DEFAULT 0 COMMENT '已处理轨迹数';
|
|
END IF;
|
|
|
|
-- models 表的 is_default 列
|
|
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'aiflow' AND TABLE_NAME = 'models' AND COLUMN_NAME = 'is_default') THEN
|
|
ALTER TABLE models ADD COLUMN is_default BOOLEAN DEFAULT FALSE COMMENT '全局默认模型';
|
|
END IF;
|
|
END$$
|
|
DELIMITER ;
|
|
CALL add_col_if_missing_012();
|
|
DROP PROCEDURE IF EXISTS add_col_if_missing_012;
|
|
|
|
-- ============================================================
|
|
-- 补初始化默认模型(如果无任何默认模型)
|
|
-- ============================================================
|
|
UPDATE models SET is_default = TRUE WHERE name = 'gpt-4o' AND is_default = FALSE
|
|
AND NOT EXISTS (SELECT 1 FROM (SELECT 1 FROM models WHERE is_default = TRUE) AS t);
|
|
|