Files
cmautobuy/docs/task/202-Admin顺运宝列表批量AI匹配进度与筛选.md
T
2026-08-14 10:31:21 +08:00

80 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 202 Admin:顺运宝列表增加批量 AI 匹配、进度与筛选
- 类型:需求
- 父级大工单:#14
- 所属 MVP / 版本:#199 / AI规格批量匹配
- 状态:已完成,待用户验收
- 日期:2026-08-14
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/202
## 背景与目标
采购员需要在顺运宝列表批量处理已经关联并采集 PDD 数据的商品,而不是逐条打开详情。
批量操作必须持久化进度、逐条展示结果,并保持人工映射优先、上下文失效保护和“不创建采购
任务”的边界。
## 最终方案
- MySQL v22 增加批次和批次明细表,保存创建人、非敏感配置快照、进度、逐条结果和重启
中断状态,不保存 API Key。
- 顺运宝列表增加“AI匹配”和“匹配记录”,最多提交 100 条。后台使用配置并发上限执行;
相同蝦皮商品、顺运宝规格与 PDD 上下文只处理一次,其余明细从当前有效映射复用。
- 每条继续调用 #201 的核心服务,模型不能绕过候选白名单、硬门禁、上下文版本和人工优先。
单条失败不会回滚其他成功条目。
- 进度弹窗轮询服务端状态,显示总数、已处理、成功、复用、待人工、失败和逐条原因;采购员
只能查看自己的批次,管理员可以查看全部。
- 增加独立匹配来源徽标和“AI规格匹配”来源筛选。人工详情改写会把当前来源改为人工,AI
历史决策和批次记录保留。
- Admin 启动时把遗留的等待中/运行中批次标记为中断,成功映射不回滚,未完成条目可重新
勾选重试。
实施时补充了 `AISpecMatchResult.ConfidenceSet`,用于区分“模型明确返回 0%”和“没有置信度”,
避免批次记录把有效零值误判为空值;不改变 #201 的匹配门禁和保存结论。
## 改了哪些
- `admin/repository/mysql_db.go`、`admin/repository/ai_match_batch.go`:MySQL v22、批次持久化、
进度统计和中断收敛。
- `admin/service/ai_match_batch.go`、`admin/service/ai_specmatch.go`、`admin/service/syb.go`:批次
编排、上下文去重、来源筛选、来源展示和置信度零值语义。
- `admin/handler/web/ai_match.go`、`admin/handler/web/others.go`、`admin/handler/web/web.go`、
`admin/main.go`:创建/查询路由、页面数据和启动恢复。
- `admin/templates/syb/`、`admin/static/js/app.js`、`admin/static/css/app.css`:批量确认、进度
弹窗、轮询、来源徽标和 1366px 紧凑布局。
- `admin/service/ai_match_batch_test.go` 及既有回归测试:去重身份、结果分类、权限、中断和批次
汇总测试。
- `docs/admin/`:同步需求、架构、数据模型、界面和安全基线。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 勾选可匹配明细创建批次,并在服务端限制空选择、重复 ID 和 100 条上限 | 通过 |
| 持久化批次/逐条状态,页面显示并自动刷新全部计数和逐条原因 | 通过 |
| 同一匹配上下文只处理一次,其余明细校验当前共享映射后复用 | 通过(专项集成用例已编写) |
| 人工映射不被覆盖,条件不足、失败和上下文变化不自动写入 | 通过 |
| 合格结果可进入采购就绪,但批量操作不创建任务、不调用 Client | 通过 |
| “AI规格匹配”筛选和列表/详情来源徽标按当前有效来源工作 | 通过 |
| 人工修改后当前来源变为人工,历史审计保留 | 通过 |
| 启动收敛未完成批次,成功结果不回滚,允许安全重试 | 通过(专项集成用例已编写) |
| 采购员只看本人批次,管理员可看全部;页面有文字反馈和可滚动明细 | 通过 |
| Go 构建、测试、vet 和 JavaScript 语法检查 | 通过;真实 MySQL 项见下方未验证说明 |
## 测试
- 执行的命令:
- `go test ./service -run 'Test(AISpecMatchIdentity|BatchItemFromMatch|AIMatchBatch_)' -count=1 -v`
- `go test ./... -count=1`
- `go vet ./...`
- `node --check static/js/app.js`
- `git diff --check`
- 结果:纯逻辑专项测试、完整 Go 测试、vet、JavaScript 语法和差异格式检查通过。MySQL 专项
用例能被测试套件发现,并在没有测试库开关时按项目规则明确跳过。
- **没验证到的部分**:当前环境未提供启用 `CMAUTOBUY_MYSQL_TEST=1` 的独立 MySQL 8.4
`_test` 数据库,因此没有实际执行 v22 首建/升级/重放、真实事务并发和进程重启后的数据库
状态检查;也未连接真实模型服务或在浏览器 1366×768 人工验收。没有使用生产数据库代替。
## 相关提交
- `d64579e` feat: 增加顺运宝批量 AI 规格匹配 (#202)