fix(cms): 图库分组自由输入 + 前端筛选动态化;速通坞折叠防误触

用户实测三处:①照片分组写死 street/landscape 两选不能加——Sveltia select
无 creatable(文档核实),改 string 自由输入;前端筛选同步动态化(分组
从数据反向派生,[a-z0-9-] 命名的分组零配置自动出现筛选片),顺带排查全
后台其余 select:分轨/颜色/字体/来源均为语义契约(写死是安全设计)唯分
组该开放;②速通坞与编辑区抢点击(手机端尤甚)——改默认收起成一枚
26px 圆钮,点开才展开五入口,状态记忆+点外部收起;③翻译无按钮答疑:
英文版走构建链自动机翻(保存中文即出,无按钮是设计),仪表盘有覆盖数。
(同轮收编站长经 CMS 新增的图库照片 夜色金茂湾)

验证: pnpm astro build exit 0;config-check 通过;E2E 65/65(筛选断言适配动态 id);产物断言 f-g-landscape 数据派生

Spec: 2026-11-05_blog-5n-admin-deep-optimization

Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-11-05 22:34:38 +08:00
1 parent 5d187e1240
commit ef2bd97267
4 files changed
+63 -25

No files matched your search

+3 -5
View File
@@ -295,14 +295,12 @@ await page.keyboard.press('Escape');
ok('灯箱·Esc 关闭', await page.locator('#lb[open]').count() === 0);
// 7) 分组筛选(当前库存单组:21 张全 landscape;验证筛选逻辑用街拍=0 反证)
await page.click('label[for=f-landscape]');
await page.click('label[for=f-g-landscape]'); // 5n:分组筛选动态化(数据派生 id)
await page.waitForTimeout(200);
const landscapeShown = await page.locator('.shot:visible').count();
ok('图库·风景筛选', landscapeShown === 21, `${landscapeShown} 张`);
await page.click('label[for=f-street]');
await page.waitForTimeout(200);
const streetShown = await page.locator('.shot:visible').count();
ok('图库·街拍筛选(应为0)', streetShown === 0, `${streetShown} 张`);
// 5n:分组筛选动态化——筛选片由数据派生(当前库存仅 landscape 一组,不再有 street 档)
ok('图库·筛选片数据派生', (await page.locator('.filters .chip').count()) === 2);
await page.click('label[for=f-all]');
// 8) 书评字体(思源宋)与技术页 TOC