ZF sun
fe2d3dcfe2
fix(ai-chat): 全面修复前端图片附件 4 个 P0 + 3 个 P1 + 3 个 P2 bug
PR-FRONTEND-MEDIA-UPLOAD-FIX (2026-09-16)
配合后端 PR-WB-MP-UPLOAD-EXT (HEIC/AVIF/BMP/TIFF 双层修复), 前端用户上传链路全面打通:
**4 个 P0 (阻塞用户上传)**:
- pendingImage 单数 → pendingImages 数组: 选 9 张图只发 1 张 → 全部一起发
- 每个图独立 localId 独立上传独立失败
- 失败给删除按钮 (用户不再卡死)
- MP-WEIXIN 不压缩 HEIC → H5+MP-WEIXIN 双端都压缩
- 微信 chooseImage 默认 compressed 不支持 HEIC, 必须本地 uni.compressImage
- getFileSize 失败兜底 0 → 失败抛错, 探测完全失败时兜底走 STS
- 0 > 2MB = false 让 auto 模式永远走 PHP 中转, 大文件 OOM
- 现: totallyUnknown → 兜底 STS
- guessMime 缺 HEIC 等 → 与后端 guessMimeFromPath 对齐 26 个 mime
**3 个 P1 (业务级)**:
- selectFile 微信小程序死按钮 → 加 #ifdef MP-WEIXIN 分支 (uni.chooseMessageFile/wx.chooseMessageFile)
- 兼容检测两个 API 哪个可用
- 上传失败后 pendingImage 永远卡住 → 失败时给 删除 按钮 (pending-retry-delete)
- URL.createObjectURL 永不释放 → upload 完成后 (成功/失败都) revokeObjectURL
**3 个 P2 (优化)**:
- filePath.split('.').pop() 在 blob URL 翻车 → 用 lastSegment + 正则提取 + 兜底 'bin'
- STS MP-WEIXIN size 永远 0 → 用已知 detectedSize + pathToFile 再探测
- H5 压缩阈值 10MB → 3MB
**新增**:
- tests/media-upload-fix.test.js (12 个单测全过): guessMime 现代格式 / extractExt blob URL / decideSts 兜底 STS 决策
2026-09-16 16:52:49 +08:00
..
2026-06-26 13:49:26 +08:00
2026-07-16 17:07:30 +08:00
2026-09-16 16:52:49 +08:00
2026-07-16 17:07:30 +08:00
2026-07-04 09:24:35 +08:00
2026-07-04 18:11:03 +08:00
2026-09-16 11:52:28 +08:00
2026-08-26 18:13:00 +08:00
2026-09-03 17:50:11 +08:00
2026-07-09 15:51:32 +08:00
2026-07-23 09:46:16 +08:00
2026-07-16 17:07:30 +08:00
2026-08-06 16:52:41 +08:00
2026-08-06 16:52:41 +08:00
2026-07-23 09:46:16 +08:00
2026-07-04 09:24:35 +08:00
2026-07-23 09:46:16 +08:00
2026-07-04 09:24:35 +08:00
2026-06-29 15:29:24 +08:00
2026-06-25 11:00:50 +08:00
2026-07-25 17:53:39 +08:00
2026-06-25 11:00:50 +08:00
2026-07-16 11:47:29 +08:00