fix(*): 素材库与画布 - 修复批量删除刷新、选择布局及工具引用
This commit is contained in:
@@ -11,6 +11,22 @@ description: 信封、错误码与 OpenAPI
|
||||
|
||||
出站模型服务域名解析失败返回 HTTP / `code: 502`、`reason: upstream_dns_failed`,不归类为用户参数错误。公开消息不包含上游域名、DNS 服务器或请求 URL;原始解析错误仅保留在内部错误链。此分类不会自动重试、切换渠道或放宽 SSRF 校验;上下文取消仍按取消处理。
|
||||
|
||||
## 素材彻底删除
|
||||
|
||||
`DELETE /assets/:id` 表示用户确认后的彻底删除,不依赖服务端当前记录是否已经同步为 `archived`。接口仍校验登录用户和素材归属,但不会因画布、任务、项目或历史快照仍有引用而拒绝;事务会删除素材及对应历史资源索引,并通过删除 Outbox 清理未被其他素材复用的物理对象。其他素材共享的同一物理对象继续保留。移入回收站仍通过素材写入接口把状态更新为 `archived`,不能用 DELETE 代替可恢复归档。
|
||||
|
||||
素材页及素材选择器的批量彻底删除、清空回收站统一调用 `POST /assets/batch-delete`,请求体直接为 JSON 数组(不是 `{ ids: [...] }`):
|
||||
|
||||
```json
|
||||
["asset-1", "asset-2"]
|
||||
```
|
||||
|
||||
- 每次 1–1000 项,单个请求体最多 256 KiB;ID 去除首尾空白并去重,空 ID / 非数组返回 400,任一 ID 不存在或不属于当前用户返回 404,整批不删除。
|
||||
- 成功信封 `data.ids` 为请求传入的数组。前端等待服务端成功后一次更新本地集合并冲刷持久化;失败不回退为逐条 DELETE,不先移除本地记录。
|
||||
- 整批素材、版本、表现、业务关联、待删资源及对应历史资源索引,与物理删除 Outbox 在同一数据库事务中提交,数据库失败整批回滚。共享检查排除整批被删素材,避免两条互相共享的选中素材残留文件。
|
||||
- 物理空间由后台删除队列异步释放,失败保留任务重试;接口成功不代表对象存储已经清理完成。未选中素材使用的资源,以及其他 Resource 行(包括其他用户)复用的物理对象继续保留。
|
||||
- 旧画布 / 任务 / 历史快照记录本身保留,但被删媒体链接将失效。此操作不可恢复;没有数据库结构迁移。
|
||||
|
||||
## 站点皮肤主按钮
|
||||
|
||||
### 画布配置与 Live2D(外观合同版本 9)
|
||||
|
||||
@@ -5,6 +5,17 @@ description: 当前项目已实现功能的手工验证清单与未确认边界
|
||||
|
||||
# 待测试
|
||||
|
||||
## 回收站彻底删除与画布工具引用
|
||||
|
||||
- [ ] 素材卡片选择框恢复左上角,徽章为选择框和更多菜单让位;批量操作条取消吸顶覆盖,并与卡片网格保留间距。需在真实登录页面检查多选边框、长列表滚动、窄屏换行和明暗主题;自动浏览器访问被登录页拦截,样式约束测试不代替视觉验收。
|
||||
- [x] 新增 `POST /api/assets/batch-delete`,顶层 JSON 数组传入素材 ID;素材页及选择器的批量删除、清空回收站只发一次请求,后端批量事务处理,不按 ID 逐次提交。整批归属检查、事务失败回滚、同批共享资源回收与未选共享资源保留有专项覆盖。
|
||||
- [x] `DELETE /api/assets/:id` 明确表示彻底删除,不再依赖服务端素材状态判断是否位于回收站;即使本地已归档但服务端仍暂存为 `confirmed`,也不会受画布、任务或历史快照引用阻塞。事务会移除对应历史资源索引并通过删除 Outbox 释放未被其他素材复用的物理文件;内部普通删除仍保留引用保护。
|
||||
- [x] 画布提示词中的工具引用按“工具类型 + 工具 ID”区分,并使用最新提示词原子追加;相同数字 ID 的不同工具不会互相覆盖或把前一个标签回退成编码令牌。后端专项测试、前端工具集成测试和前端类型检查通过。
|
||||
- [x] 删除完成后退出用户数据同步队列,再异步刷新素材库与素材选择器分页缓存,避免删除与列表查询互相等待而无法关闭确认弹窗。去掉选择器删除后的重复刷新;刷新失败保留查询错误并记录告警,不误报删除失败。8 项批量删除与工具栏专项测试通过,包含真实 QueryObserver、分页加载与同步队列链路,以及刷新延迟、刷新失败场景(仅模拟 HTTP 响应)。
|
||||
- [ ] 在真实素材页及素材选择器中分别确认单条删除、批量删除和清空回收站:删除成功后确认弹窗关闭,列表刷新;限速或模拟列表请求失败时确认弹窗不被卡住,素材选择器外层窗口保持打开。
|
||||
- [ ] 在真实素材页分别验证单个彻底删除、选择 100 条后批量删除、清空回收站及过期自动清理;网络面板应显示单个批量 POST,body 为数组。确认后台清理完成后空间释放、原画布或任务中的旧媒体引用按预期失效、其他素材复用的文件仍可访问;失败时不出现部分删除。
|
||||
- [ ] 在真实画布快速连续选择两个不同工具,并覆盖相同数字 ID、中文标签、同类型替换和多个运镜工具,确认两个标签均正常显示、保存刷新后不乱码。
|
||||
|
||||
## 画布 Agent 配置与 Live2D
|
||||
|
||||
- [ ] 使用约 50 MiB 的真实模型 ZIP 验收上传和预览;ZIP 上限 128 MiB,解压累计 384 MiB、单文件 128 MiB,超限须拒绝。
|
||||
|
||||
Reference in New Issue
Block a user