回归检查单
规则来源:
.cursor/rules/change-points-as-tests.mdc—— 每个改动点必须登记为可验证的检查点。 自动化覆盖的标注 ✅自动;其余为手工项,涉及 对应模块时必查。
图本身可读可分享 / ADR-0016(续)
- [几何择柄] 竖叠同列表 FK →
data-port=same;截图diagram-port-same-side.png✅relation.spec.ts「PK/FK 与边样式」 - [字段行再压一档]
.erd-field-rowmin-height 22 / line-height 16 / pad 2;FIELD_ROW_H=26✅graphLayout.test.ts+relation.spec.ts「表节点视觉」 - [表节点密表再压] 表头 pad ≤6;字段行 minH 20 / lh 15 / pad 1;
FIELD_ROW_H=24;标题/徽章层次不动;截图diagram-table-node-density.png/demo-table-node-density.png✅graphLayout.test.ts+relation.spec「PK/FK」+demo.spec - [导入后首屏] 空态「导入 DBML」→ 直开关系图 + 节点落入画布可视区;截图
diagram-import-first-screen.png✅dbml-import.spec.ts「空态导入 DBML」
已自动化
- 模型树「表/关系」默认展开:不点 switcher 即见三层 +
tree-open-relation✅model-design-ux.spec.ts - 树虚拟滚动:
.ant-tree-list-holder承载(100+ 表不卡)✅model-design-ux.spec.ts - 左树行高密度:treenode ≤24(目标 ~22)/ font ≤13;截图
diagram-left-tree-dense.png✅model-design-ux.spec.ts - CommonTabs / 表设计签头密度:签栏 ≤30(目标 ~28)+ 签头 ≤32;截图
diagram-common-tabs-dense.png✅model-design-ux.spec.ts - 版本列表行密度:行 pad-block ≤10 / 标题 ≤14 / 顶栏 ≤36;截图
diagram-version-list-dense.png✅version.spec.ts - 导入/导出弹层密度:标题 ≤14 / body padY ≤28 / 控件 ≤32;截图
diagram-import-modal-dense.png/diagram-export-modal-dense.png✅dbml-import/dbml-export - 普通导出页密度:页标题 ≤14 / 卡片 padY ≤20;图标
currentColor→--erd-brand;截图diagram-export-common-dense.png✅export.spec.ts - Home 主导航图标 fill ≡
--erd-brand(erdColors.brand,非组件硬编码)✅layout-outlet.spec.ts「三壳同语言」 - dataTypeDomains 树图标 fill ≡
erdColors.brand(禁裸#DE2910;UI 入口暂未挂载)✅dataTypeDomainsSlice.test.ts - 设置页 chrome 密度:标题 ≤14 / 输入·保存钮 ≤32 / 表单项 mb ≤16;截图
diagram-setting-page-dense.png✅default-field.spec.ts - 数据库配置页密度:标题 ≤14 / 工具条钮 ≤32 / 抽屉输入·保存钮 ≤32;截图
database-config-page-dense.png✅database-config.spec.ts - 账号设置 / Home 项目卡密度:标题 ≤14 / 输入·保存钮 ≤32 / 安全行 padY ≤16;卡 padY ≤28;截图
account-settings-page-dense.png/home-project-cards-dense.png✅account-settings+layout-outlet - 个人/最近/团队/公告列表行密度:行 pad-block ≤10 / 标题 ≤14 / 打开钮 ≤32;截图
project-person-list-dense.png/project-recent-list-dense.png/project-group-list-dense.png/project-notice-list-dense.png✅project-surface.spec.ts+project-notice.spec.ts - 用户手动折叠模块不被默认展开回顶 ✅
model-design-ux.spec.ts - 表设计三签:签头表名/模型层级 + 字段/索引/元数据应用切换 ✅
model-design-ux.spec.ts - 画布「索引」→ 表设计索引签(无死 affordance;再入仍落索引)✅
relation.spec.ts「画布打开索引签」 - [索引签空态 CTA] 画布→索引见「还没有索引」+「添加第一个索引」→ toast「索引更新成功」+ 表头「索引名*」+
T_TABLE_1_IDX1;空态消失 ✅relation.spec.ts「索引签空态 CTA」 - [索引签再加一行 CTA] 首条后见「+ 再添加一条索引」→ toast +
T_TABLE_1_IDX2;index-add-row仍可见 ✅relation.spec.ts「索引签再加一行 CTA」 - [索引签删除二次确认] 「删除索引
{name}」→ 取消保留;确认 toast「索引更新成功」+ 空态「添加第一个索引」;index-delete-list消失 ✅relation.spec.ts「索引签删除二次确认」 - [JExcel 工具栏删除二次确认] 字段签选中行→「删除选中行」→ 取消保留;确认后网格与画布无该字段 ✅
relation.spec.ts「JExcel 工具栏删除二次确认」 - [表设计字段签 Tab 焦点序] hint→撤销→重做→末尾增加一行;Enter 增行;网格 Shift+Tab 回「快捷操作」 ✅
relation.spec.ts「工具栏 Tab 可达」 - [设计器 Skip + 焦点环] 首项 Tab「跳到模型树」→
erd-design-tree→ Tab 入搜索;「跳到主工作区」→erd-design-workspace→ Tab 离地标(无 trap) ✅relation.spec.ts「设计器 Skip」 - [画布字段浏览器 Tab 环] 选中表 Tab 穿字段→添加字段→开表设计后可脱出;未选中表
tabIndex=-1✅relation.spec.ts「字段浏览器 Tab 环」 - [画布 chrome Tab 序] Controls 四钮 → 工具栏;MiniMap svg
tabindex=-1;Controls:focus-visiblebrand 环;Shift+Tab 回 Controls 无 trap ✅relation.spec.ts「画布 chrome Tab 序」 - [左树键盘漫游] Skip→↓入树;active
data-tree-kb-activebrand 环;Enter 定位表 + 开关系;Skip→Tab 进搜索无 trap ✅relation.spec.ts「左树键盘漫游」 - [画布节点级 Tab] 无选中无 RF node wrapper/
erd-edge-label进序;选中边 chip Enter 开基数;Frame Enter 重命名 ✅relation.spec.ts「画布节点级 Tab」 - [分享壳键盘]
/demo首项 Tab Skip「跳到关系图」→ stage → Tab 离地标;Controls 三钮进序;MiniMaptabindex=-1;适应画布 focus-visible brand 环 ✅share.spec.ts「分享壳键盘」 - [登录壳键盘]
/login首项 Tab Skip「跳到登录表单」→#auth-form-anchor→ Tab 入用户名;密码 Enter 错误凭证 toast;登录钮 focus-visible brand 环;无 trap ✅session.spec.ts「登录壳键盘」 - [注册壳键盘]
/registerSkip「跳到注册表单」→#auth-form-anchor→ 字段 Tab 序(tip 出序);末字段 Enter 密码不一致 toast;注册钮 focus-visible brand 环;无 trap ✅session.spec.ts「注册壳键盘」 - [落地页键盘]
/首项 Tab Skip「跳到主操作」→#landing-main-cta→ Tab 入「在线试用」;试用→注册→登录可逆;主 CTA focus-visible surface 环;无 trap ✅landing.spec.ts「落地页键盘」 - [竞品对照页键盘]
/compare首项 Tab Skip「跳到主操作」→#landing-main-cta→「打开演示」→「自部署指南」→「返回产品首页」可逆;surface focus-visible;无 trap ✅compare.spec.ts「竞品对照页键盘」 - [Home 工作台键盘]
/home首项 Tab Skip「跳到主内容」→#home-main-content→继续建模→新建→示例→二级入口→项目卡可逆;brand focus-visible;无 trap ✅home-keyboard.spec.ts「Home 键盘」 - [GroupLayout 壳键盘]
/project/group/setting/basic首项 Tab Skip「跳到主内容」→#group-main-content→项目名→标签→项目描述可逆;侧栏链 brand focus-visible;无 trap ✅group-keyboard.spec.ts「Group 键盘」 - [项目列表行键盘] 个人/最近/团队 stretched link 消死卡;Enter 开设计器;Tab 行内动作可逆;行
:hasbrand focus-visible;无 trap ✅project-list-keyboard.spec.ts - [账号设置壳键盘]
/account/settings首项 Tab Skip「跳到主表单」→#account-settings-form→邮箱→电话→更新基本信息可逆;brand focus-visible;无 trap ✅account-settings-keyboard.spec.ts - [项目动作弹窗键盘] 新建首焦类型 / 修改首焦项目名 / 删除首焦「是」;Esc 关窗归还触发器;Tab trap 在 dialog ✅
project-action-modals-keyboard.spec.ts - [导入导出弹层键盘] 空态导入首焦 DBML文本 / 菜单导出首焦模型 Select;Esc 归还 CTA/项目菜单;Tab trap ✅
import-export-keyboard.spec.ts - [版本动作弹窗键盘] 新增/编辑首焦版本号(非最新编辑首焦描述)/ 删除·回滚首焦「是」;Esc 关窗归还触发器;Tab trap 在 dialog ✅
version-action-modals-keyboard.spec.ts - [版本对比/详情 diff 键盘] 比对首焦「初始版本」/ 详情首焦「导出变更清单」;Esc 关窗归还触发器;Tab trap 在 dialog ✅
version-diff-keyboard.spec.ts - [同步配置/重建版本键盘] 同步配置首焦「字段增量」/ 重建版本首焦「版本号」;Esc 关窗归还触发器;Tab trap 在 dialog ✅
version-sync-rebuild-keyboard.spec.ts - [初始化基线键盘] 有数据源且未建基线时首焦「版本号」;Esc 关窗归还触发器;Tab trap 在 dialog ✅
version-init-keyboard.spec.ts - [复刻弹层键盘] 版本行「复刻」首焦「项目名」;Esc 关窗归还触发器;Tab trap 在 dialog ✅
project-copy-keyboard.spec.ts - [数据源设置键盘] 项目菜单→数据源设置首焦「新增数据源」;Esc 关窗归还「项目菜单」;Tab trap 在 dialog ✅
database-setup-keyboard.spec.ts - [默认项设置键盘] 项目菜单→默认项设置首焦「默认字段」;Esc 关窗归还「项目菜单」;Tab trap 在 dialog ✅
default-setup-keyboard.spec.ts - [数据源逆向解析键盘] 项目菜单→数据源逆向解析首焦「数据源」;Esc 关窗归还「项目菜单」;Tab trap 在 dialog ✅
reverse-database-keyboard.spec.ts - [导出DDL键盘] 项目菜单→导出DDL首焦「数据源」;Esc 关窗归还「项目菜单」;Tab trap 在 dialog ✅
export-ddl-keyboard.spec.ts - [404/403 壳键盘] 未知路径 /
/403首项 Tab Skip「跳到主操作」→#exception-main-cta→「打开示例 demo」→「返回首页」可逆;主 CTA focus-visible brand 环;无 trap ✅not-found.spec.ts「404/403 壳键盘」 | - [分享失效门键盘]
/s/not-a-real-…首项 Tab Skip「跳到主操作」→#exception-main-cta(share-invalid-gate)→「打开示例 demo」→「返回首页」可逆;主 CTA focus-visible brand 环;无 trap ✅share.spec.ts