# ????

## v1.1.9 - 2026-07-30

- ???????????????????????????????????????
- ??????? 1 ????????????????? 20 ?????????????
- ???????????????????????????????????????????????????????
- ??????????????????????????????????????????????????
- ??????????????????????????????

# 版本记录

## v1.1.8 - 2026-07-30

- 修复二阶段大批量匹配时“本地图片不同名但编号相同/相近”会被跳过的问题。
- 同名未命中时，改为按 DSC/IMG 编号提取小范围候选，再通过 SHA/视觉内容确认，不靠文件名直接判定款号。
- 二阶段新增未匹配原因诊断，页面显示样例，同时写入 `match-diagnostics-latest.json`。
- 日志会记录未匹配样例，方便同事反馈后直接定位是 URL 过期、无候选图，还是本地确实没有同图。
- 新增大批量不同名编号匹配回归测试。

## v1.1.7 - 2026-07-30

- 第 4 步“送审图缺图款”上方新增一个统一的“确认无误，继续回写”按钮。
- 不再给每个缺图款单独加确认按钮，避免人工误操作和页面拥挤。
- 后端写回入口改为：送审图全绿，或人工确认缺图清单后，才允许进入本地表格/钉钉回写。
- 文件夹行号/款号冲突仍属于硬错误，不能通过人工确认绕过。
- 重新读取钉钉数据、重新匹配、重新整理、补图、重新检测会清掉旧的人工确认状态。
- 新增测试覆盖人工确认放行和文件夹冲突拦截。

## v1.1.6 - 2026-07-30

- ???????? recordId ????????????????????????????
- ? HTTP 502/503/504????429 ??????????? 3 ????
- ??????? `Notable.Base.Read` ??????????????????????????
- ???????????????????? recordId ???????????????????????
- ????????????????????????????????????
- ??????? `96 passed`?

# 版本记录

## v1.1.1 - 2026-07-28

- 版本号重置为 1.1.1。
- 基于当前已确认功能重新打包发布。
- 保留二阶段款式图预缓存、真实钉钉写回、本地表格写回、送审图整理和检查结果可视化能力。
- 发布包不再携带任何人工表；首次使用必须由操作人选择并绑定当前最新表格。
- 新增轻量“序号-款号”双向冲突拦截，冲突款不再自动改名、合并或覆盖。
- 第二阶段改为一次建立本地视觉索引，历史同图准确口径不变；真实素材冷启动实测约提升 43 倍。
- 款式图缓存兼容跨版本旧路径，缓存可用时不重复下载。
- 钉钉写回改为每批最多 30 条，保留 recordId/款号/原值/回读校验，并显示逐条成功、失败和跳过结果。
- 热更新禁止降级、校验 SHA256、原子替换并保留本机配置、缓存和人工表。
- 新增“撤销本次整理”安全清单能力，只撤销本次创建且未被人工修改的本地文件。

## v1.1.70 - 2026-07-27

修复内容：
- 第 3 阶段整理时改为一次性建立素材目录文件名索引，查找正面图、P 图、品牌标时不再反复全目录扫描。
- 普通“整理”入口也复用第 2 阶段已经匹配到的本地正面图，减少重新下载/重新匹配钉钉款式图的概率。
- 第 3 阶段正面/P 图/品牌标复制并发上限从 4 提升到 8；送审图校验并发上限从 4 提升到 8。
- 保留复制前后 SHA 校验和原有背面图规则，不为提速牺牲结果准确性。
- 已通过完整自动化测试：53 passed。

## v1.1.69 - 2026-07-27

修复内容：
- 第 2 阶段新增“预缓存款式图”按钮：基于当前钉钉快照提前下载款式图，并写入 active 款式图身份缓存。
- 预缓存只做准备工作：不移动素材、不生成送审图、不写本地表、不写钉钉。
- 后续“匹配本地图片”可直接复用预缓存的 SHA 身份记录，减少重复下载钉钉款式图造成的等待。
- 保持原有匹配逻辑不变；没有为了加速而缩小匹配范围或改动三阶段归类规则。
- 增加回归测试，确认预缓存后即使原钉钉款式图临时不可访问，也能通过缓存继续匹配本地素材。

## v1.1.68 - 2026-07-27

修复内容：
- 本地人工表改为直接写回配置的原表路径，不再生成待写入副本；写入前仍自动备份原表。
- 如果本地人工表正被 Excel 打开，写回会直接失败并提示关闭表格后重试，避免误以为已经写入成功。
- 钉钉回写能力保留为真实回写：按 recordId 和字段白名单写回，仍需在软件内勾选启用并确认清单。
- 归类时如果发现同一输出目录下已有旧的 `旧行号-款号` 文件夹，会按款号复用：能安全重命名就改成当前 `行号-款号`；不能重命名则只补齐缺失文件，不覆盖已有文件。
- 当前 `行号-款号\送审图` 已存在且校验齐全时直接跳过，不重复复制。
- 本版不改变第二阶段图片匹配判定口径；不会为了速度缩小原有匹配范围。

## v1.1.67 - 2026-07-27

修复内容：
- 修复第 2 阶段“读取最新数据后匹配款号仍为 0”的问题。
- 根因是钉钉轻量未完成接口返回了款号/款式图/品类，但缺少 `recordId`，软件出于写回安全会过滤掉这些不可处理记录。
- 现在轻量接口返回 0 行或返回数据缺少可用 `recordId` 时，会自动回退读取完整钉钉快照，确保第 2 阶段拿到可处理款号后再匹配本地图片。
- 增加回归测试，防止后续再次把缺 `recordId` 的半截数据当作有效快照使用。

## v1.1.66 - 2026-07-25

修复内容：
- 发布包改为自带最小钉钉客户端 `vendor\tmall_python_app`，同事电脑不再依赖 `C:\Users\Administrator\Desktop\天猫铺货\python_app`。
- 发布配置改为软件根目录相对路径：`config\tmall_config.ini`、`config\queue.env`、`vendor\tmall_python_app`。
- 钉钉写回通道优先使用 `dws`；没有 `dws` 时自动回退到内置钉钉客户端。
- 高级路径文案改为“内置钉钉客户端/配置”，路径只作为异常电脑覆盖项。
- 启动时自动创建稳定缓存目录，减少同事首次打开时的误报。
- 发布包包含默认钉钉配置文件；源码 git 不提交秘钥明文。

## v1.1.65 - 2026-07-25

修复内容：

- 修复第三阶段反面图分配错误：候选图不再因为“离下一款更近”被错误过滤，也不会被后处理的款号抢走上一款的反面图。
- 反面图查找窗口从 8 放宽到 12，覆盖测试数据里 `+9`、`+10` 的正常拍摄间隔。
- 复制反面图时，如果反面图存在同名 P 图，会一起复制到送审图。
- 已用 `E:\test data\test\6666` 的 47 个测试目录重新模拟到 `E:\test data\test\6666-fixed-check`，修复后 47/47 校验齐全。

## v1.1.64 - 2026-07-25

修复内容：

- 修正 P 图规则：牛仔裤必须有 P 图；只有羽绒/皮衣类允许没有 P 图。
- 反面图查找改为以已匹配正面图为锚点，按 DSC 编号在前后小范围查找，不再只向后找。
- 文件名带中文备注时，仍会抽取其中的 DSC 编号参与同组图片判断。
- 同组反面候选不会跨过其他已匹配正面图，降低拿到别的款反面图的风险。
- 更新 README、使用说明和项目规则记忆，删除“棉衣/棉服允许无 P 图”的旧规则。

## v1.1.63 - 2026-07-25

修复内容：

- 停止空闲状态下的常驻轮询；只有正在读取、匹配、整理、写回、更新时才轮询状态。
- 匹配明细表滚动位置会在刷新后恢复，不再滚动一下就回到顶部。
- 检查更新失败时显示真实异常和实际请求地址，不再只提示 `latest.json` 未上传。

## v1.1.62 - 2026-07-25

修复内容：

- “素材目录未使用图片”不再沿用旧清单；整理/校验后会按本次任务重新计算。
- 未使用图片统计优先按实际源文件路径判断，文件名只做兜底，减少误判。
- 缺图/未使用清单滚动时不再被页面自动刷新拉回顶部。

## v1.1.61 - 2026-07-25

当前确认功能稳定点：

- 第 2 步负责读取/缓存钉钉数据，并用本地素材与钉钉款式图缓存做图片内容匹配。
- 第 3 步只做本地整理：生成计划、建 `流水号-款号\送审图` 文件夹、复制图片、校验结果。
- 第 3 步不再写本地人工表，也不写钉钉；写回统一放到第 5 步。
- 钉钉正式写回仍默认关闭，必须人工勾选启用。
- 进度统一使用顶部独立进度条，按钮不承载进度。
- 整理完成后不再被“素材目录未使用图片”重扫描阻塞。
- 第 2 步按钮样式已简化，避免文字挤压换行。

发布信息：

- 版本号：`1.1.61`
- 热更清单：`http://114.132.61.5:3009/meigong-sorter/latest.json`
- 更新包：`http://114.132.61.5:3009/meigong-sorter/meigong-sorter-v1.1.61-20260725-1210.zip`
- SHA256：`82badd171098305033023f776335363f9647578de087d87b3a2db0bc7ea80beb`
