tasks.md 4.4 KB

AiTable Selection and Number Field Regression Fix Implementation Plan

For agentic workers: inline execution in the current workspace is required; preserve unrelated user changes and do not commit or push automatically.

Goal: 修复 AiTable 选中背景断层,并统一 AiForm 数字字段类型契约。

Architecture: AiTable 使用可测试的行类名合并函数表达受控选中态,再由组件级主题 CSS 统一覆盖不同列状态。AiForm 使用集中式类型判断函数兼容历史别名,页面配置机械归一为标准 number

Tech Stack: Vue 3、Naive UI、Vitest、ESLint、Vite。


Task 1:建立回归测试工具

Files:

  • Create: forge-admin-ui/src/components/ai-form/field-type-utils.js
  • Create: forge-admin-ui/src/components/ai-form/table-state-utils.js
  • Create: forge-admin-ui/src/components/ai-form/__tests__/field-type-utils.spec.js
  • Create: forge-admin-ui/src/components/ai-form/__tests__/table-state-utils.spec.js

  • [x] 新增 isNumberFieldType(type),覆盖 numberinputNumberinput-number

  • [x] 新增 isInputLikeFieldType(type),为占位符和必填文案统一判断文本/数字输入。

  • [x] 新增 resolveTableRowClassName(rowClassName, row, index, checked),合并调用方类名与选中态类名。

  • [x] 先执行两个定向 Vitest,确认工具契约通过。

Task 2:修复 AiTable 选中背景

Files:

  • Modify: forge-admin-ui/src/components/ai-form/AiTable.vue
  • Test: forge-admin-ui/src/components/ai-form/__tests__/table-state-utils.spec.js

  • [x] 为 AiTable 增加正式的 rowClassName prop,并将合并后的 resolver 传给 n-data-table

  • [x] 根据 checked-row-keys 为行追加 ai-table-row--checked

  • [x] 为普通、排序、固定选择和固定操作单元格增加统一选中/选中悬停背景。

  • [x] 保持现有勾选协议、行点击行为、排序和筛选事件不变。

Task 3:统一数字字段共享链路

Files:

  • Modify: forge-admin-ui/src/components/ai-form/AiFormItem.vue
  • Modify: forge-admin-ui/src/components/ai-form/AiForm.vue
  • Modify: forge-admin-ui/src/components/ai-form/AiCrudPage.vue
  • Modify: forge-admin-ui/src/components/ai-form/AiCustomQuery.vue
  • Test: forge-admin-ui/src/components/ai-form/__tests__/field-type-utils.spec.js

  • [x] AiFormItem 数字渲染与占位符识别改用统一类型函数。

  • [x] AiForm 必填规则、触发器和空值校验改用统一类型函数。

  • [x] AiCrudPage 编辑回填和运行时数字字段判断兼容历史别名。

  • [x] AiCustomQuery 的数字控件归一化兼容历史别名。

Task 4:清理页面错误配置

Files:

  • Modify: forge-admin-ui/src/views/ai/context-config.vue
  • Modify: forge-admin-ui/src/views/ai/model.vue
  • Modify: forge-admin-ui/src/views/data/dataset-category.vue
  • Modify: forge-admin-ui/src/views/flow/spelTemplate.vue
  • Modify: forge-admin-ui/src/views/message/biz-type.vue
  • Modify: forge-admin-ui/src/views/system/client.vue
  • Modify: forge-admin-ui/src/views/system/config.vue
  • Modify: forge-admin-ui/src/views/system/dictData.vue
  • Modify: forge-admin-ui/src/views/system/excel-export-config.vue
  • Modify: forge-admin-ui/src/views/system/job-config.vue
  • Modify: forge-admin-ui/src/views/system/notice.vue
  • Modify: forge-admin-ui/src/views/system/org.vue
  • Modify: forge-admin-ui/src/views/system/post.vue
  • Modify: forge-admin-ui/src/views/system/role.vue
  • Modify: forge-admin-ui/src/views/system/storage-config.vue
  • Modify: forge-admin-ui/src/views/system/tenant.vue

  • [x] 将所有 type: 'input-number' 机械替换为 type: 'number',不改动字段名、默认值、校验或 props。

  • [x] 扫描整个 src/views,确认错误写法为零。

Task 5:增量验证与回填

Files:

  • Modify: code-copilot/changes/ai-table-number-field-regression-fix/spec.md
  • Modify: code-copilot/changes/ai-table-number-field-regression-fix/tasks.md
  • Modify: code-copilot/changes/ai-table-number-field-regression-fix/test-spec.md
  • Modify: code-copilot/changes/ai-table-number-field-regression-fix/execution-log.md

  • [x] 执行定向 Vitest。

  • [x] 执行目标 ESLint。

  • [x] 执行 src/views 类型零残留扫描。

  • [x] 执行前端生产构建。

  • [x] 若已有本地前端与后端服务,则使用 Playwright 复验排序后勾选行和数字输入;否则记录为未执行项。

  • [x] 执行 git diff --check 并回填实际证据。