Admin:实现 AI 规格候选匹配、直接落库与来源审计 #201

Open
opened 2026-08-13 10:05:27 +08:00 by ila · 3 comments
Owner

基本信息

  • 类型:需求
  • 父级大工单:#14
  • 所属 MVP / 版本:#199 / AI规格批量匹配
  • 阶段:2. AI 匹配核心与数据审计
  • 依赖:#200

要解决什么

现有规则只能对 SYB 规格和 PDD 可购买 SKU 排序,最终必须逐条人工保存。需要在规则存在歧义时调用 AI,从服务器给出的真实候选中选择;通过硬校验的结果直接写入现有有效映射并标记为 AI。人工以后修改时,当前来源改为人工,但 AI 决策历史必须保留。

做什么 / 不做什么

  • 做:
    • 增加 OpenAI 兼容模型客户端和可测试替身。
    • 先复用现有确定性解析、冲突判断和候选生成,再把有歧义的有限候选交给 AI。
    • AI 只返回候选 ID、结论、置信度、简短理由和冲突/缺失维度。
    • 通过硬门禁后直接保存 spec_mappings,当前来源标为 ai。
    • 保存模型/提示词/规则版本、置信度、候选和最终选择的脱敏审计。
    • 人工保存现有详情映射时,将当前来源改为 manual 并保留历史审计。
    • 已有有效人工映射直接复用,AI 永不覆盖。
  • 不做:
    • 不让模型生成不存在的 PDD 规格。
    • 不自动创建采购任务、不修改 Client 四接口、不自动付款。
    • 不保存完整提示词、完整请求/响应、订单号、个人数据或凭据。
    • 不在本工单实现列表批量页面。

怎么做

  • 预计新增/修改 admin/llm/(或等价外部客户端边界)、admin/service/specmatch*.go、admin/service/purchase_workflow.go、admin/model/、admin/repository/mapping.go、MySQL 迁移和测试。
  • 给当前有效映射增加来源、服务商/模型或来源版本、置信度和简短理由;新增只追加的 AI 匹配决策审计。具体迁移号使用实施时下一个未占用版本。
  • 输入按“蝦皮商品 + spec_key + PDD 商品 + context_version”建立稳定身份;模型候选使用短 ID,服务端维护 ID 到真实 pdd_option_key 的映射。
  • 自动写入硬门禁:
    • PDD 已采集,候选仍存在、可购买且数据结构有效;
    • 无明确颜色冲突;
    • 有多个值的额外维度必须从 SYB/商品上下文得到确定信号,否则拒绝;
    • 模型结构合法、选择属于候选、置信度达到管理员配置阈值;
    • 保存前重新读取并比较 context_version;
    • 当前不存在有效人工映射。
  • 直接写入继续使用事务、现有映射唯一键和审计原则。模型失败、超时、拒绝或不确定只返回逐条原因,不写映射。
  • 当前 AI 映射可被采购流程视为有效映射;人工详情保存覆盖后来源变为 manual,不能删除原 AI 审计。
  • 模型输入只包含商品/规格匹配所需文本,不包含订单号、店铺账号、用户、地址、Client 或凭据。

验收标准

  • AI 只能从服务器提供的真实、当前可购买候选中选择,伪造候选 ID 被拒绝。
  • 唯一确定规则结果不浪费 AI 调用;已有人工映射不调用 AI且不被覆盖。
  • 颜色冲突、额外维度不明确、低置信度、超时、无效 JSON 和上下文变化均不写映射。
  • 合格结果事务写入有效映射,来源为 AI,并能通过现有采购前映射校验。
  • 人工修改后当前来源变为人工,原 AI 决策审计仍存在。
  • PDD 重新采集导致选项失效时,AI 映射与人工映射一样被判定失效。
  • 审计记录包含必要版本和选择信息,但不含 API Key、完整提示词、完整响应或订单/个人数据。
  • 并发处理同一规格时保持幂等,不覆盖刚刚保存的人工映射。
  • MySQL 8.4 _test 首建、升级、重复迁移、事务回滚和并发测试通过。
  • 固定 Go 1.23.0 的 build、test、vet 通过。

怎么验证

从 admin/ 执行固定工具链全���测试;用伪模型服务覆盖成功、超时、低置信度、伪造候选、提示注入文本和格式错误;用独立 MySQL 8.4 _test 库覆盖迁移、并发及人工覆盖审计。

风险和回退

  • 风险:错误映射会进入真实采购准备流程。硬门禁、人工映射优先、上下文版本、候选白名单和完整审计必须同时存在,不能仅依赖模型置信度。
  • 回退:关闭 AI 功能后现有人工详情流程继续可用。已写入 AI 映射不做破坏性批量删除,可由采购员在详情页人工修改;必要时按审计定位并逐条处理。
## 基本信息 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#199 / AI规格批量匹配 - 阶段:2. AI 匹配核心与数据审计 - 依赖:#200 ## 要解决什么 现有规则只能对 SYB 规格和 PDD 可购买 SKU 排序,最终必须逐条人工保存。需要在规则存在歧义时调用 AI,从服务器给出的真实候选中选择;通过硬校验的结果直接写入现有有效映射并标记为 AI。人工以后修改时,当前来源改为人工,但 AI 决策历史必须保留。 ## 做什么 / 不做什么 - 做: - 增加 OpenAI 兼容模型客户端和可测试替身。 - 先复用现有确定性解析、冲突判断和候选生成,再把有歧义的有限候选交给 AI。 - AI 只返回候选 ID、结论、置信度、简短理由和冲突/缺失维度。 - 通过硬门禁后直接保存 `spec_mappings`,当前来源标为 `ai`。 - 保存模型/提示词/规则版本、置信度、候选和最终选择的脱敏审计。 - 人工保存现有详情映射时,将当前来源改为 `manual` 并保留历史审计。 - 已有有效人工映射直接复用,AI 永不覆盖。 - 不做: - 不让模型生成不存在的 PDD 规格。 - 不自动创建采购任务、不修改 Client 四接口、不自动付款。 - 不保存完整提示词、完整请求/响应、订单号、个人数据或凭据。 - 不在本工单实现列表批量页面。 ## 怎么做 - 预计新增/修改 `admin/llm/`(或等价外部客户端边界)、`admin/service/specmatch*.go`、`admin/service/purchase_workflow.go`、`admin/model/`、`admin/repository/mapping.go`、MySQL 迁移和测试。 - 给当前有效映射增加来源、服务商/模型或来源版本、置信度和简短理由;新增只追加的 AI 匹配决策审计。具体迁移号使用实施时下一个未占用版本。 - 输入按“蝦皮商品 + spec_key + PDD 商品 + context_version”建立稳定身份;模型候选使用短 ID,服务端维护 ID 到真实 `pdd_option_key` 的映射。 - 自动写入硬门禁: - PDD 已采集,候选仍存在、可购买且数据结构有效; - 无明确颜色冲突; - 有多个值的额外维度必须从 SYB/商品上下文得到确定信号,否则拒绝; - 模型结构合法、选择属于候选、置信度达到管理员配置阈值; - 保存前重新读取并比较 `context_version`; - 当前不存在有效人工映射。 - 直接写入继续使用事务、现有映射唯一键和审计原则。模型失败、超时、拒绝或不确定只返回逐条原因,不写映射。 - 当前 AI 映射可被采购流程视为有效映射;人工详情保存覆盖后来源变为 manual,不能删除原 AI 审计。 - 模型输入只包含商品/规格匹配所需文本,不包含订单号、店铺账号、用户、地址、Client 或凭据。 ## 验收标准 - [ ] AI 只能从服务器提供的真实、当前可购买候选中选择,伪造候选 ID 被拒绝。 - [ ] 唯一确定规则结果不浪费 AI 调用;已有人工映射不调用 AI且不被覆盖。 - [ ] 颜色冲突、额外维度不明确、低置信度、超时、无效 JSON 和上下文变化均不写映射。 - [ ] 合格结果事务写入有效映射,来源为 AI,并能通过现有采购前映射校验。 - [ ] 人工修改后当前来源变为人工,原 AI 决策审计仍存在。 - [ ] PDD 重新采集导致选项失效时,AI 映射与人工映射一样被判定失效。 - [ ] 审计记录包含必要版本和选择信息,但不含 API Key、完整提示词、完整响应或订单/个人数据。 - [ ] 并发处理同一规格时保持幂等,不覆盖刚刚保存的人工映射。 - [ ] MySQL 8.4 `_test` 首建、升级、重复迁移、事务回滚和并发测试通过。 - [ ] 固定 Go 1.23.0 的 build、test、vet 通过。 ## 怎么验证 从 `admin/` 执行固定工具链全���测试;用伪模型服务覆盖成功、超时、低置信度、伪造候选、提示注入文本和格式错误;用独立 MySQL 8.4 `_test` 库覆盖迁移、并发及人工覆盖审计。 ## 风险和回退 - 风险:错误映射会进入真实采购准备流程。硬门禁、人工映射优先、上下文版本、候选白名单和完整审计必须同时存在,不能仅依赖模型置信度。 - 回退:关闭 AI 功能后现有人工详情流程继续可用。已写入 AI 映射不做破坏性批量删除,可由采购员在详情页人工修改;必要时按审计定位并逐条处理。
Author
Owner

2026-08-14 开始实施 #201。范围固定为模型客户端、候选白名单与硬门禁、有效映射来源字段、只追加 AI 决策审计及人工覆盖优先;不实现列表批量页面,不创建采购任务,不改 Client 接口。计划使用 MySQL v21。

2026-08-14 开始实施 #201。范围固定为模型客户端、候选白名单与硬门禁、有效映射来源字段、只追加 AI 决策审计及人工覆盖优先;不实现列表批量页面,不创建采购任务,不改 Client 接口。计划使用 MySQL v21。
Author
Owner

实施记录(2026-08-14)

#201 核心实现完成,提交 aac289a。

  • MySQL v21 为当前映射增加 manual/rule/ai 来源和快照字段,并新增只追加 AI 决策审计。
  • 唯一确定规则结果直接保存为 rule,不调用模型;歧义候选才使用 OpenAI 兼容客户端。
  • 模型只得到商品标题、SYB 规格和服务端候选短编号;伪造编号不能转换成真实选项。
  • 增加颜色冲突、额外维度、候选可购买性、置信度和保存前上下文版本硬门禁。
  • 自动 upsert 使用“人工永不覆盖、相同上下文先写入者获胜、上下文更新后可替换旧自动结果”的数据库条件;人工详情保存会把当前来源改回 manual,AI 审计不删除。
  • 固定 Go 1.23.0 的 build/test/vet 全部通过;假模型覆盖严格 JSON、伪造候选、低置信度、规则短路和人工并发优先。
  • 本机未启用 CMAUTOBUY_MYSQL_TEST,因此 MySQL 8.4 _test 的迁移、事务和并发用例已编写但未执行;未访问生产数据库,也未调用真实模型。

待归档后等待用户验收。

## 实施记录(2026-08-14) #201 核心实现完成,提交 `aac289a`。 - MySQL v21 为当前映射增加 `manual/rule/ai` 来源和快照字段,并新增只追加 AI 决策审计。 - 唯一确定规则结果直接保存为 `rule`,不调用模型;歧义候选才使用 OpenAI 兼容客户端。 - 模型只得到商品标题、SYB 规格和服务端候选短编号;伪造编号不能转换成真实选项。 - 增加颜色冲突、额外维度、候选可购买性、置信度和保存前上下文版本硬门禁。 - 自动 upsert 使用“人工永不覆盖、相同上下文先写入者获胜、上下文更新后可替换旧自动结果”的数据库条件;人工详情保存会把当前来源改回 manual,AI 审计不删除。 - 固定 Go 1.23.0 的 build/test/vet 全部通过;假模型覆盖严格 JSON、伪造候选、低置信度、规则短路和人工并发优先。 - 本机未启用 CMAUTOBUY_MYSQL_TEST,因此 MySQL 8.4 _test 的迁移、事务和并发用例已编写但未执行;未访问生产数据库,也未调用真实模型。 待归档后等待用户验收。
Author
Owner

归档已完成:docs/task/201-Admin实现AI规格候选匹配直接落库与来源审计.md,归档提交 c0ed12d。工单保持开启等待用户验收;MySQL 8.4 _test 与真实模型验证项已在归档中明确列出。

归档已完成:docs/task/201-Admin实现AI规格候选匹配直接落库与来源审计.md,归档提交 c0ed12d。工单保持开启等待用户验收;MySQL 8.4 _test 与真实模型验证项已在归档中明确列出。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#201