CREATE TABLE `user_model_preferences` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `user_id` BIGINT NOT NULL, `scope_key` VARCHAR(120) NOT NULL DEFAULT 'global', `project_id` BIGINT NULL, `preference_key` VARCHAR(120) NOT NULL, `text_provider_code` VARCHAR(100) NULL, `image_provider_code` VARCHAR(100) NULL, `video_provider_code` VARCHAR(100) NULL, `voice_provider_code` VARCHAR(100) NULL, `metadata_json` JSON NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), UNIQUE INDEX `ump_user_scope_key_unique` (`user_id`, `scope_key`, `preference_key`), INDEX `ump_user_scope_idx` (`user_id`, `scope_key`), INDEX `ump_project_idx` (`project_id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE TABLE `project_visual_assets` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `project_id` BIGINT NOT NULL, `user_id` BIGINT NOT NULL, `asset_id` BIGINT NULL, `asset_kind` VARCHAR(50) NOT NULL, `asset_type` VARCHAR(80) NOT NULL, `name` VARCHAR(160) NOT NULL, `label` VARCHAR(160) NULL, `ownership_type` VARCHAR(50) NOT NULL DEFAULT 'shared_story', `owner_character_id` BIGINT NULL, `source_type` VARCHAR(80) NOT NULL DEFAULT 'manual', `source_label` VARCHAR(160) NULL, `prompt_text` LONGTEXT NULL, `negative_prompt` LONGTEXT NULL, `usage_tags_json` JSON NULL, `quality_score` DECIMAL(5, 2) NULL, `is_primary` BOOLEAN NOT NULL DEFAULT false, `metadata_json` JSON NULL, `status` VARCHAR(50) NOT NULL DEFAULT 'active', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), PRIMARY KEY (`id`), INDEX `pva_project_kind_status_idx` (`project_id`, `asset_kind`, `status`), INDEX `pva_project_type_idx` (`project_id`, `asset_type`), INDEX `pva_owner_character_idx` (`owner_character_id`), INDEX `pva_asset_idx` (`asset_id`), INDEX `pva_user_kind_idx` (`user_id`, `asset_kind`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;