feat: 完成 SKU 图片选择及素材导入后端

This commit is contained in:
R524809
2026-09-24 17:46:34 +08:00
parent d24ce8f4e0
commit e670d06ca6
26 changed files with 2287 additions and 119 deletions
@@ -0,0 +1,8 @@
SET search_path TO atlas, public;
-- SKU 图片上限扩展到 30 张,保持与编辑草稿契约一致。
ALTER TABLE product_variant_listing_media
DROP CONSTRAINT product_variant_listing_media_sort_order_check;
ALTER TABLE product_variant_listing_media
ADD CONSTRAINT product_variant_listing_media_sort_order_check
CHECK (sort_order >= 0 AND sort_order < 30);
@@ -0,0 +1,21 @@
SET search_path TO atlas, public;
-- 网络图片导入记录与正式素材分开,保留来源 URL 供候选区回显。
CREATE TABLE product_image_imports (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
workspace_id UUID NOT NULL REFERENCES workspaces(id) ON DELETE RESTRICT,
source_url TEXT NOT NULL,
asset_id UUID NOT NULL,
created_by_user_id UUID REFERENCES users(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
FOREIGN KEY (workspace_id, asset_id) REFERENCES media_assets(workspace_id, id) ON DELETE RESTRICT,
UNIQUE (workspace_id, source_url)
);
CREATE INDEX ix_product_image_imports_recent
ON product_image_imports (workspace_id, updated_at DESC, id DESC);
ALTER TABLE product_image_imports ENABLE ROW LEVEL SECURITY;
ALTER TABLE product_image_imports FORCE ROW LEVEL SECURITY;
CREATE POLICY workspace_isolation ON product_image_imports
USING (workspace_id = app_current_workspace_id())
WITH CHECK (workspace_id = app_current_workspace_id());