feat(theme): 皮肤包管理收敛与命名批次-兜底catch经wrapFailure先log.error记原始堆栈再包装(upload/derive/updateMeta三处,extractZip/deleteRecursively静默吞改warn/debug);内置包改显示名走.meta覆盖层(ThemeRegistry加载后覆写title/description,updateMeta放开内置:全空=恢复默认,params拒改);derive/upload支持表单命名(theme.json改写regex换ObjectMapper防误替换,upload落位前改staging失败不落位);resolveTheme回退warn补站点编码;ThemeVo.editable语义改为可编辑元数据;附内置包mint-breeze/fresh-mint2与R1学校主站编码迁移SQL;308/308全绿
build / build-push (push) Successful in 48s

This commit is contained in:
chenxing
2026-09-08 20:25:43 +08:00
parent 12a492fc55
commit a666e13f56
39 changed files with 2343 additions and 72 deletions
+35
View File
@@ -0,0 +1,35 @@
-- ============================================================
-- R1 迁移脚本:学校主站编码改 5 位数字码(1 + 学校ID左补零至4位)
-- 例:sch_id=13 → code/path = 10013;幂等(只处理编码≠目标值的行)
-- 前置:W4 嵌套 path 机制已落地(cms_site.path 列已回填,uk_site_path 已建)
-- 旧链接提示:执行后 /portal/sch-13/ 不再解析(301 兼容仅覆盖子站按 code
-- 回查,主站不在其列);已对外发链需在 Caddy 层加旧前缀 301 或接受断链。
-- ============================================================
-- 0) 前置校验:先人工看一眼存量主站
-- ① 同一 sch_id 挂多个顶层站 → 改码后触发 uk_site_path 冲突,需先合并/停用;
-- ② sch_id 为空的顶层站(如演示站)会被本脚本跳过、保持原编码。
SELECT id, code, sch_id, path, status FROM cms_site WHERE parent_site_id = 0 OR parent_site_id IS NULL;
-- 1) 顶层主站:code 与 path 一起改为目标 5 位码(sch_id 全局唯一 ⇒ 天然满足
-- uk_site_path / uk_site_parent_code;sch_id 为空的顶层站跳过)
UPDATE cms_site
SET code = CONCAT('1', LPAD(sch_id, 4, '0')),
path = CONCAT('1', LPAD(sch_id, 4, '0'))
WHERE (parent_site_id = 0 OR parent_site_id IS NULL)
AND sch_id IS NOT NULL
AND code <> CONCAT('1', LPAD(sch_id, 4, '0'));
-- 2) 子站 path 级联重算(code 不动,仅换父前缀;幂等)
UPDATE cms_site s JOIN cms_site p ON s.parent_site_id = p.id
SET s.path = CONCAT(p.path, '/', s.code)
WHERE s.parent_site_id > 0
AND s.path <> CONCAT(p.path, '/', s.code);
-- 3) 校验(两条都应返回 0 行)
SELECT id, code, path FROM cms_site WHERE path = '' OR path IS NULL;
SELECT id, code, path FROM cms_site WHERE parent_site_id = 0 OR parent_site_id IS NULL;
-- 4) 收尾:缓存为进程内 Caffeine(站点快照 TTL 30min、旧 key 自然过期);
-- 想立即生效可在站点管理保存一次任一站点(触发 SiteContentChangedEvent 清缓存),
-- 或重启 cms 容器。