`黑色【短袖】` 与 `黑色【長袖】` 剥离后都成了 `黑色`,档案里只有一个条目,两个 不同商品共用一份映射,必然有一半买错。#289 因此拦截,但人工匹配救不了——坏的是 键本身。线上 59 个塌缩键、45 个商品、344 条明细被卡住。 新增 sybspec.ResolveKeys:只在会产生歧义时保留括号内容。不塌缩的键与今天逐字 一致,线上一万四千多条明细中的绝大多数不受影响。 - 消歧需要同组全部原始规格,单条明细判断不了自己是否安全,因此在拿到 shopeeProduct 之后、写档案之前做,并回写键发生变化的兄弟明细:新明细的到来 可能让原本安全的键变成歧义,不同步会造成同组一半旧键一半新键。 - 不碰人工或 AI 已确认的明细,与 Reparse 不带 force 时的规则一致。 - 重解析同样走消歧,否则它会把键写回塌缩形式、悄悄撤销导入时的拆分。 - 键比较与产出统一去空白:SYB 对括号前的空格写法不一致,否则同一规格的两种写法 会被误判为歧义。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F