-- Phase 4.1: 应用市场安检 + 版本化 + 绿标 -- 幂等:仅当列/表不存在时才创建(run.sh 每次重启重跑全部迁移) SET @db = 'aiflow'; SET @tbl = 'market_apps'; -- version SET @col = 'version'; SET @exists = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=@db AND table_name=@tbl AND column_name=@col); SET @sql = IF(@exists=0, "ALTER TABLE market_apps ADD COLUMN version VARCHAR(20) NOT NULL DEFAULT '1.0.0' COMMENT '应用版本号(4.1)'", 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- security_scan SET @col = 'security_scan'; SET @exists = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=@db AND table_name=@tbl AND column_name=@col); SET @sql = IF(@exists=0, 'ALTER TABLE market_apps ADD COLUMN security_scan JSON NULL COMMENT ''安全扫描结果(4.1)''', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- dependencies SET @col = 'dependencies'; SET @exists = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=@db AND table_name=@tbl AND column_name=@col); SET @sql = IF(@exists=0, 'ALTER TABLE market_apps ADD COLUMN dependencies JSON NULL COMMENT ''依赖声明(4.1)''', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- verified SET @col = 'verified'; SET @exists = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=@db AND table_name=@tbl AND column_name=@col); SET @sql = IF(@exists=0, 'ALTER TABLE market_apps ADD COLUMN verified TINYINT(1) NOT NULL DEFAULT 0 COMMENT ''绿标/官方安检通过(4.1)''', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 版本快照表 CREATE TABLE IF NOT EXISTS market_app_versions ( id VARCHAR(36) NOT NULL, app_id VARCHAR(36) NOT NULL, version VARCHAR(20) NOT NULL, type VARCHAR(10) NOT NULL, config JSON NULL, security_scan JSON NULL, dependencies JSON NULL, created_by VARCHAR(36) NULL, created_at DATETIME NULL, PRIMARY KEY (id), KEY idx_mav_app (app_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='应用版本快照(4.1)';