test-spec.md 2.9 KB

测试 Spec — AiTable 选中态与数字字段类型回归修复

status: complete created: 2026-07-18

1. 增量范围

级别 场景 预期
P0 三种数字字段类型别名 均识别为数字输入,普通 input 不误判
P0 自定义行类为字符串/函数 原类名保留,并按 checked 状态追加统一选中类
P0 src/views 页面配置 type: 'input-number' 零残留
P1 AiForm 共享链路 数字渲染、必填校验、回填转换和查询控件均使用统一判断
P1 AiTable 样式 选中态规则覆盖普通、排序、固定左/右单元格
P2 前端集成 目标 ESLint 与生产构建通过
P2 浏览器交互 排序后勾选行背景连续;数字字段为 NInputNumber 且 min 生效

2. 执行命令

source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
  src/components/ai-form/__tests__/field-type-utils.spec.js \
  src/components/ai-form/__tests__/table-state-utils.spec.js
pnpm exec eslint \
  src/components/ai-form/AiTable.vue \
  src/components/ai-form/AiFormItem.vue \
  src/components/ai-form/AiForm.vue \
  src/components/ai-form/AiCrudPage.vue \
  src/components/ai-form/AiCustomQuery.vue \
  src/components/ai-form/field-type-utils.js \
  src/components/ai-form/table-state-utils.js \
  src/components/ai-form/__tests__/field-type-utils.spec.js \
  src/components/ai-form/__tests__/table-state-utils.spec.js \
  $(rg -l "type:\\s*['\"]number['\"]" src/views/ai src/views/data src/views/flow src/views/message src/views/system)
rg -n "type:\\s*['\"]input-number['\"]" src/views
NODE_OPTIONS=--max-old-space-size=8192 pnpm build

3. 浏览器验证

  • 先检查本地 5173/8580 服务是否已由用户启动。
  • 已启动时,登录后进入任意 AiCrudPage:点击可排序表头,再勾选一行,检查整行背景与固定列连续。
  • 打开包含排序/超时/容量等数字字段的编辑弹窗,检查 DOM 为 .n-input-number,输入小于 min 的值时控件约束生效。
  • 不主动启动真实 Admin/数据库;若环境不具备条件,在执行日志明确标记跳过原因。

4. 完成标准

  • 定向测试、目标 ESLint、生产构建和空白检查通过。
  • 静态扫描无错误类型残留。
  • 浏览器验证已执行,或有具体且非阻断的跳过原因。
  • 所有实际命令、结果、警告和服务清理情况写入 execution-log.md

5. 实际结果

验证项 结果
定向 Vitest passed,4 files / 15 tests
核心改动 ESLint passed,0 errors;保留 AiForm 既有 1 warning
页面错误类型扫描 passed,type: 'input-number' 零残留
Playwright passed,排序/选中/固定列背景一致,NInputNumber 与 min: 0 生效,0 console/page errors
前端生产构建 passed,8693 modules,1m35s
git diff --check passed