-- AIFlow 增值服务改造 - 数据库迁移脚本 -- 日期: 2026-05-27 -- 说明: 增加自定义服务支持、修改 value_added_services 表类型枚举 USE aiflow; -- 1. 创建 custom_service_requests 表(先创建新表,不依赖后续的ALTER) CREATE TABLE IF NOT EXISTS custom_service_requests ( id VARCHAR(36) PRIMARY KEY, user_id VARCHAR(36) NOT NULL, service_id VARCHAR(36) NOT NULL, request_type VARCHAR(20) NOT NULL COMMENT 'data_custom / private_project / platform_proxy', title VARCHAR(200) NOT NULL, description TEXT DEFAULT NULL, requirements JSON DEFAULT NULL COMMENT '需求详情JSON', status ENUM('pending', 'processing', 'completed', 'rejected') NOT NULL DEFAULT 'pending', assigned_agent_id VARCHAR(36) DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_csr_user (user_id), INDEX idx_csr_service (service_id), INDEX idx_csr_type (request_type), INDEX idx_csr_status (status), FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (service_id) REFERENCES value_added_services(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- 2. 尝试修改 value_added_services 的 type 列(忽略错误 - 可能已修改过) -- 使用存储过程实现幂等:检查当前枚举值,如果已包含新值则跳过 SET @dbname = DATABASE(); SET @tablename = 'value_added_services'; SET @columnname = 'type'; -- 检查当前type列的枚举定义是否已经包含新值 SET @needs_alter = ( SELECT IF( (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = @columnname AND COLUMN_TYPE LIKE '%app_custom%') > 0, 0, 1 ) ); SET @alter_sql = IF(@needs_alter = 1, 'ALTER TABLE value_added_services MODIFY COLUMN type ENUM(''app_custom'', ''platform_proxy'', ''data_custom'', ''private_project'') NOT NULL', 'SELECT ''type column already migrated'' AS msg' ); PREPARE stmt FROM @alter_sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 3. 新增 features 字段(JSON格式) SET @sql_features = ( SELECT IF( (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = 'features') > 0, 'SELECT ''Column features already exists'' AS msg', 'ALTER TABLE value_added_services ADD COLUMN features JSON DEFAULT NULL AFTER description' ) ); PREPARE stmt FROM @sql_features; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 4. 新增 assigned_agent_id 字段 SET @sql_agent = ( SELECT IF( (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @dbname AND TABLE_NAME = @tablename AND COLUMN_NAME = 'assigned_agent_id') > 0, 'SELECT ''Column assigned_agent_id already exists'' AS msg', 'ALTER TABLE value_added_services ADD COLUMN assigned_agent_id VARCHAR(36) DEFAULT NULL AFTER status' ) ); PREPARE stmt FROM @sql_agent; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 5. 初始化四大类增值服务数据(幂等) INSERT IGNORE INTO value_added_services (id, name, description, features, price, type, status, assigned_agent_id) VALUES ('svc-app-custom', '应用定制服务', '根据您的业务需求,定制开发专属的AI应用。选择Skills/Agent/MCP类型,自动创建对应对话窗口,后台为您配置专属工作Agent。', '["Skills定制", "Agent定制", "MCP定制", "专属工作Agent", "一对一服务"]', 2999.00, 'app_custom', 'active', NULL), ('svc-platform-proxy', '平台代理申请', '申请成为AIFlow平台的子平台代理,获取独立的运营空间和管理权限,拓展您的业务版图。', '["独立子平台", "品牌定制", "用户管理", "运营数据分析", "官方技术支持"]', 0.00, 'platform_proxy', 'active', NULL), ('svc-data-custom', '数据定制服务', '提供专业的数据采集、清洗、标注和分析服务,为您的AI模型提供高质量训练数据。', '["数据采集", "数据清洗", "数据标注", "数据分析", "定制报告"]', 0.00, 'data_custom', 'active', NULL), ('svc-private-project', '私有化项目服务', '为企业提供AIFlow平台整体私有化部署方案,包括环境搭建、数据迁移、安全配置等全方位服务。', '["私有化部署", "数据迁移", "安全配置", "定制开发", "7x24运维支持"]', 0.00, 'private_project', 'active', NULL);