| Name |
Last commit
|
Last update |
|---|---|---|
| backend | ||
| backend-nest | ||
| docs | ||
| frontend | ||
| img | ||
| openspec | ||
| public/img | ||
| scripts/contract | ||
| .gitignore | ||
| DESIGN.md | ||
| PRODUCT.md | ||
| README.md | ||
| skills-lock.json |
新增六个接口(含 multipart 上传与图片读取),设备上传流程 15/15 通过, 全量契约比对达成 31 项一致、0 项不一致。 图片处理 缩略图参数逐项对齐:长边 240、保持比例、小图不放大、透明填白、 输出 JPEG、文件名为「原标识 + .thumb.jpg」。透明区域填白这一条尤其关键—— Java 用 TYPE_INT_RGB 加白色填充,若照搬默认行为会让透明 PNG 的缩略图整片发黑。 用 8 张定向构造的夹具图做像素级比对,7 张中有 6 张平均色差为 0.00, 尺寸与格式完全一致。唯一例外是 CMYK JPEG,判定过程与结论记于 CONTRACT-NOTES 第 17 条: 原图 rgb(40,120,200) 经 Java 处理后偏离 132,经 NestJS 处理后偏离 25, 是 Java 的 ImageIO 对 CMYK 解码存在已知偏差。这处差异有意保留, 对齐到 Java 等于把一个色彩错误搬进新系统。 与 Java 的另一处实现差异(有意) Java 为绕开 ImageIO 会把大图读两遍的问题,采用「先落盘再解码校验」,失败后再删文件; sharp 可直接从内存缓冲区读取元信息,因此改为「先校验再落盘」。 结果一致(无效图片一律拒绝且不留文件),且天然不会产生需要清理的野文件。 对拍发现并修正 企微与公司人员列表的公司显示名应「简称优先、无简称才用全称」, 且只取存活的公司记录。原实现直接取了全称,导致列表显示与 Java 不一致。 新增 scripts/contract/image-compare.mjs 作为长期回归工具。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| backend | Loading commit data... | |
| backend-nest | Loading commit data... | |
| docs | Loading commit data... | |
| frontend | Loading commit data... | |
| img | Loading commit data... | |
| openspec | Loading commit data... | |
| public/img | Loading commit data... | |
| scripts/contract | Loading commit data... | |
| .gitignore | Loading commit data... | |
| DESIGN.md | Loading commit data... | |
| PRODUCT.md | Loading commit data... | |
| README.md | Loading commit data... | |
| skills-lock.json | Loading commit data... |