优化素材库多选操作 #114
Reference in New Issue
Block a user
Delete Branch "fix/multi-select"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
result:
动作的导出存在很大的问题, 在另一个pr #117 解决请求更改。当前 head
3aefd70b5ad47806fc5a07e1f82e594646d87728有以下问题需要处理:[P1] 角色动作的批量下载无法导出完整序列帧
新增的
downloadSelectedAssets在src/components/image-editor/ImageCanvasEditorView.tsx:1434将selectedAssets经createAssetActionLayer()转为导出图层,但当前素材库EditorAssetSnapshot不包含imageSequenceFrames;mapAssetLibrarySnapshot()又会把assetKind="character-animation"的首帧素材识别为普通image,并在generationInputsOrNull()中丢弃后端generationInputs.characterAnimation.frames。因此从素材库选择角色动作时,无论单选还是混合批量,最终都只会下载首帧 PNG,无法进入image-sequence分支生成完整序列 ZIP。PR 正文提到由 #117 解决,但 #117 当前仍为 WIP、CI 失败且存在冲突,PR 114 不能把尚未可合并的后续 PR 当作当前功能已完成的前置条件。请在本 PR 内打通完整帧契约,或等 #117 合入 master 后重新同步并验证。
[P2] 仅有 objectKey 的有效私有素材无法进入多选和批量下载
src/components/image-editor/useImageCanvasAssetSelection.ts:37的新getSelectableAssets()要求asset.src非空;但当前素材展示契约与ImageCanvasAssetRowView测试明确支持src="" + objectKey的持久素材通过换签正常显示。此类卡片仍显示“选择素材”,实际点击、Shift、框选和全选都不会改变选择,因为目标不在visibleAssetIds中。批量导出又在useImageCanvasAssetExportWorkflow.ts:761按非空src过滤,修复选择边界时还需同步让 objectKey-only 素材走换签/字节读取链路,并补选择与导出回归测试。验证:当前 head 定向前端测试 94/94 通过,typecheck、编码检查、git diff --check、merge-tree 和 4 组远端 CI 均通过;上述问题属于现有测试未覆盖的素材契约缺口。
请求更改。当前 head
4911801ed67e782f37f63145fcd5d5c36de8943a仍有一处批量导出数据完整性问题:objectKey-only 私有序列帧会发生去重键碰撞,导致后续动作素材被静默漏导出并产生错误 metadata。请修复序列帧稳定身份并补覆盖两个不同私有序列共同导出的回归测试。另请在合并前将当前失败的 Native shell CI 重跑至绿色或明确处理。@@ -591,0 +483,4 @@for (const layer of exportableLayers) {const key = getLayerExportKey(layer);if (plannedKeys.has(key)) {[P1] 这里使用
getLayerExportKey(layer)做集合导出去重,但序列帧 key 当前只拼接frame.imageSrc,没有使用合法的帧级objectKey。当两个私有动作序列都只有不同的 objectKey、imageSrc="",且没有 taskId/sourceResourceId 时,两者都会得到image-sequence:|;第二个动作会在此处被直接跳过,ZIP 漏素材,根 metadata 还会把它映射到首个动作。请把帧级 assetObjectId/objectKey 纳入稳定 key,并补两个 objectKey-only 序列同时导出的回归测试。deb8e9765cto1cac7a3004New commits pushed, approval review dismissed automatically according to repository settings