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。
Files:
forge-admin-ui/src/components/ai-form/field-type-utils.jsforge-admin-ui/src/components/ai-form/table-state-utils.jsforge-admin-ui/src/components/ai-form/__tests__/field-type-utils.spec.jsCreate: forge-admin-ui/src/components/ai-form/__tests__/table-state-utils.spec.js
[x] 新增 isNumberFieldType(type),覆盖 number、inputNumber、input-number。
[x] 新增 isInputLikeFieldType(type),为占位符和必填文案统一判断文本/数字输入。
[x] 新增 resolveTableRowClassName(rowClassName, row, index, checked),合并调用方类名与选中态类名。
[x] 先执行两个定向 Vitest,确认工具契约通过。
Files:
forge-admin-ui/src/components/ai-form/AiTable.vueTest: 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] 保持现有勾选协议、行点击行为、排序和筛选事件不变。
Files:
forge-admin-ui/src/components/ai-form/AiFormItem.vueforge-admin-ui/src/components/ai-form/AiForm.vueforge-admin-ui/src/components/ai-form/AiCrudPage.vueforge-admin-ui/src/components/ai-form/AiCustomQuery.vueTest: forge-admin-ui/src/components/ai-form/__tests__/field-type-utils.spec.js
[x] AiFormItem 数字渲染与占位符识别改用统一类型函数。
[x] AiForm 必填规则、触发器和空值校验改用统一类型函数。
[x] AiCrudPage 编辑回填和运行时数字字段判断兼容历史别名。
[x] AiCustomQuery 的数字控件归一化兼容历史别名。
Files:
forge-admin-ui/src/views/ai/context-config.vueforge-admin-ui/src/views/ai/model.vueforge-admin-ui/src/views/data/dataset-category.vueforge-admin-ui/src/views/flow/spelTemplate.vueforge-admin-ui/src/views/message/biz-type.vueforge-admin-ui/src/views/system/client.vueforge-admin-ui/src/views/system/config.vueforge-admin-ui/src/views/system/dictData.vueforge-admin-ui/src/views/system/excel-export-config.vueforge-admin-ui/src/views/system/job-config.vueforge-admin-ui/src/views/system/notice.vueforge-admin-ui/src/views/system/org.vueforge-admin-ui/src/views/system/post.vueforge-admin-ui/src/views/system/role.vueforge-admin-ui/src/views/system/storage-config.vueModify: forge-admin-ui/src/views/system/tenant.vue
[x] 将所有 type: 'input-number' 机械替换为 type: 'number',不改动字段名、默认值、校验或 props。
[x] 扫描整个 src/views,确认错误写法为零。
Files:
code-copilot/changes/ai-table-number-field-regression-fix/spec.mdcode-copilot/changes/ai-table-number-field-regression-fix/tasks.mdcode-copilot/changes/ai-table-number-field-regression-fix/test-spec.mdModify: 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 并回填实际证据。