优化:AI 匹配规格设置页增加置信度阈值编辑入口 #175

Closed
opened 2026-08-31 17:11:44 +08:00 by ila · 2 comments
Owner

Gitea MCP 未向当前会话暴露,按仓库规则回退项目根目录安全配置与 Gitea API 创建本工单;凭据未写入工单、代码或日志。

原始需求摘要

来源:用户于 2026-08-31 提出,AI 匹配的置信度阈值 autoConfirmMinConfidence 目前只能在数据库里改,问是否应该加到「AI 匹配规格」设置页的「服务设置」区块。用户确认后要求按流程建单。

目的:让运维通过界面调整置信度阈值,不再需要直接改库。

基线与已核实事实

代码基线:5338dd0(2026-08-31)。核验日期 2026-08-31。

  • 接口与校验已完整存在:aimatching.SaveSettingsRequest.AutoConfirmMinConfidence *float64(server/app/goauto/aimatching/service.go:71),保存时校验范围 0~1(service.go 约 219 行),默认值 0.9;读取接口 SettingsView.AutoConfirmMinConfidence 同样已返回。
  • 页面 web/src/views/goauto/ai-matching-settings/index.vue 的「服务设置」区块(:37-46)目前只有 Base URL、模型、超时时间(秒)、API Key 四项,缺少这一项;表单校验规则 rules 也未覆盖它。
  • 该阈值目前有两处使用:
    1. 采购期精确规格决策(#46):达到阈值才允许把 AI 结果当作精确匹配使用;
    2. 虾皮商品规格映射 AI 建议(#172,shopeeproduct/ai_suggest.go):达到阈值才把 AI 建议预填进草稿,未达到只展示建议与理由,不预填,需人工手动选择。
  • 页面现有说明文字(:20-26 的 el-alert)只描述了第 1 种用途(采购期精确匹配),未提及 #172 引入的第二种用途。
  • 页面已有非管理员只读分支(:12-18),新增字段需同时适配该分支(只读展示,不可编辑)。

目标

  1. 「服务设置」区块新增置信度阈值输入项,管理员可查看并修改,范围 0~1。
  2. 非管理员只读视图同步展示该值(只读,不可编辑),与其余三项待遇一致。
  3. 补充或调整页面说明文字,同时覆盖阈值的两种用途(采购期精确匹配、#172 规格映射 AI 建议预填),避免运维只想到一边而误判调整影响范围。

非目标

  • 不修改后端接口、校验逻辑与默认值,接口已就绪。
  • 不修改 #46 采购期决策逻辑与 #172 的建议预填逻辑本身。
  • 不新增权限级别,沿用现有「仅管理员可编辑」的既有权限模型。
  • 不修改本页其余字段(Base URL、模型、超时时间、API Key)的行为。

前置依赖与并行性

  • 无服务端依赖,纯前端改动。
  • 与 #172 无代码重叠(#172 改的是 shopee-products/index.vue),可并行。

固定实施方案

  • 在「服务设置」区块的超时时间与 API Key 之间(或紧邻两处引用位置之后,具体顺序按标注截图确认)新增:
    • el-form-item 标签「AI 建议置信度阈值」,使用 el-input-number,:min="0" :max="1" :step="0.01",禁用条件与其余字段一致(!form.enabled || saving,非管理员只读)。
    • 表单校验规则补充范围 0~1,与后端校验对齐,避免提交后才被拒绝。
  • 保存逻辑复用现有 saveSettings/表单提交路径,新增字段随表单一并提交,不新增单独接口调用。
  • 页面说明文字(el-alert 或紧邻该表单项下方的辅助文字)补充第二种用途的说明,明确写出:达到阈值预填草稿,未达到只展示建议、需人工选择。
  • 非管理员只读分支同步展示当前阈值(只读文本或禁用的 el-input-number,与页面其余只读字段风格一致)。

设计证据

现有界面的小范围调整:复用已有表单区块的布局、标签风格、禁用与只读规范,不新增页面、不新增导航、不改变整体信息架构。实施前提供标注截图交用户确认,覆盖:管理员可编辑视图、非管理员只读视图、超出 0~1 范围时的校验提示三个状态。

验收标准

  • 管理员在「服务设置」区块可查看并修改置信度阈值,范围限定 0~1,保存后数据库 auto_confirm_min_confidence 正确更新。
  • 非管理员视图只读展示当前阈值,不可编辑。
  • 前端校验拒绝超出 0~1 范围的输入,提示与后端校验语义一致。
  • 页面说明文字同时覆盖采购期精确匹配与 #172 规格映射建议预填两种用途。
  • 未修改后端接口、校验逻辑、默认值与 #46、#172 的匹配/建议逻辑本身。
  • Web 单元测试与既有 e2e 测试通过。

必测场景

  • 管理员保存 0、1 边界值与 0.5 中间值,刷新后数值保持。
  • 输入超出范围(负数、大于 1)时前端阻止提交并给出明确提示。
  • 非管理员账号打开页面,阈值只读展示、无法编辑,其余字段行为不变。
  • 未启用 AI 匹配时,阈值输入项按现有其余字段的禁用规则一并禁用。

风险与安全门禁

  • 无权限、安全、并发、数据库结构变化;纯展示层新增一个已有后端字段的编辑入口。
  • 阈值调整会同时影响采购期自动确认和 #172 建议预填两条路径,说明文字必须覆盖两者,避免运维误判影响范围后调错阈值导致预期外的自动确认或大量未预填。

文档影响

无长期文档影响。 未新增接口、参数或数据结构,仅为已有字段补充界面入口;启动、测试、部署与排错方式均未变化。因此跳过 Wiki 更新与同步。

状态

待确认(2026-08-31 创建,等待用户确认方案与界面截图后方可实施)。

> Gitea MCP 未向当前会话暴露,按仓库规则回退项目根目录安全配置与 Gitea API 创建本工单;凭据未写入工单、代码或日志。 ## 原始需求摘要 来源:用户于 2026-08-31 提出,AI 匹配的置信度阈值 `autoConfirmMinConfidence` 目前只能在数据库里改,问是否应该加到「AI 匹配规格」设置页的「服务设置」区块。用户确认后要求按流程建单。 目的:让运维通过界面调整置信度阈值,不再需要直接改库。 ## 基线与已核实事实 代码基线:`5338dd0`(2026-08-31)。核验日期 2026-08-31。 - 接口与校验已完整存在:`aimatching.SaveSettingsRequest.AutoConfirmMinConfidence *float64`(`server/app/goauto/aimatching/service.go:71`),保存时校验范围 0~1(`service.go` 约 219 行),默认值 0.9;读取接口 `SettingsView.AutoConfirmMinConfidence` 同样已返回。 - 页面 `web/src/views/goauto/ai-matching-settings/index.vue` 的「服务设置」区块(`:37-46`)目前只有 Base URL、模型、超时时间(秒)、API Key 四项,缺少这一项;表单校验规则 `rules` 也未覆盖它。 - 该阈值目前有两处使用: 1. 采购期精确规格决策(#46):达到阈值才允许把 AI 结果当作精确匹配使用; 2. 虾皮商品规格映射 AI 建议(#172,`shopeeproduct/ai_suggest.go`):达到阈值才把 AI 建议预填进草稿,未达到只展示建议与理由,不预填,需人工手动选择。 - 页面现有说明文字(`:20-26` 的 `el-alert`)只描述了第 1 种用途(采购期精确匹配),未提及 #172 引入的第二种用途。 - 页面已有非管理员只读分支(`:12-18`),新增字段需同时适配该分支(只读展示,不可编辑)。 ## 目标 1. 「服务设置」区块新增置信度阈值输入项,管理员可查看并修改,范围 0~1。 2. 非管理员只读视图同步展示该值(只读,不可编辑),与其余三项待遇一致。 3. 补充或调整页面说明文字,同时覆盖阈值的两种用途(采购期精确匹配、#172 规格映射 AI 建议预填),避免运维只想到一边而误判调整影响范围。 ## 非目标 - 不修改后端接口、校验逻辑与默认值,接口已就绪。 - 不修改 #46 采购期决策逻辑与 #172 的建议预填逻辑本身。 - 不新增权限级别,沿用现有「仅管理员可编辑」的既有权限模型。 - 不修改本页其余字段(Base URL、模型、超时时间、API Key)的行为。 ## 前置依赖与并行性 - 无服务端依赖,纯前端改动。 - 与 #172 无代码重叠(#172 改的是 `shopee-products/index.vue`),可并行。 ## 固定实施方案 - 在「服务设置」区块的超时时间与 API Key 之间(或紧邻两处引用位置之后,具体顺序按标注截图确认)新增: - `el-form-item` 标签「AI 建议置信度阈值」,使用 `el-input-number`,`:min="0" :max="1" :step="0.01"`,禁用条件与其余字段一致(`!form.enabled || saving`,非管理员只读)。 - 表单校验规则补充范围 0~1,与后端校验对齐,避免提交后才被拒绝。 - 保存逻辑复用现有 `saveSettings`/表单提交路径,新增字段随表单一并提交,不新增单独接口调用。 - 页面说明文字(`el-alert` 或紧邻该表单项下方的辅助文字)补充第二种用途的说明,明确写出:达到阈值预填草稿,未达到只展示建议、需人工选择。 - 非管理员只读分支同步展示当前阈值(只读文本或禁用的 `el-input-number`,与页面其余只读字段风格一致)。 ## 设计证据 现有界面的小范围调整:复用已有表单区块的布局、标签风格、禁用与只读规范,不新增页面、不新增导航、不改变整体信息架构。实施前提供标注截图交用户确认,覆盖:管理员可编辑视图、非管理员只读视图、超出 0~1 范围时的校验提示三个状态。 ## 验收标准 - [ ] 管理员在「服务设置」区块可查看并修改置信度阈值,范围限定 0~1,保存后数据库 `auto_confirm_min_confidence` 正确更新。 - [ ] 非管理员视图只读展示当前阈值,不可编辑。 - [ ] 前端校验拒绝超出 0~1 范围的输入,提示与后端校验语义一致。 - [ ] 页面说明文字同时覆盖采购期精确匹配与 #172 规格映射建议预填两种用途。 - [ ] 未修改后端接口、校验逻辑、默认值与 #46、#172 的匹配/建议逻辑本身。 - [ ] Web 单元测试与既有 e2e 测试通过。 ## 必测场景 - 管理员保存 0、1 边界值与 0.5 中间值,刷新后数值保持。 - 输入超出范围(负数、大于 1)时前端阻止提交并给出明确提示。 - 非管理员账号打开页面,阈值只读展示、无法编辑,其余字段行为不变。 - 未启用 AI 匹配时,阈值输入项按现有其余字段的禁用规则一并禁用。 ## 风险与安全门禁 - 无权限、安全、并发、数据库结构变化;纯展示层新增一个已有后端字段的编辑入口。 - 阈值调整会同时影响采购期自动确认和 #172 建议预填两条路径,说明文字必须覆盖两者,避免运维误判影响范围后调错阈值导致预期外的自动确认或大量未预填。 ## 文档影响 **无长期文档影响。** 未新增接口、参数或数据结构,仅为已有字段补充界面入口;启动、测试、部署与排错方式均未变化。因此跳过 Wiki 更新与同步。 ## 状态 待确认(2026-08-31 创建,等待用户确认方案与界面截图后方可实施)。
Author
Owner

实施完成,待验收

设计证据:用户于 2026-08-31 确认置信度阈值表单设计。

实现:

  • Admin「AI 规格匹配」服务设置新增“AI 建议置信度阈值”,范围 0~1、步长 0.01、两位小数,AI 未启用或保存中时禁用。
  • 当前数据库值直接回显;保存时随现有设置提交 autoConfirmMinConfidence,不新增接口。
  • 非管理员只读视图展示当前阈值,不展示服务地址、模型和 API Key,也不能编辑或保存。
  • 页面说明同时覆盖采购期精确 AI 决策和虾皮规格建议草稿预填;明确自动预填不等于自动确认或自动采购。
  • 前端校验与后端 0~1 约束一致。

验证:

  • pnpm exec eslint src/views/goauto/ai-matching-settings/index.vue:通过。
  • pnpm build:prod:通过;仅有仓库既有 CSS 伪类和 chunk-size 警告。
  • PLAYWRIGHT_TEST_BASE_URL=http://localhost:9530 PLAYWRIGHT_DISABLE_VIDEO=1 pnpm exec playwright test tests/e2e/ai-matching-confidence.spec.ts:2/2 通过,覆盖管理员回显 0.85、调整并提交 0.75、帮助文案,以及采购员只读展示且无保存入口。

后端接口、校验、默认值、采购期决策与建议预填逻辑均未修改。文档影响为无长期文档影响,跳过 Wiki。

提交:d00f159,已推送 origin/main。工作区中的 server/config/settings.yml 写超时修改与其他无关文件未纳入本提交。状态:待用户验收。

## 实施完成,待验收 设计证据:用户于 2026-08-31 确认置信度阈值表单设计。 实现: - Admin「AI 规格匹配」服务设置新增“AI 建议置信度阈值”,范围 0~1、步长 0.01、两位小数,AI 未启用或保存中时禁用。 - 当前数据库值直接回显;保存时随现有设置提交 `autoConfirmMinConfidence`,不新增接口。 - 非管理员只读视图展示当前阈值,不展示服务地址、模型和 API Key,也不能编辑或保存。 - 页面说明同时覆盖采购期精确 AI 决策和虾皮规格建议草稿预填;明确自动预填不等于自动确认或自动采购。 - 前端校验与后端 0~1 约束一致。 验证: - `pnpm exec eslint src/views/goauto/ai-matching-settings/index.vue`:通过。 - `pnpm build:prod`:通过;仅有仓库既有 CSS 伪类和 chunk-size 警告。 - `PLAYWRIGHT_TEST_BASE_URL=http://localhost:9530 PLAYWRIGHT_DISABLE_VIDEO=1 pnpm exec playwright test tests/e2e/ai-matching-confidence.spec.ts`:2/2 通过,覆盖管理员回显 0.85、调整并提交 0.75、帮助文案,以及采购员只读展示且无保存入口。 后端接口、校验、默认值、采购期决策与建议预填逻辑均未修改。文档影响为无长期文档影响,跳过 Wiki。 提交:`d00f159`,已推送 `origin/main`。工作区中的 `server/config/settings.yml` 写超时修改与其他无关文件未纳入本提交。状态:待用户验收。
Author
Owner

验收通过(2026-09-01,用户确认)。实施内容与设计证据见上方评论;无新增长期事实变化,未触发额外 Wiki 同步。工单关闭。

验收通过(2026-09-01,用户确认)。实施内容与设计证据见上方评论;无新增长期事实变化,未触发额外 Wiki 同步。工单关闭。
ila closed this issue 2026-09-01 09:04:19 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#175