feat(ai-image): AI生图开发

This commit is contained in:
2026-09-27 22:40:52 +08:00
parent e670d06ca6
commit a29dd92676
105 changed files with 9943 additions and 361 deletions
@@ -0,0 +1,28 @@
SET search_path TO atlas, public;
-- 派生任务独立保存源图和结果,避免编辑草稿确认前修改原图或其他 SKU 的选图。
CREATE TABLE media_aspect_ratio_derivatives (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
workspace_id UUID NOT NULL REFERENCES workspaces(id) ON DELETE RESTRICT,
source_asset_id UUID NOT NULL,
output_asset_id UUID,
status TEXT NOT NULL DEFAULT 'queued' CHECK (status IN ('queued', 'running', 'succeeded', 'failed')),
error_code TEXT,
created_by_user_id UUID REFERENCES users(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
started_at TIMESTAMPTZ,
completed_at TIMESTAMPTZ,
FOREIGN KEY (workspace_id, source_asset_id) REFERENCES media_assets(workspace_id, id) ON DELETE RESTRICT,
FOREIGN KEY (workspace_id, output_asset_id) REFERENCES media_assets(workspace_id, id) ON DELETE RESTRICT,
UNIQUE (workspace_id, id),
CHECK ((status = 'succeeded') = (output_asset_id IS NOT NULL)),
CHECK (status <> 'failed' OR error_code IS NOT NULL)
);
CREATE INDEX ix_media_aspect_ratio_derivatives_source
ON media_aspect_ratio_derivatives (workspace_id, source_asset_id, created_at DESC);
ALTER TABLE media_aspect_ratio_derivatives ENABLE ROW LEVEL SECURITY;
ALTER TABLE media_aspect_ratio_derivatives FORCE ROW LEVEL SECURITY;
CREATE POLICY workspace_isolation ON media_aspect_ratio_derivatives
USING (workspace_id = app_current_workspace_id())
WITH CHECK (workspace_id = app_current_workspace_id());