feat(channels): localize seeded channel names to Chinese on zh-CN installs

The zh seed planted channels with English display names (DingTalk Bot,
Feishu Bot, WeCom Bot, ...). The type label localized correctly but the
per-channel name stayed English on the cards page even when UI was Chinese.

- Update zh seed files (data-zh.sql + data-mysql-zh.sql) so fresh installs
  get Chinese names from the start: Web 控制台, 钉钉机器人, 飞书机器人,
  Telegram 机器人, Discord 机器人, 企业微信机器人, QQ 机器人, Slack 机器人.
  id=1000000008 (微信) was already Chinese; left alone. en seeds untouched.
- Add V54 migration that flips existing zh-CN installs in place. Each
  UPDATE is gated on system_setting language=zh-CN AND the channel name
  still equal to its original English seeded value, so user-renamed
  channels are left alone. Subsequent runs match no rows (idempotent).
  h2 and mysql variants stay in lockstep.
This commit is contained in:
matevip 2026-04-28 11:10:44 +08:00
parent b982d4a2d0
commit 4081469e15
4 changed files with 118 additions and 16 deletions

View File

@ -1240,13 +1240,13 @@ UPDATE mate_skill SET skill_content = '# Steve Jobs · 思维操作系统
-- 1. Web Console默认启用
INSERT INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
VALUES (1000000001, 'Web Console', 'web', 1000000001, '', '{}', TRUE,
VALUES (1000000001, 'Web 控制台', 'web', 1000000001, '', '{}', TRUE,
'默认 Web 控制台渠道,通过浏览器 SSE 流式交互', NOW(), NOW(), 0)
ON DUPLICATE KEY UPDATE name=VALUES(name), channel_type=VALUES(channel_type), agent_id=VALUES(agent_id), bot_prefix=VALUES(bot_prefix), config_json=VALUES(config_json), enabled=VALUES(enabled), description=VALUES(description), update_time=VALUES(update_time), deleted=VALUES(deleted);
-- 2. 钉钉(默认禁用,需配置 client_id/client_secret
INSERT INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
VALUES (1000000002, 'DingTalk Bot', 'dingtalk', 1000000001, '', '{
VALUES (1000000002, '钉钉机器人', 'dingtalk', 1000000001, '', '{
"client_id": "",
"client_secret": "",
"robot_code": "",
@ -1266,7 +1266,7 @@ ON DUPLICATE KEY UPDATE name=VALUES(name), channel_type=VALUES(channel_type), ag
-- 3. 飞书(默认禁用,需配置 app_id/app_secret
INSERT INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
VALUES (1000000003, 'Feishu Bot', 'feishu', 1000000001, '', '{
VALUES (1000000003, '飞书机器人', 'feishu', 1000000001, '', '{
"app_id": "",
"app_secret": "",
"encrypt_key": "",
@ -1285,7 +1285,7 @@ ON DUPLICATE KEY UPDATE name=VALUES(name), channel_type=VALUES(channel_type), ag
-- 4. Telegram默认禁用需配置 bot_token
INSERT INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
VALUES (1000000004, 'Telegram Bot', 'telegram', 1000000001, '', '{
VALUES (1000000004, 'Telegram 机器人', 'telegram', 1000000001, '', '{
"bot_token": "",
"http_proxy": "",
"show_typing": true,
@ -1303,7 +1303,7 @@ ON DUPLICATE KEY UPDATE name=VALUES(name), channel_type=VALUES(channel_type), ag
-- 5. Discord默认禁用需配置 bot_token
INSERT INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
VALUES (1000000005, 'Discord Bot', 'discord', 1000000001, '!mc ', '{
VALUES (1000000005, 'Discord 机器人', 'discord', 1000000001, '!mc ', '{
"bot_token": "",
"http_proxy": "",
"dm_policy": "open",
@ -1320,7 +1320,7 @@ ON DUPLICATE KEY UPDATE name=VALUES(name), channel_type=VALUES(channel_type), ag
-- 6. 企业微信智能机器人(默认禁用,需配置 bot_id/secret
INSERT INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
VALUES (1000000006, 'WeCom Bot', 'wecom', 1000000001, '', '{
VALUES (1000000006, '企业微信机器人', 'wecom', 1000000001, '', '{
"bot_id": "",
"secret": "",
"welcome_text": "",
@ -1341,7 +1341,7 @@ ON DUPLICATE KEY UPDATE name=VALUES(name), channel_type=VALUES(channel_type), ag
-- 7. QQ 机器人(默认禁用,需配置 app_id/client_secret
INSERT INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
VALUES (1000000007, 'QQ Bot', 'qq', 1000000001, '', '{
VALUES (1000000007, 'QQ 机器人', 'qq', 1000000001, '', '{
"app_id": "",
"client_secret": "",
"markdown_enabled": true,
@ -1378,7 +1378,7 @@ ON DUPLICATE KEY UPDATE name=VALUES(name), channel_type=VALUES(channel_type), ag
-- 9. Slack默认禁用需配置 bot_token / app_token
INSERT INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
VALUES (1000000009, 'Slack Bot', 'slack', 1000000001, '', '{
VALUES (1000000009, 'Slack 机器人', 'slack', 1000000001, '', '{
"bot_token": "",
"app_token": "",
"signing_secret": "",

View File

@ -1204,13 +1204,13 @@ UPDATE mate_skill SET skill_content = '# Steve Jobs · 思维操作系统
-- 1. Web Console默认启用
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
KEY (id)
VALUES (1000000001, 'Web Console', 'web', 1000000001, '', '{}', TRUE,
VALUES (1000000001, 'Web 控制台', 'web', 1000000001, '', '{}', TRUE,
'默认 Web 控制台渠道,通过浏览器 SSE 流式交互', NOW(), NOW(), 0);
-- 2. 钉钉(默认禁用,需配置 client_id/client_secret
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
KEY (id)
VALUES (1000000002, 'DingTalk Bot', 'dingtalk', 1000000001, '', '{
VALUES (1000000002, '钉钉机器人', 'dingtalk', 1000000001, '', '{
"client_id": "",
"client_secret": "",
"robot_code": "",
@ -1230,7 +1230,7 @@ VALUES (1000000002, 'DingTalk Bot', 'dingtalk', 1000000001, '', '{
-- 3. 飞书(默认禁用,需配置 app_id/app_secret
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
KEY (id)
VALUES (1000000003, 'Feishu Bot', 'feishu', 1000000001, '', '{
VALUES (1000000003, '飞书机器人', 'feishu', 1000000001, '', '{
"app_id": "",
"app_secret": "",
"encrypt_key": "",
@ -1249,7 +1249,7 @@ VALUES (1000000003, 'Feishu Bot', 'feishu', 1000000001, '', '{
-- 4. Telegram默认禁用需配置 bot_token
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
KEY (id)
VALUES (1000000004, 'Telegram Bot', 'telegram', 1000000001, '', '{
VALUES (1000000004, 'Telegram 机器人', 'telegram', 1000000001, '', '{
"bot_token": "",
"http_proxy": "",
"show_typing": true,
@ -1267,7 +1267,7 @@ VALUES (1000000004, 'Telegram Bot', 'telegram', 1000000001, '', '{
-- 5. Discord默认禁用需配置 bot_token
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
KEY (id)
VALUES (1000000005, 'Discord Bot', 'discord', 1000000001, '!mc ', '{
VALUES (1000000005, 'Discord 机器人', 'discord', 1000000001, '!mc ', '{
"bot_token": "",
"http_proxy": "",
"dm_policy": "open",
@ -1284,7 +1284,7 @@ VALUES (1000000005, 'Discord Bot', 'discord', 1000000001, '!mc ', '{
-- 6. 企业微信智能机器人(默认禁用,需配置 bot_id/secret
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
KEY (id)
VALUES (1000000006, 'WeCom Bot', 'wecom', 1000000001, '', '{
VALUES (1000000006, '企业微信机器人', 'wecom', 1000000001, '', '{
"bot_id": "",
"secret": "",
"welcome_text": "",
@ -1305,7 +1305,7 @@ VALUES (1000000006, 'WeCom Bot', 'wecom', 1000000001, '', '{
-- 7. QQ 机器人(默认禁用,需配置 app_id/client_secret
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
KEY (id)
VALUES (1000000007, 'QQ Bot', 'qq', 1000000001, '', '{
VALUES (1000000007, 'QQ 机器人', 'qq', 1000000001, '', '{
"app_id": "",
"client_secret": "",
"markdown_enabled": true,
@ -1342,7 +1342,7 @@ VALUES (1000000008, '微信', 'weixin', 1000000001, '', '{
-- 9. Slack默认禁用需配置 bot_token / app_token
MERGE INTO mate_channel (id, name, channel_type, agent_id, bot_prefix, config_json, enabled, description, create_time, update_time, deleted)
KEY (id)
VALUES (1000000009, 'Slack Bot', 'slack', 1000000001, '', '{
VALUES (1000000009, 'Slack 机器人', 'slack', 1000000001, '', '{
"bot_token": "",
"app_token": "",
"signing_secret": "",

View File

@ -0,0 +1,57 @@
-- V54: Localize seeded channel names to Chinese for zh-CN installs.
--
-- The zh seed (db/data-zh.sql) historically planted channels with English
-- display names ("DingTalk Bot", "Feishu Bot", "WeCom Bot", ...). The seed
-- only runs once per fresh install (DatabaseBootstrapRunner short-circuits
-- on isDataAlreadySeeded), so existing zh-CN installs are stuck with the
-- English names forever.
--
-- This migration flips the names to Chinese ONLY when:
-- 1. The system language is zh-CN (so en-US installs are untouched)
-- 2. The channel still has the original English seeded name (so any
-- user-renamed channel is left alone)
--
-- Idempotent: re-running the migration finds no matching rows after the
-- first apply because the names won't match the English originals anymore.
UPDATE mate_channel SET name = 'Web 控制台'
WHERE id = 1000000001 AND name = 'Web Console'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = '钉钉机器人'
WHERE id = 1000000002 AND name = 'DingTalk Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = '飞书机器人'
WHERE id = 1000000003 AND name = 'Feishu Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = 'Telegram 机器人'
WHERE id = 1000000004 AND name = 'Telegram Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = 'Discord 机器人'
WHERE id = 1000000005 AND name = 'Discord Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = '企业微信机器人'
WHERE id = 1000000006 AND name = 'WeCom Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = 'QQ 机器人'
WHERE id = 1000000007 AND name = 'QQ Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
-- id 1000000008 ("微信") already in Chinese; intentionally skipped.
UPDATE mate_channel SET name = 'Slack 机器人'
WHERE id = 1000000009 AND name = 'Slack Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');

View File

@ -0,0 +1,45 @@
-- V54: Localize seeded channel names to Chinese for zh-CN installs.
-- See h2/V54 for the full rationale. Same logic, MySQL-flavored.
-- Idempotent: re-running finds no matching rows after the first apply.
UPDATE mate_channel SET name = 'Web 控制台'
WHERE id = 1000000001 AND name = 'Web Console'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = '钉钉机器人'
WHERE id = 1000000002 AND name = 'DingTalk Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = '飞书机器人'
WHERE id = 1000000003 AND name = 'Feishu Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = 'Telegram 机器人'
WHERE id = 1000000004 AND name = 'Telegram Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = 'Discord 机器人'
WHERE id = 1000000005 AND name = 'Discord Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = '企业微信机器人'
WHERE id = 1000000006 AND name = 'WeCom Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
UPDATE mate_channel SET name = 'QQ 机器人'
WHERE id = 1000000007 AND name = 'QQ Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');
-- id 1000000008 ("微信") already in Chinese; intentionally skipped.
UPDATE mate_channel SET name = 'Slack 机器人'
WHERE id = 1000000009 AND name = 'Slack Bot'
AND EXISTS (SELECT 1 FROM mate_system_setting
WHERE setting_key = 'language' AND setting_value = 'zh-CN');