统一画布快速编辑白名单与入口行为 (#140)
Project CI / Repository checks (push) Successful in 56s
Project CI / Frontend tests (push) Successful in 4m1s
Project CI / Backend tests (push) Successful in 4m26s
Project CI / Native shell tests (push) Successful in 15m12s

- 使用白名单控制快速编辑功能的显示

- 同步浮动工具栏、右键菜单、打开入口和提交门禁
- 禁用角色动作序列帧(整体)、音频和单个图标(explain: backend reject)的快速编辑

- 把快速编辑api改为只接受resource Id | asset Id,删除 image_src 参数, 以保证校验

其中包含生产数据迁移。迁移用于清理历史普通图片错误持久化的 assetKind="image",覆盖 asset → project-resource → showcase → canvas 四个作用域,并包含 operator 鉴权、分批 dry-run、批次 SHA-256 绑定 apply、active 结构化画
  > 布迁移摘要同步及最终零残留复核。

---------

Co-authored-by: kdletters <kdletters@qq.com>
Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/140
Co-authored-by: 王德宇 <kvtodev@outlook.com>
Co-committed-by: 王德宇 <kvtodev@outlook.com>
This commit was merged in pull request #140.
This commit is contained in:
2026-08-12 14:46:24 +08:00
committed by 段舒康
parent 4c3c0e9cd4
commit 8abeb333bb
61 changed files with 11979 additions and 688 deletions
@@ -1806,7 +1806,7 @@ function inferEditorAssetKind(
objectKey?: string | null,
assetKind?: string | null,
mediaType?: CanvasMediaType,
): CanvasAssetKind {
): CanvasAssetKind | null {
const normalizedAssetKind = canvasAssetKindOrNull(assetKind);
if (normalizedAssetKind) {
return normalizedAssetKind;
@@ -1822,7 +1822,7 @@ function inferEditorAssetKind(
if (inferredMediaType === 'audio') {
return inferAudioAssetKindFromLabel(label);
}
return 'image';
return null;
}
function hasMediaFileExtension(
@@ -2143,8 +2143,7 @@ export function generationInputsOrNull(
}
export function canvasAssetKindOrNull(value: unknown): CanvasAssetKind | null {
return value === 'image' ||
value === 'audio' ||
return value === 'audio' ||
value === 'spec' ||
value === 'character' ||
value === 'character-animation' ||