feat: expand novel IP and production workflows

This commit is contained in:
www
2026-09-18 08:14:05 +02:00
parent b2ae4600b4
commit d9c81a3ac0
235 changed files with 117971 additions and 2721 deletions
@@ -0,0 +1,60 @@
CREATE TABLE `character_provider_bindings` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`global_character_id` BIGINT NOT NULL,
`look_version_id` BIGINT NULL,
`source_asset_id` BIGINT NULL,
`provider_code` VARCHAR(100) NOT NULL,
`provider_asset_type` VARCHAR(50) NOT NULL DEFAULT 'video_character_element',
`provider_element_id` VARCHAR(191) NOT NULL,
`element_name` VARCHAR(160) NOT NULL,
`element_description` TEXT NULL,
`source_duration` DECIMAL(5,2) NULL,
`voice_bound` BOOLEAN NOT NULL DEFAULT false,
`voice_id` VARCHAR(160) NULL,
`voice_description` TEXT NULL,
`binding_version` INTEGER NOT NULL DEFAULT 1,
`validation_score` DECIMAL(5,2) NULL,
`validation_report_json` JSON NULL,
`status` VARCHAR(50) NOT NULL DEFAULT 'candidate',
`is_primary` BOOLEAN NOT NULL DEFAULT false,
`created_by_user_id` BIGINT NULL,
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updated_at` DATETIME(3) NOT NULL,
UNIQUE INDEX `cpb_provider_element_key`(`provider_code`, `provider_element_id`),
INDEX `cpb_character_provider_status_idx`(`global_character_id`, `provider_code`, `status`),
INDEX `cpb_look_version_idx`(`look_version_id`),
INDEX `cpb_source_asset_idx`(`source_asset_id`),
INDEX `cpb_primary_status_idx`(`is_primary`, `status`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
UPDATE `provider_configs`
SET `config_json` = JSON_SET(
COALESCE(`config_json`, JSON_OBJECT()),
'$.aspect_ratio', '16:9',
'$.allowed_aspect_ratios', JSON_ARRAY('16:9'),
'$.production_aspect_ratio', '16:9'
)
WHERE `provider_type` IN ('ImageProvider', 'VideoProvider');
UPDATE `provider_configs`
SET `config_json` = JSON_SET(`config_json`, '$.size', '2560x1440')
WHERE `provider_type` = 'ImageProvider'
AND JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.size')) = '1440x2560';
UPDATE `provider_configs`
SET `config_json` = JSON_SET(`config_json`, '$.size', '1536x1024')
WHERE `provider_type` = 'ImageProvider'
AND JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.size')) = '1024x1792';
UPDATE `provider_configs`
SET `config_json` = JSON_SET(
`config_json`,
'$.width', CAST(JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.height')) AS UNSIGNED),
'$.height', CAST(JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.width')) AS UNSIGNED)
)
WHERE `provider_type` IN ('ImageProvider', 'VideoProvider')
AND JSON_TYPE(JSON_EXTRACT(`config_json`, '$.width')) IN ('INTEGER', 'DOUBLE')
AND JSON_TYPE(JSON_EXTRACT(`config_json`, '$.height')) IN ('INTEGER', 'DOUBLE')
AND CAST(JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.width')) AS UNSIGNED)
< CAST(JSON_UNQUOTE(JSON_EXTRACT(`config_json`, '$.height')) AS UNSIGNED);