推进活动系统最小成品闭环与游客体验

This commit is contained in:
2026-04-07 19:05:18 +08:00
parent 1a6008449e
commit 6cd16f08dd
102 changed files with 16087 additions and 3556 deletions

View File

@@ -0,0 +1,33 @@
BEGIN;
CREATE TABLE managed_assets (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
asset_public_id TEXT NOT NULL UNIQUE,
asset_type TEXT NOT NULL,
asset_code TEXT NOT NULL,
version TEXT NOT NULL,
title TEXT,
source_mode TEXT NOT NULL CHECK (source_mode IN ('uploaded', 'external_link')),
storage_provider TEXT NOT NULL CHECK (storage_provider IN ('oss', 'external')),
object_key TEXT,
public_url TEXT NOT NULL,
file_name TEXT,
content_type TEXT,
file_size_bytes BIGINT,
checksum_sha256 TEXT,
status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('draft', 'active', 'disabled', 'archived')),
metadata_jsonb JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE (asset_type, asset_code, version)
);
CREATE INDEX managed_assets_asset_type_idx ON managed_assets(asset_type);
CREATE INDEX managed_assets_asset_code_idx ON managed_assets(asset_code);
CREATE INDEX managed_assets_status_idx ON managed_assets(status);
CREATE TRIGGER managed_assets_set_updated_at
BEFORE UPDATE ON managed_assets
FOR EACH ROW EXECUTE FUNCTION set_updated_at();
COMMIT;