Files
video-gen/video-gen-api/app/enums/private_portrait.py
T

227 lines
8.1 KiB
Python

from __future__ import annotations
from enum import Enum
# 用户私域人像素材默认上限。users.private_portrait_asset_limit = 0 表示关闭模块;>0 表示启用并限制总素材量。
# 统计口径:真人 + 虚拟;图片 + 视频。音频当前业务暂不开放。
PRIVATE_PORTRAIT_DEFAULT_ASSET_LIMIT = 5
# 火山 Ark 私域素材 ProjectName:火山侧项目空间固定使用 default,并快照到各业务表 remote_project_name。
# 用户/项目隔离依赖本地 project_id 和火山返回的 Asset Group ID,不再动态拼接 ProjectName。
PRIVATE_PORTRAIT_REMOTE_PROJECT_NAME = "default"
PRIVATE_PORTRAIT_REAL_PERSON_GROUP_TYPE = "LivenessFace"
PRIVATE_PORTRAIT_VIRTUAL_GROUP_TYPE = "AIGC"
# 兼容旧代码导入,默认代表真人认证素材组类型。
PRIVATE_PORTRAIT_GROUP_TYPE = PRIVATE_PORTRAIT_REAL_PERSON_GROUP_TYPE
PRIVATE_PORTRAIT_VERIFY_TYPE = "real_time"
PRIVATE_PORTRAIT_SUCCESS_RESULT_CODE = "10000"
PRIVATE_PORTRAIT_ASSET_URI_PREFIX = "asset://"
ARK_PRIVATE_PORTRAIT_SERVICE_NAME = "ark"
ARK_PRIVATE_PORTRAIT_VERSION = "2024-01-01"
ARK_PRIVATE_PORTRAIT_REGION = "cn-beijing"
ARK_PRIVATE_PORTRAIT_HOST = "ark.cn-beijing.volcengineapi.com"
PRIVATE_PORTRAIT_ASSET_POLL_INTERVAL_SECONDS = 20
PRIVATE_PORTRAIT_VIDEO_ASSET_POLL_INTERVAL_SECONDS = 30
PRIVATE_PORTRAIT_ASSET_POLL_MAX_COUNT = 60
PRIVATE_PORTRAIT_VIDEO_ASSET_POLL_MAX_COUNT = 120
PRIVATE_PORTRAIT_ASSET_POLL_BATCH_SIZE = 50
PRIVATE_PORTRAIT_REMOTE_DELETE_RECOVERY_BATCH_SIZE = 50
PRIVATE_PORTRAIT_VALIDATE_TOKEN_EXPIRE_MINUTES = 30
# 系统侧保守限流;火山文档 GetAsset 是 100 QPS,这里预留余量为 80。
PRIVATE_PORTRAIT_ACTION_QPS_LIMITS: dict[str, int] = {
"CreateVisualValidateSession": 3,
"GetVisualValidateResult": 3,
"CreateAssetGroup": 10,
"CreateAsset": 1,
"ListAssetGroups": 10,
"ListAssets": 10,
"GetAsset": 80,
"GetAssetGroup": 10,
"UpdateAsset": 10,
"UpdateAssetGroup": 10,
"DeleteAsset": 10,
"DeleteAssetGroup": 5,
}
class ArkPrivatePortraitAction(str, Enum):
CREATE_VISUAL_VALIDATE_SESSION = "CreateVisualValidateSession"
GET_VISUAL_VALIDATE_RESULT = "GetVisualValidateResult"
CREATE_ASSET_GROUP = "CreateAssetGroup"
CREATE_ASSET = "CreateAsset"
GET_ASSET = "GetAsset"
LIST_ASSETS = "ListAssets"
LIST_ASSET_GROUPS = "ListAssetGroups"
GET_ASSET_GROUP = "GetAssetGroup"
UPDATE_ASSET = "UpdateAsset"
UPDATE_ASSET_GROUP = "UpdateAssetGroup"
DELETE_ASSET = "DeleteAsset"
DELETE_ASSET_GROUP = "DeleteAssetGroup"
class PrivatePortraitLibraryType(str, Enum):
REAL_PERSON = "real_person"
AIGC_VIRTUAL = "aigc_virtual"
class PrivatePortraitProjectStatus(str, Enum):
VALIDATING = "validating"
ACTIVE = "active"
VALIDATE_FAILED = "validate_failed"
CREATING_REMOTE_GROUP = "creating_remote_group"
CREATE_GROUP_FAILED = "create_group_failed"
DELETED = "deleted"
class PrivatePortraitValidateSessionStatus(str, Enum):
CREATED = "created"
CALLBACK_SUCCESS = "callback_success"
CALLBACK_FAILED = "callback_failed"
GROUP_ACTIVE = "group_active"
EXPIRED = "expired"
FAILED = "failed"
class PrivatePortraitAssetGroupStatus(str, Enum):
CREATING = "creating"
ACTIVE = "active"
LOCAL_DELETED = "local_deleted"
REMOTE_DELETED = "remote_deleted"
DELETE_FAILED = "delete_failed"
FAILED = "failed"
class PrivatePortraitAssetStatus(str, Enum):
CREATING = "creating"
PROCESSING = "Processing"
ACTIVE = "Active"
FAILED = "Failed"
LOCAL_DELETED = "local_deleted"
REMOTE_DELETED = "remote_deleted"
DELETE_FAILED = "delete_failed"
class PrivatePortraitAssetType(str, Enum):
IMAGE = "Image"
VIDEO = "Video"
AUDIO = "Audio" # 火山支持,但当前业务暂不开放。
PRIVATE_PORTRAIT_ENABLED_ASSET_TYPES = {
PrivatePortraitAssetType.IMAGE.value,
PrivatePortraitAssetType.VIDEO.value,
}
class PrivatePortraitRemoteDeleteStatus(str, Enum):
NONE = "none"
PENDING = "pending"
SUCCESS = "success"
FAILED = "failed"
SKIPPED = "skipped"
class PrivatePortraitReferenceSource(str, Enum):
PRIVATE_PORTRAIT_ASSET = "private_portrait_asset"
class PrivatePortraitEventStatus(str, Enum):
SUCCESS = "success"
FAILED = "failed"
PENDING = "pending"
SKIPPED = "skipped"
WARNING = "warning"
class PrivatePortraitEventSource(str, Enum):
API = "api"
SERVICE = "service"
CALLBACK = "callback"
CELERY = "celery"
ADMIN = "admin"
SYSTEM = "system"
class PrivatePortraitEventType(str, Enum):
QUOTA_CHECK_START = "QUOTA_CHECK_START"
QUOTA_CHECK_PASS = "QUOTA_CHECK_PASS"
QUOTA_CHECK_DENY = "QUOTA_CHECK_DENY"
PROJECT_CREATE = "PROJECT_CREATE"
PROJECT_UPDATE = "PROJECT_UPDATE"
PROJECT_DELETE = "PROJECT_DELETE"
VIRTUAL_PROJECT_CREATE_START = "VIRTUAL_PROJECT_CREATE_START"
VIRTUAL_ASSET_GROUP_CREATE_REMOTE_START = "VIRTUAL_ASSET_GROUP_CREATE_REMOTE_START"
VIRTUAL_ASSET_GROUP_CREATE_REMOTE_SUCCESS = "VIRTUAL_ASSET_GROUP_CREATE_REMOTE_SUCCESS"
VIRTUAL_ASSET_GROUP_CREATE_REMOTE_FAILED = "VIRTUAL_ASSET_GROUP_CREATE_REMOTE_FAILED"
VALIDATE_SESSION_CREATE = "VALIDATE_SESSION_CREATE"
VALIDATE_SESSION_CREATE_FAILED = "VALIDATE_SESSION_CREATE_FAILED"
VALIDATE_CALLBACK_RECEIVED = "VALIDATE_CALLBACK_RECEIVED"
VALIDATE_CALLBACK_SUCCESS = "VALIDATE_CALLBACK_SUCCESS"
VALIDATE_CALLBACK_FAILED = "VALIDATE_CALLBACK_FAILED"
VALIDATE_GET_RESULT_START = "VALIDATE_GET_RESULT_START"
VALIDATE_GET_RESULT_SUCCESS = "VALIDATE_GET_RESULT_SUCCESS"
VALIDATE_GET_RESULT_FAILED = "VALIDATE_GET_RESULT_FAILED"
ASSET_GROUP_UPDATE_REMOTE_START = "ASSET_GROUP_UPDATE_REMOTE_START"
ASSET_GROUP_UPDATE_REMOTE_SUCCESS = "ASSET_GROUP_UPDATE_REMOTE_SUCCESS"
ASSET_GROUP_UPDATE_REMOTE_FAILED = "ASSET_GROUP_UPDATE_REMOTE_FAILED"
ASSET_CREATE_REJECT_DISABLED = "ASSET_CREATE_REJECT_DISABLED"
ASSET_CREATE_REJECT_MAX_LIMIT = "ASSET_CREATE_REJECT_MAX_LIMIT"
ASSET_CREATE_START = "ASSET_CREATE_START"
ASSET_CREATE_SUCCESS = "ASSET_CREATE_SUCCESS"
ASSET_CREATE_FAILED = "ASSET_CREATE_FAILED"
ASSET_UPLOAD_START = "ASSET_UPLOAD_START"
ASSET_UPLOAD_SUCCESS = "ASSET_UPLOAD_SUCCESS"
ASSET_UPLOAD_FAILED = "ASSET_UPLOAD_FAILED"
ASSET_UPLOAD_BIND_START = "ASSET_UPLOAD_BIND_START"
ASSET_UPLOAD_BIND_SUCCESS = "ASSET_UPLOAD_BIND_SUCCESS"
ASSET_UPLOAD_BIND_FAILED = "ASSET_UPLOAD_BIND_FAILED"
ASSET_UPLOAD_RELEASE_START = "ASSET_UPLOAD_RELEASE_START"
ASSET_UPLOAD_RELEASE_SUCCESS = "ASSET_UPLOAD_RELEASE_SUCCESS"
ASSET_UPLOAD_RELEASE_FAILED = "ASSET_UPLOAD_RELEASE_FAILED"
ASSET_SYNC_START = "ASSET_SYNC_START"
ASSET_SYNC_SUCCESS = "ASSET_SYNC_SUCCESS"
ASSET_SYNC_FAILED = "ASSET_SYNC_FAILED"
ASSET_POLL_START = "ASSET_POLL_START"
ASSET_POLL_SUCCESS = "ASSET_POLL_SUCCESS"
ASSET_POLL_FAILED = "ASSET_POLL_FAILED"
ASSET_POLL_TIMEOUT = "ASSET_POLL_TIMEOUT"
ASSET_DELETE_LOCAL = "ASSET_DELETE_LOCAL"
ASSET_DELETE_REMOTE_START = "ASSET_DELETE_REMOTE_START"
ASSET_DELETE_REMOTE_SUCCESS = "ASSET_DELETE_REMOTE_SUCCESS"
ASSET_DELETE_REMOTE_FAILED = "ASSET_DELETE_REMOTE_FAILED"
PROJECT_DELETE_REMOTE_START = "PROJECT_DELETE_REMOTE_START"
PROJECT_DELETE_REMOTE_SUCCESS = "PROJECT_DELETE_REMOTE_SUCCESS"
PROJECT_DELETE_REMOTE_FAILED = "PROJECT_DELETE_REMOTE_FAILED"
TASK_DISPATCH_SUCCESS = "TASK_DISPATCH_SUCCESS"
TASK_DISPATCH_FAILED = "TASK_DISPATCH_FAILED"
SYNC_DUE_ASSETS_START = "SYNC_DUE_ASSETS_START"
SYNC_DUE_ASSETS_DONE = "SYNC_DUE_ASSETS_DONE"
SYNC_DUE_ASSETS_FAILED = "SYNC_DUE_ASSETS_FAILED"
REMOTE_DELETE_RECOVERY_START = "REMOTE_DELETE_RECOVERY_START"
REMOTE_DELETE_RECOVERY_DONE = "REMOTE_DELETE_RECOVERY_DONE"
REMOTE_DELETE_RECOVERY_FAILED = "REMOTE_DELETE_RECOVERY_FAILED"
REFERENCE_RESOLVE_START = "REFERENCE_RESOLVE_START"
REFERENCE_RESOLVE_SUCCESS = "REFERENCE_RESOLVE_SUCCESS"
REFERENCE_RESOLVE_FAILED = "REFERENCE_RESOLVE_FAILED"
ARK_API_CALL_START = "ARK_API_CALL_START"
ARK_API_CALL_SUCCESS = "ARK_API_CALL_SUCCESS"
ARK_API_CALL_FAILED = "ARK_API_CALL_FAILED"
ARK_API_RATE_LIMIT_WAIT = "ARK_API_RATE_LIMIT_WAIT"
ARK_API_RATE_LIMIT_REJECT = "ARK_API_RATE_LIMIT_REJECT"