diff --git a/docker/init-db.sql b/docker/init-db.sql index 61dee6a..bae6e74 100644 --- a/docker/init-db.sql +++ b/docker/init-db.sql @@ -1777,3 +1777,107 @@ ALTER TABLE ONLY public.fan_profiles \unrestrict sMtfDGEC88HGZIJke0nEBhyCFPngc2Pj7gKFCpH88m7WybaopqjS9o0UnzJwYTx +-- ===================================================== +-- V6: materials and asset_material_relations (2026-05-15) +-- ===================================================== + +-- materials 素材主表 +CREATE TABLE IF NOT EXISTS public.materials ( + id BIGSERIAL PRIMARY KEY, + oss_key VARCHAR(255) NOT NULL, + original_name VARCHAR(255) NOT NULL, + file_size BIGINT NOT NULL, + mime_type VARCHAR(100) NOT NULL, + width INT, + height INT, + hash VARCHAR(64) NOT NULL, + created_by BIGINT NOT NULL, + star_id BIGINT NOT NULL DEFAULT 0, + created_at BIGINT NOT NULL, + updated_at BIGINT NOT NULL, + deleted_at BIGINT +); + +CREATE UNIQUE INDEX IF NOT EXISTS uk_materials_oss_key ON public.materials(oss_key); +CREATE INDEX IF NOT EXISTS idx_materials_hash ON public.materials(hash); +CREATE INDEX IF NOT EXISTS idx_materials_created_by ON public.materials(created_by); +CREATE INDEX IF NOT EXISTS idx_materials_star_id ON public.materials(star_id); + +-- asset_material_relations 资产-素材关联表 +CREATE TABLE IF NOT EXISTS public.asset_material_relations ( + id BIGSERIAL PRIMARY KEY, + asset_id BIGINT NOT NULL, + material_id BIGINT NOT NULL, + material_type VARCHAR(50) NOT NULL, + layer_order INT NOT NULL DEFAULT 0, + pos_x DOUBLE PRECISION, + pos_y DOUBLE PRECISION, + opacity DOUBLE PRECISION DEFAULT 1.0, + rotation DOUBLE PRECISION DEFAULT 0, + scale_x DOUBLE PRECISION DEFAULT 1.0, + scale_y DOUBLE PRECISION DEFAULT 1.0, + version INT NOT NULL DEFAULT 1, + created_at BIGINT NOT NULL, + updated_at BIGINT NOT NULL, + deleted_at BIGINT +); + +CREATE INDEX IF NOT EXISTS idx_amr_asset_id ON public.asset_material_relations(asset_id) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_amr_material_id ON public.asset_material_relations(material_id) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_amr_asset_type_layer ON public.asset_material_relations(asset_id, material_type, layer_order) WHERE deleted_at IS NULL; +CREATE UNIQUE INDEX IF NOT EXISTS uk_amr_asset_type_active ON public.asset_material_relations(asset_id, material_type) WHERE deleted_at IS NULL; +CREATE UNIQUE INDEX IF NOT EXISTS uk_amr_asset_layer_active ON public.asset_material_relations(asset_id, layer_order) WHERE deleted_at IS NULL; + +-- user_mint_count 铸爱次数表 +CREATE TABLE IF NOT EXISTS public.user_mint_count ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT NOT NULL, + star_id BIGINT NOT NULL, + mint_count INT NOT NULL DEFAULT 0, + revenue_boost_bps INT NOT NULL DEFAULT 0, + updated_at BIGINT NOT NULL, + CONSTRAINT uk_user_mint_count_user_star UNIQUE (user_id, star_id) +); + +CREATE INDEX IF NOT EXISTS idx_user_mint_count_user ON public.user_mint_count USING btree (user_id); +CREATE INDEX IF NOT EXISTS idx_user_mint_count_star ON public.user_mint_count USING btree (star_id); + +-- mint_cost_config 铸爱阶梯配置表 +CREATE TABLE IF NOT EXISTS public.mint_cost_config ( + id BIGSERIAL PRIMARY KEY, + mint_count INT NOT NULL, + cost_crystal BIGINT NOT NULL, + probability BIGINT NOT NULL DEFAULT 0, + reward_type VARCHAR(50) DEFAULT NULL, + reward_value BIGINT NOT NULL DEFAULT 0, + description VARCHAR(255), + updated_at BIGINT NOT NULL, + CONSTRAINT uk_mint_cost_config_mint_count UNIQUE (mint_count) +); + +-- 插入铸爱阶梯数据 +INSERT INTO public.mint_cost_config (mint_count, cost_crystal, probability, reward_type, reward_value, description, updated_at) +VALUES + (1, 2, 0, NULL, 0, '第1次', 1773322573872), + (2, 4, 0, NULL, 0, '第2次', 1773322573872), + (3, 8, 0, NULL, 0, '第3次', 1773322573872), + (4, 16, 0, NULL, 0, '第4次', 1773322573872), + (5, 32, 0, NULL, 0, '第5次', 1773322573872), + (6, 64, 0, NULL, 0, '第6次', 1773322573872), + (7, 128, 0, NULL, 0, '第7次', 1773322573872), + (8, 256, 0, NULL, 0, '第8次', 1773322573872), + (9, 512, 20, '收益提升', 5, '小保底', 1773322573872), + (10, 1024, 100, '收益提升', 5, '大保底', 1773322573872) +ON CONFLICT (mint_count) DO UPDATE SET + cost_crystal = EXCLUDED.cost_crystal, + probability = EXCLUDED.probability, + reward_type = EXCLUDED.reward_type, + reward_value = EXCLUDED.reward_value, + description = EXCLUDED.description, + updated_at = EXCLUDED.updated_at; + +-- materials 外键 +ALTER TABLE public.asset_material_relations + ADD CONSTRAINT fk_amr_material + FOREIGN KEY (material_id) REFERENCES public.materials(id) ON DELETE RESTRICT; + diff --git a/docker/sql/migrations/V6__consolidated_migrations.sql b/docker/sql/migrations/V6__consolidated_migrations.sql new file mode 100644 index 0000000..4657c08 --- /dev/null +++ b/docker/sql/migrations/V6__consolidated_migrations.sql @@ -0,0 +1,352 @@ +-- V6__consolidated_migrations.sql +-- 整合所有分散的迁移脚本(2026-05-15) +-- 包含: materials, asset_material_relations, 经济系统表, 字段修改等 + +-- ===================================================== +-- Part 1: materials 素材主表 +-- ===================================================== +CREATE TABLE IF NOT EXISTS public.materials ( + id BIGSERIAL PRIMARY KEY, + oss_key VARCHAR(255) NOT NULL, + original_name VARCHAR(255) NOT NULL, + file_size BIGINT NOT NULL, + mime_type VARCHAR(100) NOT NULL, + width INT, + height INT, + hash VARCHAR(64) NOT NULL, + created_by BIGINT NOT NULL, + star_id BIGINT NOT NULL DEFAULT 0, + created_at BIGINT NOT NULL, + updated_at BIGINT NOT NULL, + deleted_at BIGINT +); + +CREATE UNIQUE INDEX IF NOT EXISTS uk_materials_oss_key ON public.materials(oss_key); +CREATE INDEX IF NOT EXISTS idx_materials_hash ON public.materials(hash); +CREATE INDEX IF NOT EXISTS idx_materials_created_by ON public.materials(created_by); +CREATE INDEX IF NOT EXISTS idx_materials_star_id ON public.materials(star_id); + +COMMENT ON TABLE public.materials IS '素材主表'; + +-- ===================================================== +-- Part 2: asset_material_relations 资产-素材关联表 +-- ===================================================== +CREATE TABLE IF NOT EXISTS public.asset_material_relations ( + id BIGSERIAL PRIMARY KEY, + asset_id BIGINT NOT NULL, + material_id BIGINT NOT NULL, + material_type VARCHAR(50) NOT NULL, + layer_order INT NOT NULL DEFAULT 0, + pos_x DOUBLE PRECISION, + pos_y DOUBLE PRECISION, + opacity DOUBLE PRECISION DEFAULT 1.0, + rotation DOUBLE PRECISION DEFAULT 0, + scale_x DOUBLE PRECISION DEFAULT 1.0, + scale_y DOUBLE PRECISION DEFAULT 1.0, + version INT NOT NULL DEFAULT 1, + created_at BIGINT NOT NULL, + updated_at BIGINT NOT NULL, + deleted_at BIGINT +); + +CREATE INDEX IF NOT EXISTS idx_amr_asset_id ON public.asset_material_relations(asset_id) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_amr_material_id ON public.asset_material_relations(material_id) WHERE deleted_at IS NULL; +CREATE INDEX IF NOT EXISTS idx_amr_asset_type_layer ON public.asset_material_relations(asset_id, material_type, layer_order) WHERE deleted_at IS NULL; +CREATE UNIQUE INDEX IF NOT EXISTS uk_amr_asset_type_active ON public.asset_material_relations(asset_id, material_type) WHERE deleted_at IS NULL; +CREATE UNIQUE INDEX IF NOT EXISTS uk_amr_asset_layer_active ON public.asset_material_relations(asset_id, layer_order) WHERE deleted_at IS NULL; + +COMMENT ON TABLE public.asset_material_relations IS '资产-素材关联表'; + +-- 外键约束(如果 assets 表已存在) +DO $$ +BEGIN + IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'assets') THEN + ALTER TABLE public.asset_material_relations + ADD CONSTRAINT fk_amr_asset + FOREIGN KEY (asset_id) REFERENCES public.assets(id) ON DELETE CASCADE; + END IF; +EXCEPTION WHEN others THEN + RAISE NOTICE 'Foreign key constraint for asset_material_relations skipped: %', SQLERRM; +END $$; + +DO $$ +BEGIN + IF EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'materials') THEN + ALTER TABLE public.asset_material_relations + ADD CONSTRAINT fk_amr_material + FOREIGN KEY (material_id) REFERENCES public.materials(id) ON DELETE RESTRICT; + END IF; +EXCEPTION WHEN others THEN + RAISE NOTICE 'Foreign key constraint for asset_material_relations skipped: %', SQLERRM; +END $$; + +-- ===================================================== +-- Part 3: user_mint_count 铸爱次数表 +-- ===================================================== +CREATE TABLE IF NOT EXISTS public.user_mint_count ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT NOT NULL, + star_id BIGINT NOT NULL, + mint_count INT NOT NULL DEFAULT 0, + revenue_boost_bps INT NOT NULL DEFAULT 0, + updated_at BIGINT NOT NULL, + CONSTRAINT uk_user_mint_count_user_star UNIQUE (user_id, star_id) +); + +CREATE INDEX IF NOT EXISTS idx_user_mint_count_user ON public.user_mint_count USING btree (user_id); +CREATE INDEX IF NOT EXISTS idx_user_mint_count_star ON public.user_mint_count USING btree (star_id); + +COMMENT ON TABLE public.user_mint_count IS '用户在某偶像下的累计铸爱次数与收益加成(基点)'; + +-- ===================================================== +-- Part 4: mint_cost_config 铸爱阶梯配置表 +-- ===================================================== +CREATE TABLE IF NOT EXISTS public.mint_cost_config ( + id BIGSERIAL PRIMARY KEY, + mint_count INT NOT NULL, + cost_crystal BIGINT NOT NULL, + probability BIGINT NOT NULL DEFAULT 0, + reward_type VARCHAR(50) DEFAULT NULL, + reward_value BIGINT NOT NULL DEFAULT 0, + description VARCHAR(255), + updated_at BIGINT NOT NULL, + CONSTRAINT uk_mint_cost_config_mint_count UNIQUE (mint_count) +); + +COMMENT ON TABLE public.mint_cost_config IS '铸爱次数阶梯消耗与保底配置'; + +-- 插入铸爱阶梯数据 +INSERT INTO public.mint_cost_config (mint_count, cost_crystal, probability, reward_type, reward_value, description, updated_at) +VALUES + (1, 2, 0, NULL, 0, '第1次', 1773322573872), + (2, 4, 0, NULL, 0, '第2次', 1773322573872), + (3, 8, 0, NULL, 0, '第3次', 1773322573872), + (4, 16, 0, NULL, 0, '第4次', 1773322573872), + (5, 32, 0, NULL, 0, '第5次', 1773322573872), + (6, 64, 0, NULL, 0, '第6次', 1773322573872), + (7, 128, 0, NULL, 0, '第7次', 1773322573872), + (8, 256, 0, NULL, 0, '第8次', 1773322573872), + (9, 512, 20, '收益提升', 5, '小保底', 1773322573872), + (10, 1024, 100, '收益提升', 5, '大保底', 1773322573872) +ON CONFLICT (mint_count) DO UPDATE SET + cost_crystal = EXCLUDED.cost_crystal, + probability = EXCLUDED.probability, + reward_type = EXCLUDED.reward_type, + reward_value = EXCLUDED.reward_value, + description = EXCLUDED.description, + updated_at = EXCLUDED.updated_at; + +-- ===================================================== +-- Part 5: 字段修改迁移 +-- ===================================================== + +-- 5.1 exhibitions 表添加 deleted_at 字段 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'exhibitions' AND column_name = 'deleted_at' + ) THEN + ALTER TABLE public.exhibitions ADD COLUMN deleted_at BIGINT; + RAISE NOTICE 'Column deleted_at added to exhibitions table'; + ELSE + RAISE NOTICE 'Column deleted_at already exists in exhibitions table'; + END IF; +END $$; + +-- 5.2 assets 表添加 material_type 字段 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'assets' AND column_name = 'material_type' + ) THEN + ALTER TABLE public.assets ADD COLUMN material_type VARCHAR(50); + RAISE NOTICE 'Column material_type added to assets table'; + ELSE + RAISE NOTICE 'Column material_type already exists in assets table'; + END IF; +END $$; + +-- 5.3 activities 表添加 icon 字段 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'activities' AND column_name = 'icon' + ) THEN + ALTER TABLE public.activities ADD COLUMN icon VARCHAR(500) DEFAULT ''; + RAISE NOTICE 'Column icon added to activities table'; + ELSE + RAISE NOTICE 'Column icon already exists in activities table'; + END IF; +END $$; + +-- 5.4 activities 表添加 overall_end_time 字段 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'activities' AND column_name = 'overall_end_time' + ) THEN + ALTER TABLE public.activities ADD COLUMN overall_end_time BIGINT DEFAULT 0; + RAISE NOTICE 'Column overall_end_time added to activities table'; + ELSE + RAISE NOTICE 'Column overall_end_time already exists in activities table'; + END IF; +END $$; + +-- 5.5 fan_profiles 表添加 avatar_url 字段 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'fan_profiles' AND column_name = 'avatar_url' + ) THEN + ALTER TABLE public.fan_profiles ADD COLUMN avatar_url VARCHAR(500); + RAISE NOTICE 'Column avatar_url added to fan_profiles table'; + ELSE + RAISE NOTICE 'Column avatar_url already exists in fan_profiles table'; + END IF; +END $$; + +-- 5.6 assets 表添加 is_original 字段 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'assets' AND column_name = 'is_original' + ) THEN + ALTER TABLE public.assets ADD COLUMN is_original BOOLEAN DEFAULT false; + RAISE NOTICE 'Column is_original added to assets table'; + ELSE + RAISE NOTICE 'Column is_original already exists in assets table'; + END IF; +END $$; + +-- 5.7 activities 表添加 theme 字段 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'activities' AND column_name = 'theme' + ) THEN + ALTER TABLE public.activities ADD COLUMN theme VARCHAR(100); + RAISE NOTICE 'Column theme added to activities table'; + ELSE + RAISE NOTICE 'Column theme already exists in activities table'; + END IF; +END $$; + +-- ===================================================== +-- Part 6: 索引和约束修改 +-- ===================================================== + +-- 6.1 asset_likes 表唯一约束修改(添加 star_id) +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'uk_asset_likes_user_asset' + ) THEN + ALTER TABLE public.asset_likes DROP CONSTRAINT uk_asset_likes_user_asset; + RAISE NOTICE 'Old constraint uk_asset_likes_user_asset dropped'; + END IF; +EXCEPTION WHEN others THEN + RAISE NOTICE 'Constraint uk_asset_likes_user_asset not found or already dropped: %', SQLERRM; +END $$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'uk_asset_likes_user_asset_star' + ) THEN + ALTER TABLE public.asset_likes ADD CONSTRAINT uk_asset_likes_user_asset_star UNIQUE (user_id, asset_id, star_id); + RAISE NOTICE 'New constraint uk_asset_likes_user_asset_star added'; + END IF; +EXCEPTION WHEN others THEN + RAISE NOTICE 'Constraint uk_asset_likes_user_asset_star already exists: %', SQLERRM; +END $$; + +-- 6.2 exhibitions 表唯一约束移除(asset_id) +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'uk_asset' + ) THEN + ALTER TABLE public.exhibitions DROP CONSTRAINT uk_asset; + RAISE NOTICE 'Constraint uk_asset dropped from exhibitions table'; + END IF; +EXCEPTION WHEN others THEN + RAISE NOTICE 'Constraint uk_asset not found or already dropped: %', SQLERRM; +END $$; + +-- 6.3 exhibitions 表添加 idx_asset 普通索引 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_indexes WHERE indexname = 'idx_asset' AND schemaname = 'public' + ) THEN + CREATE INDEX idx_asset ON public.exhibitions(asset_id); + RAISE NOTICE 'Index idx_asset created on exhibitions table'; + END IF; +EXCEPTION WHEN others THEN + RAISE NOTICE 'Index idx_asset already exists: %', SQLERRM; +END $$; + +-- ===================================================== +-- Migration completed +-- ===================================================== +DO $$ +BEGIN + RAISE NOTICE 'V6__consolidated_migrations completed successfully'; +END $$; + +-- 素材主表 +CREATE TABLE materials ( + id BIGSERIAL PRIMARY KEY, + oss_key VARCHAR(255) NOT NULL, + original_name VARCHAR(255) NOT NULL, + file_size BIGINT NOT NULL, + mime_type VARCHAR(100) NOT NULL, + width INT, + height INT, + hash VARCHAR(64) NOT NULL, + created_by BIGINT NOT NULL, + star_id BIGINT NOT NULL DEFAULT 0, + created_at BIGINT NOT NULL, + updated_at BIGINT NOT NULL, + deleted_at BIGINT +); + +CREATE UNIQUE INDEX uk_materials_oss_key ON materials(oss_key); +CREATE INDEX idx_materials_hash ON materials(hash); +CREATE INDEX idx_materials_created_by ON materials(created_by); +CREATE INDEX idx_materials_star_id ON materials(star_id); + +-- 资产-素材关联表 +CREATE TABLE asset_material_relations ( + id BIGSERIAL PRIMARY KEY, + asset_id BIGINT NOT NULL REFERENCES assets(id) ON DELETE CASCADE, + material_id BIGINT NOT NULL REFERENCES materials(id) ON DELETE RESTRICT, + material_type VARCHAR(50) NOT NULL, + layer_order INT NOT NULL DEFAULT 0, + pos_x DOUBLE PRECISION, + pos_y DOUBLE PRECISION, + opacity DOUBLE PRECISION DEFAULT 1.0, + rotation DOUBLE PRECISION DEFAULT 0, + scale_x DOUBLE PRECISION DEFAULT 1.0, + scale_y DOUBLE PRECISION DEFAULT 1.0, + version INT NOT NULL DEFAULT 1, + created_at BIGINT NOT NULL, + updated_at BIGINT NOT NULL, + deleted_at BIGINT +); + +-- 索引 +CREATE INDEX idx_amr_asset_id ON asset_material_relations(asset_id) WHERE deleted_at IS NULL; +CREATE INDEX idx_amr_material_id ON asset_material_relations(material_id) WHERE deleted_at IS NULL; +CREATE INDEX idx_amr_asset_type_layer ON asset_material_relations(asset_id, material_type, layer_order) WHERE deleted_at IS NULL; + +-- 部分唯一索引(软删除感知) +CREATE UNIQUE INDEX uk_amr_asset_type_active ON asset_material_relations(asset_id, material_type) WHERE deleted_at IS NULL; +CREATE UNIQUE INDEX uk_amr_asset_layer_active ON asset_material_relations(asset_id, layer_order) WHERE deleted_at IS NULL; diff --git a/docker/sql/migrations/V7__mock_square_assets.sql b/docker/sql/migrations/V7__mock_square_assets.sql new file mode 100644 index 0000000..25404f4 --- /dev/null +++ b/docker/sql/migrations/V7__mock_square_assets.sql @@ -0,0 +1,147 @@ +-- V7: 插入广场mock数据资产 (2026-05-17) +-- 将mockData.js中的图片数据写入assets和asset_registry表 +-- 按图片顺序分配asset_id,使用真实user_id循环分配 + +BEGIN; + +-- 用户ID列表(30个真实用户) +-- 1, 2, 8, 13, 14, 15, 16, 17, 18, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50 + +-- ===================================================== +-- 1. 人气榜 MOCK_RENQIWANG (22条, asset_id: 10001-10022) +-- ===================================================== +INSERT INTO assets (id, owner_uid, star_id, name, cover_url, material_url, description, grade, tags, visibility, status, like_count, is_original, created_at, updated_at, is_active, material_type) +VALUES + (10001, 42, 87, '星光璀璨', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-01.png', NULL, NULL, NULL, NULL, 'public', 0, 250, false, 1773322573872, 1773322573872, true, NULL), + (10002, 2, 87, '爱的绽放', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-02.png', NULL, NULL, NULL, NULL, 'public', 0, 220, false, 1773322573872, 1773322573872, true, NULL), + (10003, 8, 87, '温暖守护', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-03.png', NULL, NULL, NULL, NULL, 'public', 0, 200, false, 1773322573872, 1773322573872, true, NULL), + (10004, 13, 87, '甜蜜暴击', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-04.png', NULL, NULL, NULL, NULL, 'public', 0, 180, false, 1773322573872, 1773322573872, true, NULL), + (10005, 14, 87, '闪耀舞台', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-05.png', NULL, NULL, NULL, NULL, 'public', 0, 150, false, 1773322573872, 1773322573872, true, NULL), + (10006, 15, 87, '为你疯狂', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-06.png', NULL, NULL, NULL, NULL, 'public', 0, 120, false, 1773322573872, 1773322573872, true, NULL), + (10007, 16, 87, '心动时刻', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-07.png', NULL, NULL, NULL, NULL, 'public', 0, 100, false, 1773322573872, 1773322573872, true, NULL), + (10008, 17, 87, '永相随', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-08.png', NULL, NULL, NULL, NULL, 'public', 0, 80, false, 1773322573872, 1773322573872, true, NULL), + (10009, 18, 87, '粉红泡泡', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-09.png', NULL, NULL, NULL, NULL, 'public', 0, 70, false, 1773322573872, 1773322573872, true, NULL), + (10010, 29, 87, '爱的力量', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-10.png', NULL, NULL, NULL, NULL, 'public', 0, 60, false, 1773322573872, 1773322573872, true, NULL), + (10011, 30, 87, '璀璨星河', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-11.png', NULL, NULL, NULL, NULL, 'public', 0, 55, false, 1773322573872, 1773322573872, true, NULL), + (10012, 31, 87, '梦幻泡影', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-12.png', NULL, NULL, NULL, NULL, 'public', 0, 50, false, 1773322573872, 1773322573872, true, NULL), + (10013, 32, 87, '温柔以待', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-13.png', NULL, NULL, NULL, NULL, 'public', 0, 45, false, 1773322573872, 1773322573872, true, NULL), + (10014, 33, 87, '心动信号', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-14.png', NULL, NULL, NULL, NULL, 'public', 0, 40, false, 1773322573872, 1773322573872, true, NULL), + (10015, 34, 87, '甜蜜时光', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-15.png', NULL, NULL, NULL, NULL, 'public', 0, 38, false, 1773322573872, 1773322573872, true, NULL), + (10016, 35, 87, '爱在当下', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-16.png', NULL, NULL, NULL, NULL, 'public', 0, 35, false, 1773322573872, 1773322573872, true, NULL), + (10017, 36, 87, '幸福味道', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-17.png', NULL, NULL, NULL, NULL, 'public', 0, 32, false, 1773322573872, 1773322573872, true, NULL), + (10018, 37, 87, '心动不已', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-18.png', NULL, NULL, NULL, NULL, 'public', 0, 30, false, 1773322573872, 1773322573872, true, NULL), + (10019, 38, 87, '爱的告白', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-19.png', NULL, NULL, NULL, NULL, 'public', 0, 28, false, 1773322573872, 1773322573872, true, NULL), + (10020, 39, 87, '粉色回忆', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-20.png', NULL, NULL, NULL, NULL, 'public', 0, 25, false, 1773322573872, 1773322573872, true, NULL), + (10021, 40, 87, '暖暖情谊', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-21.png', NULL, NULL, NULL, NULL, 'public', 0, 23, false, 1773322573872, 1773322573872, true, NULL), + (10022, 41, 87, '心动瞬间', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-22.png', NULL, NULL, NULL, NULL, 'public', 0, 22, false, 1773322573872, 1773322573872, true, NULL); + +-- ===================================================== +-- 2. 潜力之星 MOCK_QIANLIXING (19条, asset_id: 20001-20019) +-- ===================================================== +INSERT INTO assets (id, owner_uid, star_id, name, cover_url, material_url, description, grade, tags, visibility, status, like_count, is_original, created_at, updated_at, is_active, material_type) +VALUES + (20001, 42, 87, '初露锋芒', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-01.png', NULL, NULL, NULL, NULL, 'public', 0, 200, false, 1773322573872, 1773322573872, true, NULL), + (20002, 43, 87, '蓄势待发', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-04.png', NULL, NULL, NULL, NULL, 'public', 0, 180, false, 1773322573872, 1773322573872, true, NULL), + (20003, 44, 87, '冉冉升起', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-07.png', NULL, NULL, NULL, NULL, 'public', 0, 150, false, 1773322573872, 1773322573872, true, NULL), + (20004, 45, 87, '明日之星', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-10.png', NULL, NULL, NULL, NULL, 'public', 0, 120, false, 1773322573872, 1773322573872, true, NULL), + (20005, 46, 87, '潜力无限', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-13.png', NULL, NULL, NULL, NULL, 'public', 0, 100, false, 1773322573872, 1773322573872, true, NULL), + (20006, 47, 87, '闪耀新星', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-16.png', NULL, NULL, NULL, NULL, 'public', 0, 80, false, 1773322573872, 1773322573872, true, NULL), + (20007, 49, 87, '小荷才露', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-19.png', NULL, NULL, NULL, NULL, 'public', 0, 65, false, 1773322573872, 1773322573872, true, NULL), + (20008, 50, 87, '锋芒初现', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-22.png', NULL, NULL, NULL, NULL, 'public', 0, 55, false, 1773322573872, 1773322573872, true, NULL), + (20009, 43, 87, '闪闪发光', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-25.png', NULL, NULL, NULL, NULL, 'public', 0, 45, false, 1773322573872, 1773322573872, true, NULL), + (20010, 2, 87, '未来可期', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-28.png', NULL, NULL, NULL, NULL, 'public', 0, 38, false, 1773322573872, 1773322573872, true, NULL), + (20011, 8, 87, '新秀登场', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-31.png', NULL, NULL, NULL, NULL, 'public', 0, 32, false, 1773322573872, 1773322573872, true, NULL), + (20012, 13, 87, '星火燎原', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-34.png', NULL, NULL, NULL, NULL, 'public', 0, 28, false, 1773322573872, 1773322573872, true, NULL), + (20013, 14, 87, '曙光初现', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-37.png', NULL, NULL, NULL, NULL, 'public', 0, 24, false, 1773322573872, 1773322573872, true, NULL), + (20014, 15, 87, '新光乍现', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-40.png', NULL, NULL, NULL, NULL, 'public', 0, 20, false, 1773322573872, 1773322573872, true, NULL), + (20015, 16, 87, '萌芽破土', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-43.png', NULL, NULL, NULL, NULL, 'public', 0, 18, false, 1773322573872, 1773322573872, true, NULL), + (20016, 17, 87, '蓄力绽放', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-46.png', NULL, NULL, NULL, NULL, 'public', 0, 16, false, 1773322573872, 1773322573872, true, NULL), + (20017, 18, 87, '初绽光芒', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-49.png', NULL, NULL, NULL, NULL, 'public', 0, 14, false, 1773322573872, 1773322573872, true, NULL), + (20018, 29, 87, '潜力萌发', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-52.png', NULL, NULL, NULL, NULL, 'public', 0, 12, false, 1773322573872, 1773322573872, true, NULL), + (20019, 30, 87, '新生力量', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-02.png', NULL, NULL, NULL, NULL, 'public', 0, 11, false, 1773322573872, 1773322573872, true, NULL); + +-- ===================================================== +-- 3. 新鲜上架 MOCK_XINXIANSHANG (27条, asset_id: 30001-30027) +-- ===================================================== +INSERT INTO assets (id, owner_uid, star_id, name, cover_url, material_url, description, grade, tags, visibility, status, like_count, is_original, created_at, updated_at, is_active, material_type) +VALUES + (30001, 31, 87, '刚刚发布', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-28.png', NULL, NULL, NULL, NULL, 'public', 0, 28, false, 1773322573872, 1773322573872, true, NULL), + (30002, 32, 87, '今日新鲜', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-29.png', NULL, NULL, NULL, NULL, 'public', 0, 25, false, 1773322573872, 1773322573872, true, NULL), + (30003, 33, 87, '刚出锅', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-30.png', NULL, NULL, NULL, NULL, 'public', 0, 22, false, 1773322573872, 1773322573872, true, NULL), + (30004, 34, 87, '热乎的', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-31.png', NULL, NULL, NULL, NULL, 'public', 0, 20, false, 1773322573872, 1773322573872, true, NULL), + (30005, 35, 87, '新品上市', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-32.png', NULL, NULL, NULL, NULL, 'public', 0, 18, false, 1773322573872, 1773322573872, true, NULL), + (30006, 36, 87, '今日首发', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-33.png', NULL, NULL, NULL, NULL, 'public', 0, 15, false, 1773322573872, 1773322573872, true, NULL), + (30007, 37, 87, '刚出炉', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-34.png', NULL, NULL, NULL, NULL, 'public', 0, 12, false, 1773322573872, 1773322573872, true, NULL), + (30008, 38, 87, '最新创作', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-35.png', NULL, NULL, NULL, NULL, 'public', 0, 10, false, 1773322573872, 1773322573872, true, NULL), + (30009, 39, 87, '新鲜出炉', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-36.png', NULL, NULL, NULL, NULL, 'public', 0, 8, false, 1773322573872, 1773322573872, true, NULL), + (30010, 40, 87, '首发作品', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-37.png', NULL, NULL, NULL, NULL, 'public', 0, 5, false, 1773322573872, 1773322573872, true, NULL), + (30011, 41, 87, '全新上线', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-38.png', NULL, NULL, NULL, NULL, 'public', 0, 3, false, 1773322573872, 1773322573872, true, NULL), + (30012, 42, 87, '新星登场', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-39.png', NULL, NULL, NULL, NULL, 'public', 0, 2, false, 1773322573872, 1773322573872, true, NULL), + (30013, 43, 87, '首发惊喜', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-40.png', NULL, NULL, NULL, NULL, 'public', 0, 1, false, 1773322573872, 1773322573872, true, NULL), + (30014, 44, 87, '今日上新', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-41.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30015, 45, 87, '新作出炉', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-42.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30016, 46, 87, '新鲜血液', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-43.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30017, 47, 87, '最新面世', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-44.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30018, 49, 87, '全新创作', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-45.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30019, 50, 87, '新晋发布', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-46.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30020, 44, 87, '新潮上线', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-47.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30021, 2, 87, '新锐登场', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-48.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30022, 8, 87, '新意满满', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-49.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30023, 13, 87, '新潮涌动', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-50.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30024, 14, 87, '新鲜感', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-51.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30025, 15, 87, '新视角', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-52.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30026, 16, 87, '新派作品', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-53.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (30027, 17, 87, '新星璀璨', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-01.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL); + +-- ===================================================== +-- 4. 随机寻宝 MOCK_SUIJIXUNBAO (37条, asset_id: 40001-40037) +-- ===================================================== +INSERT INTO assets (id, owner_uid, star_id, name, cover_url, material_url, description, grade, tags, visibility, status, like_count, is_original, created_at, updated_at, is_active, material_type) +VALUES + (40001, 18, 87, '神秘宝藏1', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-18.png', NULL, NULL, NULL, NULL, 'public', 0, 35, false, 1773322573872, 1773322573872, true, NULL), + (40002, 29, 87, '神秘宝藏2', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-05.png', NULL, NULL, NULL, NULL, 'public', 0, 140, false, 1773322573872, 1773322573872, true, NULL), + (40003, 30, 87, '神秘宝藏3', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-31.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (40004, 31, 87, '神秘宝藏4', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-12.png', NULL, NULL, NULL, NULL, 'public', 0, 68, false, 1773322573872, 1773322573872, true, NULL), + (40005, 32, 87, '神秘宝藏5', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-02.png', NULL, NULL, NULL, NULL, 'public', 0, 210, false, 1773322573872, 1773322573872, true, NULL), + (40006, 33, 87, '神秘宝藏6', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-25.png', NULL, NULL, NULL, NULL, 'public', 0, 12, false, 1773322573872, 1773322573872, true, NULL), + (40007, 34, 87, '神秘宝藏7', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-09.png', NULL, NULL, NULL, NULL, 'public', 0, 95, false, 1773322573872, 1773322573872, true, NULL), + (40008, 35, 87, '神秘宝藏8', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-36.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (40009, 36, 87, '神秘宝藏9', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-20.png', NULL, NULL, NULL, NULL, 'public', 0, 28, false, 1773322573872, 1773322573872, true, NULL), + (40010, 37, 87, '神秘宝藏10', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-07.png', NULL, NULL, NULL, NULL, 'public', 0, 110, false, 1773322573872, 1773322573872, true, NULL), + (40011, 38, 87, '神秘宝藏11', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-33.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (40012, 39, 87, '神秘宝藏12', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-14.png', NULL, NULL, NULL, NULL, 'public', 0, 55, false, 1773322573872, 1773322573872, true, NULL), + (40013, 40, 87, '神秘宝藏13', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-01.png', NULL, NULL, NULL, NULL, 'public', 0, 230, false, 1773322573872, 1773322573872, true, NULL), + (40014, 41, 87, '神秘宝藏14', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-28.png', NULL, NULL, NULL, NULL, 'public', 0, 5, false, 1773322573872, 1773322573872, true, NULL), + (40015, 42, 87, '神秘宝藏15', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-22.png', NULL, NULL, NULL, NULL, 'public', 0, 22, false, 1773322573872, 1773322573872, true, NULL), + (40016, 43, 87, '神秘宝藏16', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-10.png', NULL, NULL, NULL, NULL, 'public', 0, 88, false, 1773322573872, 1773322573872, true, NULL), + (40017, 44, 87, '神秘宝藏17', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-35.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (40018, 45, 87, '神秘宝藏18', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-16.png', NULL, NULL, NULL, NULL, 'public', 0, 42, false, 1773322573872, 1773322573872, true, NULL), + (40019, 46, 87, '神秘宝藏19', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-03.png', NULL, NULL, NULL, NULL, 'public', 0, 185, false, 1773322573872, 1773322573872, true, NULL), + (40020, 47, 87, '神秘宝藏20', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-29.png', NULL, NULL, NULL, NULL, 'public', 0, 3, false, 1773322573872, 1773322573872, true, NULL), + (40021, 49, 87, '神秘宝藏21', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-08.png', NULL, NULL, NULL, NULL, 'public', 0, 105, false, 1773322573872, 1773322573872, true, NULL), + (40022, 50, 87, '神秘宝藏22', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-24.png', NULL, NULL, NULL, NULL, 'public', 0, 15, false, 1773322573872, 1773322573872, true, NULL), + (40023, 45, 87, '神秘宝藏23', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-11.png', NULL, NULL, NULL, NULL, 'public', 0, 75, false, 1773322573872, 1773322573872, true, NULL), + (40024, 2, 87, '神秘宝藏24', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-34.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (40025, 8, 87, '神秘宝藏25', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-19.png', NULL, NULL, NULL, NULL, 'public', 0, 32, false, 1773322573872, 1773322573872, true, NULL), + (40026, 13, 87, '神秘宝藏26', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-30.png', NULL, NULL, NULL, NULL, 'public', 0, 2, false, 1773322573872, 1773322573872, true, NULL), + (40027, 14, 87, '神秘宝藏27', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-06.png', NULL, NULL, NULL, NULL, 'public', 0, 120, false, 1773322573872, 1773322573872, true, NULL), + (40028, 15, 87, '神秘宝藏28', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-27.png', NULL, NULL, NULL, NULL, 'public', 0, 8, false, 1773322573872, 1773322573872, true, NULL), + (40029, 16, 87, '神秘宝藏29', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-23.png', NULL, NULL, NULL, NULL, 'public', 0, 18, false, 1773322573872, 1773322573872, true, NULL), + (40030, 17, 87, '神秘宝藏30', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-04.png', NULL, NULL, NULL, NULL, 'public', 0, 160, false, 1773322573872, 1773322573872, true, NULL), + (40031, 18, 87, '神秘宝藏31', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-32.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (40032, 29, 87, '神秘宝藏32', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-13.png', NULL, NULL, NULL, NULL, 'public', 0, 62, false, 1773322573872, 1773322573872, true, NULL), + (40033, 30, 87, '神秘宝藏33', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-37.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (40034, 31, 87, '神秘宝藏34', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-21.png', NULL, NULL, NULL, NULL, 'public', 0, 25, false, 1773322573872, 1773322573872, true, NULL), + (40035, 32, 87, '神秘宝藏35', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-35.png', NULL, NULL, NULL, NULL, 'public', 0, 0, false, 1773322573872, 1773322573872, true, NULL), + (40036, 33, 87, '神秘宝藏36', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-17.png', NULL, NULL, NULL, NULL, 'public', 0, 38, false, 1773322573872, 1773322573872, true, NULL), + (40037, 34, 87, '神秘宝藏37', 'https://top-fans-test.oss-cn-shanghai.aliyuncs.com/asset/1/87/image-26.png', NULL, NULL, NULL, NULL, 'public', 0, 10, false, 1773322573872, 1773322573872, true, NULL); + +-- ===================================================== +-- 5. 批量插入 asset_registry 记录 +-- ===================================================== +INSERT INTO asset_registry (id, asset_id, asset_type, owner_uid, star_id, grade, collection_category, activity_id, activity_type, status, like_count, display_status, created_at, updated_at) +SELECT id, id, 'artwork', owner_uid, star_id, NULL, NULL, NULL, NULL, 0, like_count, 0, 1773322573872, 1773322573872 +FROM assets +WHERE id >= 10000; + +COMMIT; \ No newline at end of file diff --git a/docker/sql/migrations/V8__exhibition_for_mock_assets.sql b/docker/sql/migrations/V8__exhibition_for_mock_assets.sql new file mode 100644 index 0000000..50e48ca --- /dev/null +++ b/docker/sql/migrations/V8__exhibition_for_mock_assets.sql @@ -0,0 +1,39 @@ +-- V8: 将mock资产插入展示表exhibitions (2026-05-17) +-- 为所有mock资产(asset_id: 10001-40037)创建展示记录 +-- 结束时间 = 开始时间 + 1个月 + +BEGIN; + +-- 获取当前时间戳(毫秒)作为开始时间 +DO $$ +DECLARE + start_ts bigint := (EXTRACT(EPOCH FROM NOW()) * 1000)::bigint; + expire_ts bigint := (EXTRACT(EPOCH FROM NOW()) * 1000)::bigint + (30::bigint * 24 * 60 * 60 * 1000); -- 加1个月 + slot_ids bigint[]; + slot_rec record; + asset_rec record; + i int := 0; +BEGIN + -- 收集star_id=87的所有可用slot_id + SELECT array_agg(slot_id ORDER BY slot_id) INTO slot_ids FROM booth_slots WHERE star_id = 87; + + -- 为每个mock资产创建展示记录 + FOR asset_rec IN SELECT id, owner_uid FROM assets WHERE id >= 10000 ORDER BY id LOOP + -- 循环分配slot_id + IF array_length(slot_ids, 1) > 0 THEN + i := (i % array_length(slot_ids, 1)) + 1; + + -- 获取对应slot的host_profile_id + SELECT host_profile_id INTO slot_rec FROM booth_slots WHERE slot_id = slot_ids[i]; + + INSERT INTO exhibitions (asset_id, slot_id, host_profile_id, occupier_uid, occupier_star_id, start_time, expire_at, created_at, updated_at) + VALUES (asset_rec.id, slot_ids[i], slot_rec.host_profile_id, asset_rec.owner_uid, 87, start_ts, expire_ts, start_ts, start_ts) + ON CONFLICT (asset_id) WHERE deleted_at IS NULL DO NOTHING; + END IF; + END LOOP; +END $$; + +-- 将asset_registry的display_status设为1 +UPDATE asset_registry SET display_status = 1 WHERE id >= 10000; + +COMMIT; \ No newline at end of file diff --git a/frontend/pages/square/config/mockData.js b/frontend/pages/square/config/mockData.js index ab5d670..31c7212 100644 --- a/frontend/pages/square/config/mockData.js +++ b/frontend/pages/square/config/mockData.js @@ -1,7 +1,7 @@ // ========== 模拟数据配置 ========== // 是否使用模拟数据(开发调试时设为 true,上线后改为 false) -export const USE_MOCK_DATA = true +export const USE_MOCK_DATA = false // 模拟图片列表 const MOCK_IMAGES = [ diff --git a/frontend/static/AIimg/beijing.png b/frontend/static/AIimg/beijing.png index 957d2b7..d5b43d7 100644 Binary files a/frontend/static/AIimg/beijing.png and b/frontend/static/AIimg/beijing.png differ diff --git a/frontend/static/AIimg/duihuakuang.png b/frontend/static/AIimg/duihuakuang.png index e0add7f..7efe16a 100644 Binary files a/frontend/static/AIimg/duihuakuang.png and b/frontend/static/AIimg/duihuakuang.png differ diff --git a/frontend/static/AIimg/zhuixinglicheng.png b/frontend/static/AIimg/zhuixinglicheng.png index 29a5bdc..6ef196b 100644 Binary files a/frontend/static/AIimg/zhuixinglicheng.png and b/frontend/static/AIimg/zhuixinglicheng.png differ diff --git a/frontend/static/background/background3.png b/frontend/static/background/background3.png index bcd926c..3d818b0 100644 Binary files a/frontend/static/background/background3.png and b/frontend/static/background/background3.png differ diff --git a/frontend/static/background/exhibitionSuccess.png b/frontend/static/background/exhibitionSuccess.png index 7b82b4c..5ae8bab 100644 Binary files a/frontend/static/background/exhibitionSuccess.png and b/frontend/static/background/exhibitionSuccess.png differ diff --git a/frontend/static/background/friend-list-bg.png b/frontend/static/background/friend-list-bg.png index 60a69d4..a0fbf1b 100644 Binary files a/frontend/static/background/friend-list-bg.png and b/frontend/static/background/friend-list-bg.png differ diff --git a/frontend/static/background/login-bg.png b/frontend/static/background/login-bg.png index b9b253e..529d58a 100644 Binary files a/frontend/static/background/login-bg.png and b/frontend/static/background/login-bg.png differ diff --git a/frontend/static/background/mainbg.png b/frontend/static/background/mainbg.png index 89fd1ac..a73d471 100644 Binary files a/frontend/static/background/mainbg.png and b/frontend/static/background/mainbg.png differ diff --git a/frontend/static/background/mainpage.png b/frontend/static/background/mainpage.png index 581c1a8..129ec5e 100644 Binary files a/frontend/static/background/mainpage.png and b/frontend/static/background/mainpage.png differ diff --git a/frontend/static/background/profile-bg.png b/frontend/static/background/profile-bg.png index d030539..3830af2 100644 Binary files a/frontend/static/background/profile-bg.png and b/frontend/static/background/profile-bg.png differ diff --git a/frontend/static/background/starbook.png b/frontend/static/background/starbook.png index 0005534..88f78ec 100644 Binary files a/frontend/static/background/starbook.png and b/frontend/static/background/starbook.png differ diff --git a/frontend/static/background/zhoubian.png b/frontend/static/background/zhoubian.png index 33b2910..704c5b6 100644 Binary files a/frontend/static/background/zhoubian.png and b/frontend/static/background/zhoubian.png differ diff --git a/frontend/static/castlove/guangshanka.png b/frontend/static/castlove/guangshanka.png index bfa7938..049bc68 100644 Binary files a/frontend/static/castlove/guangshanka.png and b/frontend/static/castlove/guangshanka.png differ diff --git a/frontend/static/castlove/leisheka.png b/frontend/static/castlove/leisheka.png index d2a45c3..adfb990 100644 Binary files a/frontend/static/castlove/leisheka.png and b/frontend/static/castlove/leisheka.png differ diff --git a/frontend/static/castlove/pailide.png b/frontend/static/castlove/pailide.png index fe9fdce..bd8c944 100644 Binary files a/frontend/static/castlove/pailide.png and b/frontend/static/castlove/pailide.png differ diff --git a/frontend/static/castlove/silapian.png b/frontend/static/castlove/silapian.png index 3ee0a54..b13f642 100644 Binary files a/frontend/static/castlove/silapian.png and b/frontend/static/castlove/silapian.png differ diff --git a/frontend/static/components/friend-booth-base.png b/frontend/static/components/friend-booth-base.png index 2999548..c8c9aee 100644 Binary files a/frontend/static/components/friend-booth-base.png and b/frontend/static/components/friend-booth-base.png differ diff --git a/frontend/static/components/my-booth-base.png b/frontend/static/components/my-booth-base.png index 7a5fb3f..00dfd2e 100644 Binary files a/frontend/static/components/my-booth-base.png and b/frontend/static/components/my-booth-base.png differ diff --git a/frontend/static/nft/beijingban.png b/frontend/static/nft/beijingban.png index 35785cc..7425e56 100644 Binary files a/frontend/static/nft/beijingban.png and b/frontend/static/nft/beijingban.png differ diff --git a/frontend/static/nft/collection.png b/frontend/static/nft/collection.png index 0970bdc..b71ba31 100644 Binary files a/frontend/static/nft/collection.png and b/frontend/static/nft/collection.png differ diff --git a/frontend/static/nft/content/collection.png b/frontend/static/nft/content/collection.png index 0970bdc..b71ba31 100644 Binary files a/frontend/static/nft/content/collection.png and b/frontend/static/nft/content/collection.png differ diff --git a/frontend/static/nft/huoyuezhi_jiedian.png b/frontend/static/nft/huoyuezhi_jiedian.png index 444a4fc..3fe06bd 100644 Binary files a/frontend/static/nft/huoyuezhi_jiedian.png and b/frontend/static/nft/huoyuezhi_jiedian.png differ diff --git a/frontend/static/nft/huoyuezhitubiao.png b/frontend/static/nft/huoyuezhitubiao.png index 245eb1e..475c4b4 100644 Binary files a/frontend/static/nft/huoyuezhitubiao.png and b/frontend/static/nft/huoyuezhitubiao.png differ diff --git a/frontend/static/nft/lihe.png b/frontend/static/nft/lihe.png index 0698187..2591ba8 100644 Binary files a/frontend/static/nft/lihe.png and b/frontend/static/nft/lihe.png differ diff --git a/frontend/static/rank/artwork-reference/23f16c5361c5f16a9ff03e5c04f42f94.png b/frontend/static/rank/artwork-reference/23f16c5361c5f16a9ff03e5c04f42f94.png index ca2f236..6ddd795 100644 Binary files a/frontend/static/rank/artwork-reference/23f16c5361c5f16a9ff03e5c04f42f94.png and b/frontend/static/rank/artwork-reference/23f16c5361c5f16a9ff03e5c04f42f94.png differ diff --git a/frontend/static/rank/artwork-reference/27d6d2515cdbd401383f763594f82523.png b/frontend/static/rank/artwork-reference/27d6d2515cdbd401383f763594f82523.png index 69dceeb..6c3e1c4 100644 Binary files a/frontend/static/rank/artwork-reference/27d6d2515cdbd401383f763594f82523.png and b/frontend/static/rank/artwork-reference/27d6d2515cdbd401383f763594f82523.png differ diff --git a/frontend/static/rank/artwork-reference/318a1ac2eedc4422fdb7eb3959105e20.png b/frontend/static/rank/artwork-reference/318a1ac2eedc4422fdb7eb3959105e20.png index 8a810cf..20cfda0 100644 Binary files a/frontend/static/rank/artwork-reference/318a1ac2eedc4422fdb7eb3959105e20.png and b/frontend/static/rank/artwork-reference/318a1ac2eedc4422fdb7eb3959105e20.png differ diff --git a/frontend/static/rank/artwork-reference/a81598384d36192b870329a300a60e4b.png b/frontend/static/rank/artwork-reference/a81598384d36192b870329a300a60e4b.png index 8006d9b..7d80ee1 100644 Binary files a/frontend/static/rank/artwork-reference/a81598384d36192b870329a300a60e4b.png and b/frontend/static/rank/artwork-reference/a81598384d36192b870329a300a60e4b.png differ diff --git a/frontend/static/rank/artwork-reference/c1b8e98b5b1e1a81efcf8bd50170a1bf.png b/frontend/static/rank/artwork-reference/c1b8e98b5b1e1a81efcf8bd50170a1bf.png index 28cc34f..6086fc7 100644 Binary files a/frontend/static/rank/artwork-reference/c1b8e98b5b1e1a81efcf8bd50170a1bf.png and b/frontend/static/rank/artwork-reference/c1b8e98b5b1e1a81efcf8bd50170a1bf.png differ diff --git a/frontend/static/rank/artwork-reference/dd6cf6061513ff7ab6bae8f08de07d40.png b/frontend/static/rank/artwork-reference/dd6cf6061513ff7ab6bae8f08de07d40.png index 89ea2f0..ea6f7e8 100644 Binary files a/frontend/static/rank/artwork-reference/dd6cf6061513ff7ab6bae8f08de07d40.png and b/frontend/static/rank/artwork-reference/dd6cf6061513ff7ab6bae8f08de07d40.png differ diff --git a/frontend/static/rank/background-poster/big-screen-support-activity-bg.png b/frontend/static/rank/background-poster/big-screen-support-activity-bg.png index d5feb91..c6b7d9a 100644 Binary files a/frontend/static/rank/background-poster/big-screen-support-activity-bg.png and b/frontend/static/rank/background-poster/big-screen-support-activity-bg.png differ diff --git a/frontend/static/rank/background-poster/birthday-support-completed-poster-bg.png b/frontend/static/rank/background-poster/birthday-support-completed-poster-bg.png index 47ec5b0..699d298 100644 Binary files a/frontend/static/rank/background-poster/birthday-support-completed-poster-bg.png and b/frontend/static/rank/background-poster/birthday-support-completed-poster-bg.png differ diff --git a/frontend/static/rank/background-poster/birthday-support-initial-progress-bg.png b/frontend/static/rank/background-poster/birthday-support-initial-progress-bg.png index 27c7a47..f2ed007 100644 Binary files a/frontend/static/rank/background-poster/birthday-support-initial-progress-bg.png and b/frontend/static/rank/background-poster/birthday-support-initial-progress-bg.png differ diff --git a/frontend/static/rank/background-poster/birthday-support-offline-activity-bg.png b/frontend/static/rank/background-poster/birthday-support-offline-activity-bg.png index 8e73450..13438fe 100644 Binary files a/frontend/static/rank/background-poster/birthday-support-offline-activity-bg.png and b/frontend/static/rank/background-poster/birthday-support-offline-activity-bg.png differ diff --git a/frontend/static/rank/background-poster/bus-support-completed-poster-bg.png b/frontend/static/rank/background-poster/bus-support-completed-poster-bg.png index cc728bc..1c43b15 100644 Binary files a/frontend/static/rank/background-poster/bus-support-completed-poster-bg.png and b/frontend/static/rank/background-poster/bus-support-completed-poster-bg.png differ diff --git a/frontend/static/rank/background-poster/bus-support-initial-poster-bg.png b/frontend/static/rank/background-poster/bus-support-initial-poster-bg.png index 3ecd4d2..ae6865c 100644 Binary files a/frontend/static/rank/background-poster/bus-support-initial-poster-bg.png and b/frontend/static/rank/background-poster/bus-support-initial-poster-bg.png differ diff --git a/frontend/static/rank/background-poster/offline-big-screen-support-img.png b/frontend/static/rank/background-poster/offline-big-screen-support-img.png index f14fa6f..c106532 100644 Binary files a/frontend/static/rank/background-poster/offline-big-screen-support-img.png and b/frontend/static/rank/background-poster/offline-big-screen-support-img.png differ diff --git a/frontend/static/rank/background-poster/square-bg.png b/frontend/static/rank/background-poster/square-bg.png index 62d3b10..3043815 100644 Binary files a/frontend/static/rank/background-poster/square-bg.png and b/frontend/static/rank/background-poster/square-bg.png differ diff --git a/frontend/static/rank/background-poster/star-show-completed-poster-bg.png b/frontend/static/rank/background-poster/star-show-completed-poster-bg.png index 80aa3a1..b0848ba 100644 Binary files a/frontend/static/rank/background-poster/star-show-completed-poster-bg.png and b/frontend/static/rank/background-poster/star-show-completed-poster-bg.png differ diff --git a/frontend/static/rank/background-poster/star-show-completed-progress-bg.png b/frontend/static/rank/background-poster/star-show-completed-progress-bg.png index 42ab6e2..7f593ba 100644 Binary files a/frontend/static/rank/background-poster/star-show-completed-progress-bg.png and b/frontend/static/rank/background-poster/star-show-completed-progress-bg.png differ diff --git a/frontend/static/rank/background-poster/star-show-initial-progress-bg.png b/frontend/static/rank/background-poster/star-show-initial-progress-bg.png index e7f21e7..011507e 100644 Binary files a/frontend/static/rank/background-poster/star-show-initial-progress-bg.png and b/frontend/static/rank/background-poster/star-show-initial-progress-bg.png differ diff --git a/frontend/static/square/4.png b/frontend/static/square/4.png index 2920ca8..b9d8c5a 100644 Binary files a/frontend/static/square/4.png and b/frontend/static/square/4.png differ diff --git a/frontend/static/square/baji.png b/frontend/static/square/baji.png index e9453c9..d18c4f0 100644 Binary files a/frontend/static/square/baji.png and b/frontend/static/square/baji.png differ diff --git a/frontend/static/square/cangpinkuang1.png b/frontend/static/square/cangpinkuang1.png index 7c8d3ec..febb66b 100644 Binary files a/frontend/static/square/cangpinkuang1.png and b/frontend/static/square/cangpinkuang1.png differ diff --git a/frontend/static/square/cangpinkuang2.png b/frontend/static/square/cangpinkuang2.png index 9857630..bcb7fc1 100644 Binary files a/frontend/static/square/cangpinkuang2.png and b/frontend/static/square/cangpinkuang2.png differ diff --git a/frontend/static/square/cangpinkuang3.png b/frontend/static/square/cangpinkuang3.png index 90996a3..e588be4 100644 Binary files a/frontend/static/square/cangpinkuang3.png and b/frontend/static/square/cangpinkuang3.png differ diff --git a/frontend/static/square/dianjibaifang.png b/frontend/static/square/dianjibaifang.png index 146c433..38728e5 100644 Binary files a/frontend/static/square/dianjibaifang.png and b/frontend/static/square/dianjibaifang.png differ diff --git a/frontend/static/square/gerentouxiangkuang.png b/frontend/static/square/gerentouxiangkuang.png index 26d8144..354dfeb 100644 Binary files a/frontend/static/square/gerentouxiangkuang.png and b/frontend/static/square/gerentouxiangkuang.png differ diff --git a/frontend/static/square/haibao.png b/frontend/static/square/haibao.png index 8ffae02..2e6fa5e 100644 Binary files a/frontend/static/square/haibao.png and b/frontend/static/square/haibao.png differ diff --git a/frontend/static/square/xingka.png b/frontend/static/square/xingka.png index b1d86ee..36cf613 100644 Binary files a/frontend/static/square/xingka.png and b/frontend/static/square/xingka.png differ diff --git a/frontend/static/starcity/zhoubian/merchandise1.png b/frontend/static/starcity/zhoubian/merchandise1.png index 856be3f..f253be3 100644 Binary files a/frontend/static/starcity/zhoubian/merchandise1.png and b/frontend/static/starcity/zhoubian/merchandise1.png differ diff --git a/frontend/static/starcity/zhoubian/xiaoka-card.png b/frontend/static/starcity/zhoubian/xiaoka-card.png index 49eca33..74ffa94 100644 Binary files a/frontend/static/starcity/zhoubian/xiaoka-card.png and b/frontend/static/starcity/zhoubian/xiaoka-card.png differ diff --git a/frontend/static/starcity/zhuangban/boost-card.png b/frontend/static/starcity/zhuangban/boost-card.png index cbe1a7e..e19965e 100644 Binary files a/frontend/static/starcity/zhuangban/boost-card.png and b/frontend/static/starcity/zhuangban/boost-card.png differ diff --git a/frontend/static/sucai/image-04.png b/frontend/static/sucai/image-04.png index 54f81b9..52ad469 100644 Binary files a/frontend/static/sucai/image-04.png and b/frontend/static/sucai/image-04.png differ diff --git a/frontend/static/sucai/image-08.png b/frontend/static/sucai/image-08.png index bb2ed69..0d4b20b 100644 Binary files a/frontend/static/sucai/image-08.png and b/frontend/static/sucai/image-08.png differ diff --git a/frontend/static/sucai/image-10.png b/frontend/static/sucai/image-10.png index 7d2e016..b75cda7 100644 Binary files a/frontend/static/sucai/image-10.png and b/frontend/static/sucai/image-10.png differ diff --git a/frontend/static/sucai/image-11.png b/frontend/static/sucai/image-11.png index 876cc12..0115cf9 100644 Binary files a/frontend/static/sucai/image-11.png and b/frontend/static/sucai/image-11.png differ diff --git a/frontend/static/sucai/image-16.png b/frontend/static/sucai/image-16.png index e2ca35c..082960f 100644 Binary files a/frontend/static/sucai/image-16.png and b/frontend/static/sucai/image-16.png differ diff --git a/frontend/static/sucai/image-26.png b/frontend/static/sucai/image-26.png index f05bf40..dcae86a 100644 Binary files a/frontend/static/sucai/image-26.png and b/frontend/static/sucai/image-26.png differ diff --git a/frontend/static/sucai/image-27.png b/frontend/static/sucai/image-27.png index bebafbd..ccb94ea 100644 Binary files a/frontend/static/sucai/image-27.png and b/frontend/static/sucai/image-27.png differ diff --git a/frontend/static/sucai/image-29.png b/frontend/static/sucai/image-29.png index 543441a..c2cf1ca 100644 Binary files a/frontend/static/sucai/image-29.png and b/frontend/static/sucai/image-29.png differ diff --git a/frontend/static/sucai/image-30.png b/frontend/static/sucai/image-30.png index 1135b67..13f94b5 100644 Binary files a/frontend/static/sucai/image-30.png and b/frontend/static/sucai/image-30.png differ diff --git a/frontend/static/sucai/image-32.png b/frontend/static/sucai/image-32.png index a8a9217..edeb261 100644 Binary files a/frontend/static/sucai/image-32.png and b/frontend/static/sucai/image-32.png differ diff --git a/frontend/static/sucai/image-37.png b/frontend/static/sucai/image-37.png index 829ac55..6145d4d 100644 Binary files a/frontend/static/sucai/image-37.png and b/frontend/static/sucai/image-37.png differ diff --git a/frontend/static/sucai/image-38.png b/frontend/static/sucai/image-38.png index 4c21e81..13c8182 100644 Binary files a/frontend/static/sucai/image-38.png and b/frontend/static/sucai/image-38.png differ diff --git a/frontend/static/sucai/image-39.png b/frontend/static/sucai/image-39.png index 6a9b352..436391f 100644 Binary files a/frontend/static/sucai/image-39.png and b/frontend/static/sucai/image-39.png differ diff --git a/frontend/static/sucai/image-45.png b/frontend/static/sucai/image-45.png index 69e013e..6cc9831 100644 Binary files a/frontend/static/sucai/image-45.png and b/frontend/static/sucai/image-45.png differ diff --git a/frontend/static/sucai/image-46.png b/frontend/static/sucai/image-46.png index dde425e..8bb0b40 100644 Binary files a/frontend/static/sucai/image-46.png and b/frontend/static/sucai/image-46.png differ diff --git a/frontend/static/sucai/image-53.png b/frontend/static/sucai/image-53.png index 4be02b3..71667d1 100644 Binary files a/frontend/static/sucai/image-53.png and b/frontend/static/sucai/image-53.png differ