from __future__ import annotations from enum import StrEnum class UploadResourceModuleEnum(StrEnum): """上传资源所属业务模块。""" COMMON = "common" HOT_OPENING_REPLICATE = "hot_opening_replicate" SHOT_REPLICATE = "shot_replicate" class UploadResourceTypeEnum(StrEnum): """上传资源类型。""" IMAGE = "image" VIDEO = "video" AUDIO = "audio" SHOT_SEGMENT = "shot_segment" class UploadResourceBindStatusEnum(StrEnum): """上传资源绑定状态。""" PENDING = "pending" BOUND = "bound" class UploadResourceDeletePolicyEnum(StrEnum): """上传资源删除策略。""" USER_DELETABLE = "user_deletable" MODULE_ONLY = "module_only" SYSTEM_ONLY = "system_only" class UploadResourceCreatedByEnum(StrEnum): """上传资源创建来源。""" API = "api" BACKFILL = "backfill" SPLIT_TASK = "split_task" SYSTEM_CLEANUP = "system_cleanup" class UploadResourceDurationSourceEnum(StrEnum): """音视频秒数来源。""" FFPROBE = "ffprobe" CLIENT = "client" BUSINESS = "business" UNKNOWN = "unknown" class UploadResourceFileDeleteStatusEnum(StrEnum): """上传资源真实文件删除状态。""" ACTIVE = "active" PENDING_DELETE = "pending_delete" DELETED = "deleted" DELETE_FAILED = "delete_failed" DELETE_MARKED_PENDING = "delete_marked_pending" DELETE_PHYSICAL_SUCCESS = "delete_physical_success" DELETE_PHYSICAL_MISSING = "delete_physical_missing" DELETE_PHYSICAL_FAILED = "delete_physical_failed" CLEANUP_PENDING_START = "cleanup_pending_start" CLEANUP_PENDING_FINISHED = "cleanup_pending_finished" MISSING = "missing" class UploadResourceSourceModelEnum(StrEnum): """上传资源业务来源模型名。""" MODULE_GENERATION_PROJECT = "ModuleGenerationProject" SHOT_REPLICATE_TASK_SET = "ShotReplicateTaskSet" SHOT_REPLICATE_SEGMENT = "ShotReplicateSegment" class UploadResourceEventEnum(StrEnum): """上传资源日志事件。""" UPLOAD_START = "upload_start" UPLOAD_CAPACITY_CHECKED = "upload_capacity_checked" UPLOAD_CAPACITY_REJECTED = "upload_capacity_rejected" UPLOAD_FILE_SAVED = "upload_file_saved" UPLOAD_DB_RECORDED = "upload_db_recorded" UPLOAD_FAILED = "upload_failed" DELETE_START = "delete_start" DELETE_REJECTED_BOUND = "delete_rejected_bound" DELETE_FILE_REMOVED = "delete_file_removed" DELETE_CAPACITY_RELEASED = "delete_capacity_released" DELETE_FAILED = "delete_failed" DELETE_MARKED_PENDING = "delete_marked_pending" DELETE_PHYSICAL_SUCCESS = "delete_physical_success" DELETE_PHYSICAL_MISSING = "delete_physical_missing" DELETE_PHYSICAL_FAILED = "delete_physical_failed" CLEANUP_PENDING_START = "cleanup_pending_start" CLEANUP_PENDING_FINISHED = "cleanup_pending_finished" BIND_START = "bind_start" BIND_SUCCESS = "bind_success" BIND_CONFLICT = "bind_conflict" BIND_SKIPPED = "bind_skipped" BACKFILL_START = "backfill_start" BACKFILL_FILE_MATCHED = "backfill_file_matched" BACKFILL_FILE_INSERTED = "backfill_file_inserted" BACKFILL_FILE_EXISTS = "backfill_file_exists" BACKFILL_FILE_SKIPPED = "backfill_file_skipped" BACKFILL_REBIND_DONE = "backfill_rebind_done" BACKFILL_STATS_REBUILT = "backfill_stats_rebuilt" BACKFILL_FINISHED = "backfill_finished" HISTORY_LIST_START = "history_list_start" HISTORY_LIST_SUCCESS = "history_list_success" HISTORY_LIST_FAILED = "history_list_failed" HISTORY_DAY_LIST_START = "history_day_list_start" HISTORY_DAY_LIST_SUCCESS = "history_day_list_success" HISTORY_DAY_LIST_FAILED = "history_day_list_failed" DELETE_BATCH_START = "delete_batch_start" DELETE_BATCH_VALIDATE_FAILED = "delete_batch_validate_failed" DELETE_BATCH_MARKED_PENDING = "delete_batch_marked_pending" DELETE_BATCH_COMMIT_SUCCESS = "delete_batch_commit_success" DELETE_BATCH_CLEANUP_SUCCESS = "delete_batch_cleanup_success" DELETE_BATCH_CLEANUP_FAILED = "delete_batch_cleanup_failed" DELETE_BATCH_FAILED = "delete_batch_failed" DELETE_BATCH_ROLLBACK_FAILED = "delete_batch_rollback_failed" DELETE_UPLOAD_FAILED = "delete_upload_failed" DELETE_UPLOAD_ROLLBACK_FAILED = "delete_upload_rollback_failed" DELETE_UPLOAD_CLEANUP_FAILED = "delete_upload_cleanup_failed" HOT_OPENING_DELETE_PROJECT_FAILED = "hot_opening_delete_project_failed" HOT_OPENING_DELETE_PROJECT_ROLLBACK_FAILED = "hot_opening_delete_project_rollback_failed" HOT_OPENING_DELETE_PROJECT_CLEANUP_FAILED = "hot_opening_delete_project_cleanup_failed" SHOT_SEGMENT_DELETE_FAILED = "shot_segment_delete_failed" SHOT_SEGMENT_DELETE_ROLLBACK_FAILED = "shot_segment_delete_rollback_failed" SHOT_SEGMENT_DELETE_CLEANUP_FAILED = "shot_segment_delete_cleanup_failed" SHOT_TASK_SET_DELETE_FAILED = "shot_task_set_delete_failed" SHOT_TASK_SET_DELETE_ROLLBACK_FAILED = "shot_task_set_delete_rollback_failed" SHOT_TASK_SET_DELETE_CLEANUP_FAILED = "shot_task_set_delete_cleanup_failed" UPLOAD_RESOURCE_PHYSICAL_DELETE_FAILED = "upload_resource_physical_delete_failed" UPLOAD_RESOURCE_CLEANUP_BATCH_FAILED = "upload_resource_cleanup_batch_failed" UPLOAD_RESOURCE_BACKFILL_CLI_FAILED = "upload_resource_backfill_cli_failed" UPLOAD_RESOURCE_BACKFILL_CLI_ROLLBACK_FAILED = "upload_resource_backfill_cli_rollback_failed" UPLOAD_RESOURCE_MODULE_LABELS: dict[str, str] = { UploadResourceModuleEnum.COMMON.value: "普通上传", UploadResourceModuleEnum.HOT_OPENING_REPLICATE.value: "爆款开头复刻", UploadResourceModuleEnum.SHOT_REPLICATE.value: "拆镜复刻", } UPLOAD_RESOURCE_TYPE_LABELS: dict[str, str] = { UploadResourceTypeEnum.IMAGE.value: "图片", UploadResourceTypeEnum.VIDEO.value: "视频", UploadResourceTypeEnum.AUDIO.value: "音频", UploadResourceTypeEnum.SHOT_SEGMENT.value: "拆镜切片", }