docs: 归档任务 #222
This commit is contained in:
@@ -0,0 +1,64 @@
|
|||||||
|
# 222 Admin:修复 AI 服务商配置新增后未落库
|
||||||
|
|
||||||
|
- 类型:缺陷
|
||||||
|
- 父级大工单:#14
|
||||||
|
- 所属 MVP / 版本:#199 / AI规格批量匹配
|
||||||
|
- 状态:已完成,待用户验收
|
||||||
|
- 日期:2026-08-14
|
||||||
|
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/222
|
||||||
|
|
||||||
|
## 背景与目标
|
||||||
|
|
||||||
|
管理员在“AI 配置”提交合法服务商信息后,页面执行正常的 `303 See Other` 跳转,但新增
|
||||||
|
配置没有落库,因而无法继续保存 API Key、测试连接和启用。目标是恢复新增流程,并让默认
|
||||||
|
测试在不依赖真实 MySQL 时也能捕获 SQL 参数数量错误。
|
||||||
|
|
||||||
|
## 最终方案
|
||||||
|
|
||||||
|
`InsertAIProvider` 的字段列表在两个固定值后只剩创建人、更新人、创建时间和更新时间四个
|
||||||
|
字段,原 SQL 却提供了五个尾部占位符。现已把尾部占位符改为四个,使总计 11 个占位符与
|
||||||
|
11 个实参逐项对应。
|
||||||
|
|
||||||
|
新增轻量假 `Execer` 测试,在默认测试环境核对占位符数量、参数数量、参数顺序以及固定的
|
||||||
|
`enabled=0`、`last_test_status='pending'`。另增加 MySQL 集成用例验证新增、列表回显、
|
||||||
|
`create` 审计、重名拒绝和失败事务一致性,并增加 Web 测试区分成功/校验失败的 303 跳转与
|
||||||
|
数据库异常的 500 响应。
|
||||||
|
|
||||||
|
本次没有数据库结构变化,不增加迁移,也不改变 API Key 的独立密钥存储流程。此前失败的
|
||||||
|
新增请求没有成功提交,不需要清理数据。
|
||||||
|
|
||||||
|
## 改了哪些
|
||||||
|
|
||||||
|
- `admin/repository/ai_config.go`:修正新增配置 INSERT 占位符数量。
|
||||||
|
- `admin/repository/ai_config_test.go`:增加无需数据库的 SQL 参数契约测试。
|
||||||
|
- `admin/service/ai_config_test.go`:增加真实 MySQL 新增、审计、查询、重名和事务测试。
|
||||||
|
- `admin/handler/web/ai_config_test.go`:增加 303 成功/错误参数、500 数据库异常以及真实
|
||||||
|
MySQL 页面提交后的列表回显测试。
|
||||||
|
|
||||||
|
## 验收结果
|
||||||
|
|
||||||
|
| 验收标准 | 结果 |
|
||||||
|
|---|---|
|
||||||
|
| 合法配置可以执行参数数量正确的 INSERT,跳转后可由列表查询 | 通过;真实 MySQL 项已编写但当前环境跳过 |
|
||||||
|
| 默认测试保护占位符数量和字段参数顺序 | 通过 |
|
||||||
|
| 配置与 create 审计同事务,失败不留半条数据 | 通过;真实 MySQL 项已编写但当前环境跳过 |
|
||||||
|
| 重名和非法输入不新增并给出明确错误 | 通过;重名真实 MySQL项当前环境跳过 |
|
||||||
|
| 成功 303 使用 msg,校验失败使用 error,数据库异常返回 500 | 通过 |
|
||||||
|
| 不改 schema 和 API Key 独立保存流程 | 通过 |
|
||||||
|
| 固定 Go 1.23.0 的 build、test、vet | 通过 |
|
||||||
|
|
||||||
|
## 测试
|
||||||
|
|
||||||
|
- 执行的命令:
|
||||||
|
- `go test ./repository ./service ./handler/web -run 'Test(InsertAIProvider|SaveAIProviderConfig|RedirectAIConfig|AIConfigSave_)' -count=1 -v`
|
||||||
|
- `$env:GOTOOLCHAIN='go1.23.0'; go build ./...; go test ./... -count=1; go vet ./...`
|
||||||
|
- `git diff --check`
|
||||||
|
- 结果:默认 SQL 契约和 Web 回归测试通过;固定 Go 1.23.0 的完整构建、测试和 vet 通过。
|
||||||
|
MySQL 专项用例被测试套件发现,并在未设置测试库开关时明确跳过。
|
||||||
|
- **没验证到的部分**:当前环境没有启用 `CMAUTOBUY_MYSQL_TEST=1` 的独立 MySQL 8.4
|
||||||
|
`_test` 基础库,因此没有实际执行新增、审计和列表回显集成用例;没有使用生产库代替。
|
||||||
|
未在用户当前浏览器中重新提交表单进行人工验收。
|
||||||
|
|
||||||
|
## 相关提交
|
||||||
|
|
||||||
|
- `01469f7` fix: 修复 AI 服务商配置新增失败 (#222)
|
||||||
Reference in New Issue
Block a user