云
7 小时以前 95ae0c83d2aa58d86b4039e3f7f16ee93afb8f00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
-- AI 模型能力字段 + 每类型每能力唯一启用,可重复执行。
-- capability 与 type 一起构成「启用唯一」分组:同一 type + capability 下只允许一个模型启用。
-- 老数据按模型标识自动判定:含 vl 的对话模型视为视觉能力,其余为文本能力。
 
SET @col_exists = (SELECT COUNT(*) FROM information_schema.COLUMNS
                   WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'ai_model' AND COLUMN_NAME = 'capability');
SET @sql = IF(@col_exists = 0,
    'ALTER TABLE ai_model ADD COLUMN capability VARCHAR(20) NOT NULL DEFAULT ''text'' COMMENT ''模型能力:text-文本,vision-视觉'' AFTER type',
    'SELECT 1');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
 
UPDATE ai_model
SET capability = 'vision'
WHERE type = 1
  AND capability = 'text'
  AND LOWER(model) LIKE '%vl%';
 
-- 同一 type + capability 只保留排序最靠前的一个启用,其余关闭
UPDATE ai_model m
JOIN (
    SELECT id FROM (
        SELECT id, ROW_NUMBER() OVER (PARTITION BY type, capability ORDER BY sort, id) AS rn
        FROM ai_model
        WHERE status = 0 AND deleted = 0
    ) ranked
    WHERE ranked.rn > 1
) dup ON dup.id = m.id
SET m.status = 1;
 
-- 能力字典
INSERT INTO system_dict_type (name, type, status, remark, creator, create_time, updater, update_time, deleted, deleted_time)
SELECT 'AI 模型能力', 'ai_model_capability', 0, 'AI 模型的能力分组', '1', NOW(), '1', NOW(), b'0', '1970-01-01 00:00:00'
WHERE NOT EXISTS (SELECT 1 FROM system_dict_type WHERE type = 'ai_model_capability' AND deleted = b'0');
 
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted)
SELECT 1, '文本', 'text', 'ai_model_capability', 0, '', '', '', '1', NOW(), '1', NOW(), b'0'
WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'ai_model_capability' AND value = 'text' AND deleted = b'0');
 
INSERT INTO system_dict_data (sort, label, value, dict_type, status, color_type, css_class, remark, creator, create_time, updater, update_time, deleted)
SELECT 2, '视觉', 'vision', 'ai_model_capability', 0, '', '', '', '1', NOW(), '1', NOW(), b'0'
WHERE NOT EXISTS (SELECT 1 FROM system_dict_data WHERE dict_type = 'ai_model_capability' AND value = 'vision' AND deleted = b'0');