跳到主要内容

全站控件矩阵(单一事实源)

服务 P2b「全站控件闭环」。每波收口同步改本表。
状态:✅ 已有 E2E/自动化覆盖 · 🚧 开放待闭环 · 🗑 已裁剪/待删 · 📋 延期
采集:手工可跑 frontend/tests/e2e/control-inventory.spec.ts(默认 skip,不进 CI)。

波次索引

范围roadmap
W0HomeLayout / GroupLayout 子路由壳
W1获客与会话(登录/注册/退出/头像)
W2项目面(home / person / group / recent / new)
W3设计器核心(模型树/关系图/项目菜单)
W4版本时光机(版本/工单/审批)
W5导入导出 + 数据源
W6外围裁剪(dataDomain/query/ChatSQL/account/占位)

W0 — 布局壳

表面控件预期闭环关联链路状态验证
HomeLayout子路由内容区渲染 props.children,主内容可见(非仅 slogan)/home 等 Home 路由layout-outlet.spec /home
HomeLayout顶栏 actionshomeRightContent(公众号/GitHub);无 SaveStatus / presence / 只读分享/homelayout-outlet.spec /home
GroupLayout子路由内容区同上/project/group/setting/*layout-outlet.spec basic
DesignLayoutprops.children设计器主区渲染已正确接线smoke / relation / loading

W1 — 获客与会话

表面控件预期闭环关联链路状态验证
/login登录按钮成功进 /home;错误凭证单次明确提示JWT 会话smoke「错误凭证」「登录→新建」
/login注册链接导航 /register转化漏斗session.spec「去注册」
/login AuthBrandShellSkip + Tab 序 + Enter首项 Skip「跳到登录表单」→ form;用户名→密码→登录→footer;Enter 提交;focus-visible;无 trapADR-0016 键盘门面session「登录壳键盘」
/register AuthBrandShellSkip + Tab 序 + Enter首项 Skip「跳到注册表单」→ form;字段链(tip 出序)→注册→footer;Enter 校验;focus-visible;无 trapADR-0016 键盘门面session「注册壳键盘」
/ LandingChromeSkip + Tab 序首项 Skip「跳到主操作」→ #landing-main-cta;试用→注册→登录;focus-visible surface;无 trapADR-0016 键盘门面landing「落地页键盘」
/compare LandingChromeSkip + Tab 序同壳 Skip→ #landing-main-cta;打开演示→自部署→返回首页;surface focus-visible;无 trapADR-0016 键盘门面compare「竞品对照页键盘」
HomeLayout /homeSkip + Tab 序首项 Skip「跳到主内容」→ #home-main-content;继续建模→新建→示例→二级入口→项目卡;brand focus-visible;无 trapADR-0016 键盘门面home-keyboard「Home 键盘」
GroupLayout /project/group/setting/*Skip + Tab 序首项 Skip「跳到主内容」→ #group-main-content;绕开顶栏+侧栏;基本设置字段进序;brand focus-visible;无 trapADR-0016 键盘门面group-keyboard「Group 键盘」
项目列表 /project/{person,recent,group}行 Enter / Tab 动作stretched link 消死卡;Enter 开设计器;Tab 行内动作可逆;行 :has inset brand focus-visible;无 trapADR-0016 键盘列表project-list-keyboard
项目动作弹窗 新建/修改/删除打开首焦 / Esc / Tab trap新增→类型;修改→项目名;删除→「是」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层project-action-modals-keyboard
导入/导出弹层 DBML打开首焦 / Esc / Tab trap导入→DBML文本;导出→导出模型;Esc 归还空态 CTA / 项目菜单;焦点不逃出 dialogADR-0016 键盘弹层import-export-keyboard
版本动作弹窗 新增/编辑/删除/回滚打开首焦 / Esc / Tab trap新增/编辑最新→版本号;编辑非最新→描述;删除/回滚→「是」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层version-action-modals-keyboard
版本对比/详情 diff Modal打开首焦 / Esc / Tab trap比对→「初始版本」;详情→「导出变更清单」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层version-diff-keyboard
同步配置/重建版本 Modal打开首焦 / Esc / Tab trap同步配置→「字段增量」;重建版本→「版本号」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层version-sync-rebuild-keyboard
初始化基线 Modal打开首焦 / Esc / Tab trap首焦「版本号」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层version-init-keyboard
复刻 Modal打开首焦 / Esc / Tab trap首焦「项目名」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层project-copy-keyboard
数据源设置 Modal打开首焦 / Esc / Tab trap首焦「新增数据源」;Esc 归还「项目菜单」;焦点不逃出 dialogADR-0016 键盘弹层database-setup-keyboard
默认项设置 Modal打开首焦 / Esc / Tab trap首焦「默认字段」Tab;Esc 归还「项目菜单」;焦点不逃出 dialogADR-0016 键盘弹层default-setup-keyboard
数据源逆向解析 Modal打开首焦 / Esc / Tab trap首焦「数据源」Select;Esc 归还「项目菜单」;焦点不逃出 dialogADR-0016 键盘弹层reverse-database-keyboard
导出DDL Modal打开首焦 / Esc / Tab trap首焦「数据源」Select;Esc 归还「项目菜单」;焦点不逃出 dialogADR-0016 键盘弹层export-ddl-keyboard
解析ERD文件 Modal打开首焦 / Esc / Tab trap首焦上传区「选择ERD文件」;Esc 归还「项目菜单」;焦点不逃出 dialogADR-0016 键盘弹层reverse-erd-keyboard
解析PdMan文件 Modal打开首焦 / Esc / Tab trap首焦上传区「选择PdMan文件」;Esc 归还「项目菜单」;焦点不逃出 dialogADR-0016 键盘弹层reverse-pdman-keyboard
修改密码 Modal打开首焦 / Esc / Tab trap首焦「密码」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层reset-password-keyboard
发起SQL审批 Modal打开首焦 / Esc / Tab trap首焦「审批人」;Esc 归还触发器(父详情仍开);焦点不逃出 dialogADR-0016 键盘弹层sql-approval-keyboard
添加成员 Modal打开首焦 / Esc / Tab trap首焦「选择用户」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层add-user-keyboard
只读分享 Modal打开首焦 / Esc / Tab trap首焦「分享链接」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层share-project-keyboard
只读分享吊销确认打开首焦 / Esc / Tab trap首焦「吊销」;Esc 归还不吊销;外层分享窗仍开;焦点归还吊销钮;焦点不逃出 dialogADR-0016 键盘弹层share-revoke-keyboard
团队项目删确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还「删除团队项目」;焦点不逃出 dialogADR-0016 键盘弹层group-project-delete-keyboard
EntityModal 新增模型/表/关系图打开首焦 / Esc / Tab trap新增模型首焦「名称」;新增表首焦「所属模型」;Esc 归还触发器;焦点不逃出 dialogADR-0016 键盘弹层entity-modal-keyboard
画布删表确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还触发器;焦点不逃出 dialogADR-0016 键盘弹层canvas-delete-table-keyboard
画布删边/删分组确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还触发器;焦点不逃出 dialogADR-0016 键盘弹层canvas-delete-edge-frame-keyboard
画布删字段确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还触发器;焦点不逃出 dialogADR-0016 键盘弹层canvas-delete-field-keyboard
表设计删索引确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还触发器;焦点不逃出 dialogADR-0016 键盘弹层table-index-delete-keyboard
JExcel 工具栏删行确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还触发器;焦点不逃出 dialogADR-0016 键盘弹层jexcel-toolbar-delete-keyboard
左树删模型/表/关系图确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还行「…操作」;焦点不逃出 dialogADR-0016 键盘弹层tree-delete-keyboard
数据源设置删确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还行删钮;外层配置窗仍开;焦点不逃出确认 dialogADR-0016 键盘弹层database-setup-delete-keyboard
工作台 databaseConfig 删/批删确认打开首焦 / Esc / Tab trap首焦「删除」;Esc 归还不删;焦点归还行删钮/批删钮;焦点不逃出 dialogADR-0016 键盘弹层database-config-delete-keyboard
/404 AuthBrandShell 门Skip + Tab 序首项 Skip「跳到主操作」→ #exception-main-cta;打开示例→返回首页;focus-visible brand;无 trapADR-0016 键盘门面not-found「404 壳键盘」
/403 AuthBrandShell 门Skip + Tab 序同 404;深链 /403 可达ADR-0016 键盘门面not-found「403 壳键盘」
/s/:token 失效门Skip + Tab 序首项 Skip「跳到主操作」→ #exception-main-ctashare-invalid-gate);打开示例→返回首页;focus-visible brand;无 trapADR-0016 键盘门面share「分享失效门键盘」
/register注册提交成功进 /home;可带 redirectshare autoforksession.spec「注册成功」;share redirect
/demo重定向/s/public-demo 只读图 + 复制 CTAADR-0007demo.spec
/s/:token复制到我的项目未登录→注册 redirect;登录→fork分享 forkshare.spec
头像菜单个人中心/account/settings?selectKey=baseaccountsession.spec
头像菜单授权信息selectKey=identificationlicencesession.spec
头像菜单退出登录cache.clear()/loginlogout()session.spec
DesignLayout 顶栏GitHub stars 链外链 erdonline/erdonline社区文案/链已合入
DesignLayout 顶栏分享按钮生成只读链接ADR-0007share.spec
DesignLayout 顶栏协作 presence可见在线名单ADR-0009presence.spec

W2 — 项目面(HomeLayout 菜单 + /project/*

HomeLayout 主导航

表面控件预期闭环关联链路状态验证
HomeLayout 菜单首页/home 主内容W0layout-outlet / project-surface
HomeLayout 菜单数据模型/dataModels项目列表别名面project-surface
HomeLayout 菜单数据查询_defaultProps 已摘;路由保留实验深链exec 忽略所选 DShome-data-query.spec
HomeLayout 菜单数据源/databaseConfigADR-0008 / W5project-surface / adr0008
HomeLayout 菜单ERD Online 论坛外链 Discussions社区📋外链不测

/home 快捷

表面控件预期闭环关联链路状态验证
/home新建模型 home-link-new-project/project/person空态新建activation / project-activation
/home示例项目 home-link-example建示例并进设计器见表30s 激活activation.spec
/home导入模型/project/person(引导)导入在设计器project-surface 导航类同 person
/home最近项目/project/recentproject-surface
/home个人项目/project/personproject-surface / smoke
/home团队项目/project/groupproject-surface
/homeVIP/授权角标→ account identification📋头像菜单已覆盖 identification

项目列表路由

表面控件预期闭环关联链路状态验证
/project/person空态「新建」弹窗→创建→列表可见VIP/开源不限数project-activation「新建」
/project/person一键示例示例进设计器project-activation / activation
/project/person项目卡片打开/design/table/model?projectId=死链已修smoke「登录→新建→设计器」
/project/person删除项目确认后列表消失;可再建缓存smoke 清理路径
/project/recent列表/打开打开最近项目进设计器project-surface
/project/group团队项目列表/打开进设计器或设置权限project-surface 可达;empty-projectjson
/project/group进入团队设置/project/group/setting/basicGroupLayoutlayout-outlet
/project/notice通知列表首页「更多公告」→列表可读;失败 toastproject-notice.spec
/project/new(整页)redirect→/project/person;占位页已删W2 新建走 personproject-surface
/dataModels模型列表入口与项目列表等价可用project-surface

W3 — 设计器核心

表面控件预期闭环关联链路状态验证
DesignLayout 菜单模型/design/table/model关系图relation / smoke
/design/table/model树「关系图」tree-open-relation打开画布标签RFrelation.spec
/design/table/model空态建表 CTA表节点出现relation 全旅程
/design/table/model内联字段/连线/守卫持久化刷新仍在;chnname/defaultValue 行内;删字段二次确认(× / 选中 Delete·Backspace)relation
/design/table/model表节点「索引」canvas-open-index直达表设计索引签(aria-selected);可切字段后再经画布重入relation「画布打开索引签」
/design/table/model索引签空态 CTA index-empty-add「添加第一个索引」→ 种子行 + 表格;无白屏relation「索引签空态 CTA」
/design/table/model索引签再加一行 index-add-row已有索引后「+ 再添加一条索引」→ 追加种子行;无死 affordancerelation「索引签再加一行 CTA」
/design/table/model索引签删除 index-delete-N「删除索引 {name}」→ Modal 确认才删;取消保留;删空回空态 CTA;键盘首焦/Esc/Tab traprelation「索引签删除二次确认」+table-index-delete-keyboard
/design/table/modelJExcel 工具栏删除 jexcel-toolbar-remove「删除选中行」→ Modal 确认才 deleteRow;取消保留;未选中 toast;键盘首焦/Esc/Tab traprelation「JExcel 工具栏删除二次确认」+jexcel-toolbar-delete-keyboard
/design/table/modelJExcel 工具栏/网格 Tab 序7 工具栏按钮 Tab+Enter;jexcel-grid 可聚焦;Shift+Tab 无 traprelation「工具栏 Tab 可达」
/design/table/model表设计字段签半成品写回name/typeName → toast + 中止写回;全空草稿可丢;Esc 停网格relation「半成品行不静默丢」
/design/table/model表设计索引签半成品写回name/fields(含 []/「;」空)→ toast + 中止写回;Esc 停网格;重入索引仍在relation「索引签:半成品行不静默丢」
/design/table/model表节点「字段」canvas-open-field直达表设计字段签(aria-selected + table-field-edit);可切索引后再经画布重入relation「画布打开字段签」
/design/table/model表节点「元数据」canvas-open-code直达表设计元数据应用签(aria-selected + table-code-edit);可切字段后再经画布重入relation「画布打开元数据应用签」
/design/table/model表头 ✎ 改名名称更新;chnname 双栏内联relation「改名」/「表头中文名」
/design/table/modelPK 徽标切换取消/恢复relation「PK」
/design/table/model树删表二次确认;确认后移除+toastsmoke 取消/确认
/design/table/modelundo/redo可撤销画布操作canvasHistoryrelation 全旅程 Meta+z
/design/table/model删边Delete → Modal 确认后边消失并落库;取消保留relation「画布删表/删边」「删边后刷新」
/design/table/model画布删表Delete → Modal 确认后 removeEntity;取消保留;键盘首焦/Esc/Tab traprelation「画布删表/删边二次确认」+canvas-delete-table-keyboard
DesignLayout项目菜单按钮下拉打开project-menu.spec
项目菜单全部项目/project/recentproject-menu「全部项目」
项目菜单最近项目最多 5 条;当前 ✓;点其它项切设计器project-menu「最近项目可切换」
项目菜单版本(已迁顶栏)顶栏「版本」→ 版本管理;菜单内无「版本」project-menu「全部项目…顶栏版本」
项目菜单导入→三项弹窗可开、关下拉不挡project-menu「导入」
项目菜单导出→五项可见;DDL 可开project-menu「导出」
项目菜单设置→数据源设置弹窗可开ADR-0008project-menu「数据源设置」
项目菜单设置→默认项设置打开+保存成功提示project-menu「默认项」
DesignLayout自动保存状态顶栏可见保存中/已保存P2relation.spec「保存中…→已保存」
DesignLayout命令面板/快捷键Cmd/Ctrl+K/F 开合;搜表定位+高亮;执行有结果RF CommandPaletterelation.spec「命令面板」+「搜表定位」
DesignLayout快捷键速查卡? / 工具栏「?」→ aria dialog「快捷键」;含 Cmd+1/2/3 表设计签;Esc 关闭;与命令面板互斥RF ShortcutHelprelation.spec「快捷键速查」
DesignLayoutSkip 跳过导航首项 Tab「跳到模型树/主工作区」→ 地标 focus;无 trap焦点环审计relation「设计器 Skip」
DesignLayout左树键盘漫游Skip→↓入树;方向键+Enter 定位表/开关系;active brand 环;Tab 进搜索无 trapQueryTree.focusKeyboard + handleSelectrelation「左树键盘漫游」
RF TableNode字段浏览器 Tab 环仅选中表字段/添加/开表设计进序;行内微钮 -1;无 trap + focus-visible键盘建模relation「字段浏览器 Tab 环」
RF canvas chromeControls / 工具栏 Tab;MiniMap 出序Controls→工具栏;MiniMap tabindex=-1;Controls focus-visible键盘 chromerelation「画布 chrome Tab 序」
RF 节点级 Tab选中门控;RF wrapper 出序nodesFocusable/edgesFocusable=false;选中表/边 chip/Frame 进序键盘建模relation「画布节点级 Tab」
/s/:token 分享壳Skip + Controls Tab首项 Skip「跳到关系图」→ stage;放大/缩小/适应可达;MiniMap 出序;focus-visible;无 trapADR-0016 键盘门面share「分享壳键盘」
TableTabCmd/Ctrl+1/2/3表设计:字段 / 索引 / 元数据应用;输入中不拦;仅表设计签挂载TableTab activatePanerelation「表设计 Cmd/Ctrl+1/2/3」
DesignLayout左树点表定位点表 → 切关系图 + 选中 + fitView + flash;不开表设计DataTable → pendingLocate + focusTablerelation.spec「左树点表」
ProjectSortMenu创建时间/最近修改已从 Menu 导出删除死代码🗑代码已不存在(grep 零命中)
ProjectFilterMenu过滤1/过滤2已从 Menu 导出删除死代码🗑代码已不存在(grep 零命中)
NavigationMenu(空水平菜单)已从 Menu 导出删除🗑代码已不存在(grep 零命中)

W4 — 版本时光机

表面控件预期闭环关联链路状态验证
DesignLayout 菜单版本管理/design/table/version/allproject-menu / version / loading
/design/table/version/all新增版本(无数据源)列表可见新版本北极星version.spec「新增」
/design/table/version/all返回模型/design/table/model?projectId=version.spec「返回模型」
/design/table/version/all版本详情 diff增删改着色version.spec「diff」
/design/table/version/all重命名/删除版本列表更新+toast;最新版改号成功;重复号 toast 且弹窗不关VersionHandleversion.spec「重命名与删除」
/design/table/version/all对比版本对比结果可见version.spec「可视化 diff」双版比对(version-compare-btn→任意版本比较)
/design/table/version/all回滚落库;刷新后模型仍回滚回滚落库;version/approval 绿
DesignLayout 菜单我的工单/design/table/version/order 空态引导approval.spec
DesignLayout 菜单我的审批.../approval 空态引导approval.spec
/design/table/version/all顶栏「我的工单/我的审批」直达 order/approval 页W3 切片 3approval.spec「提交工单入口」
/design/table/version/all版本行「提交工单」团队未同步行 → 详情「SQL审批」可见W3 切片 3approval.spec「提交工单入口」
工单/审批提交→通过/拒绝全链路状态变更可见需有数据approval.spec:API 种子→UI 拒绝 toast→工单复批(通过=JDBC 过重未覆盖)

W5 — 导入导出 + 数据源

侧栏导入/导出页

表面控件预期闭环关联链路状态验证
/design/table/import/reverse逆向解析提交表进入模型ADR-0006import-reverse.spec(MySQL reverse_demo
/design/table/import/pdman上传 PdMan模型可见import-pdman.spec
/design/table/import/erd上传 ERD模型可见import-erd.spec
ReverseERWin解析 ERWin 文件组件已删;菜单未挂stub🗑代码已不存在(grep 零命中)
/design/table/export/common导出 Markdown文件下载无 G6export.spec
/design/table/export/common导出 HTML/Word/ERD下载或明确失败export.spec HTML+ERD
/design/table/export/more高级导出 DDL有源+表时可进第二步ADR-0008project-menu「DDL 第二步」
/design/table/export/moreDDL 终步下载产出 SQL 文件project-menu「DDL 下载」

/databaseConfig

表面控件预期闭环关联链路状态验证
/databaseConfig新建/保存数据源POST dataSources;profile 无 passwordADR-0008adr0008-datasource.spec
/databaseConfig测试连接成功/失败 toastadr0008-datasource.spec「测试连接」
/databaseConfig编辑/删除/批量删列表更新+确认;行内 ariaadr0008-datasource「编辑保存 + 删除确认」
/databaseConfig删/批删确认键盘首焦「删除」;Esc 归还不删;Tab trapADR-0016 键盘弹层database-config-delete-keyboard
/databaseConfig同步状态钮ping + toast + 徽章更新adr0008-datasource「同步状态」
/databaseConfig 顶栏「统计」按钮已移除(原无 onClick)死 affordance🗑顶栏无该按钮(仅表单「需要帮助?」文案)
/databaseConfig 顶栏「帮助」按钮已移除(原无 onClick)死 affordance🗑顶栏无该按钮(仅表单「需要帮助?」文案)

W6 — 外围与账户

表面控件预期闭环关联链路状态验证
DesignLayout 菜单数据域_defaultProps 已摘;路由保留实验页北极星弱data-domain.spec;深链见「实验功能」
DesignLayout 菜单查询_defaultProps 已摘;路由保留实验深链exec 忽略所选 DSdesign-query.spec
DesignLayout 菜单Chat SQL侧栏已隐藏;路由保留实验页AI 后置W6 裁剪导航
/design/dataDomain页内类型域树实验;不扩主旅程闭环📋不扩 E2E 编辑
/design/table/query页内运行/计划实验;失败有 toast;不扩真·DS SELECT📋不扩 JDBC 查询台
/design/table/chatsql页内发送等实验;不作为北极星闭环📋不扩模型
/design/table/setting/defaultField默认字段保存toast + 新表带默认字段default-field.spec「编辑保存有 toast」
/design/table/setting/default系统默认项同项目菜单默认项project-menu「默认项设置」
/dataQuery页内运行/CRUD实验;失败有 toast;不扩真·DS SELECT📋不扩 JDBC 查询台
/account/settings基本资料保存toastaccount-settings.spec
/account/settings壳键盘 Skip/TabSkip→主表单;字段→保存;focus-visible;无 trapHomeLayoutaccount-settings-keyboard.spec
/account/settings「更换头像」Upload改为「头像上传暂未开放」文案W6 去假上传
/account/settings其它 selectKey 页签可切换有内容account-settings.spec 头像→security/identification
/project/group/setting/basic保存基本设置toastGroupLayout/W0group-basic-setting.spec
/project/group/setting/permission权限组维护成员可见accessgroup-layout-nav「权限组」
GroupLayout 菜单返回项目列表/dataModelsgroup-layout-nav「返回/打开」
GroupLayout 菜单打开模型→ 设计器projectIdgroup-layout-nav「返回/打开」
/*404 页未知路径友好提示not-found.spec

其它已覆盖横切

表面控件预期闭环关联链路状态验证
已删认证路径/login/success前端无页;后端不可用清死代码dead-auth-routes.spec
画布大项目视口裁剪离屏节点不渲染性能预算canvas-scale.spec
协作 sync远端改动 toastinfo / warning +「保存版本」→ version/all 落库(≤1/min)ADR-0009sync-toast.spec(全路径+节流)
加载骨架列表/设计器/版本aria-busy + 可访问名loading.spec
UX 不变量死 affordance/账密全旅程截图+断言ux-audit.spec
空 projectJSON团队项目加模型可新增模型empty-projectjson.spec

统计(v1 初版)

状态行数
90
🚧0
🗑6
📋6
合计102

📋 延期(本阶段不啃):论坛外链、VIP 角标、dataDomain / query / chatsql / dataQuery。
Vision loop:矩阵 🚧=0 时,优先可行动矩阵 📋 或 roadmap 下一 📋(Issue seed / AI),见 scripts/agent-loop-vision.prompt.md