This commit is contained in:
2026-07-09 09:10:49 +08:00
parent 2882d37112
commit fec47bf47a
54 changed files with 5985 additions and 992 deletions
@@ -83,6 +83,8 @@ from app.services.module_generation_step_update_service import (
update_module_video_prompt_schema,
)
from app.services.resource_signed_url_service import build_resource_signed_url
from app.enums.upload_resource import UploadResourceModuleEnum, UploadResourceSourceModelEnum
from app.services.upload_resource import release_upload_resources_by_source
from app.services.video_prompt_schema_config_service import fallback_runtime_schema_snapshot, get_runtime_schema_snapshot
from app.utils.id_gen import generate_id
@@ -501,6 +503,9 @@ async def create_hot_opening_project(db: AsyncSession, current_user: User, req:
input_data={
"material_video_url": req.material_video_url,
"material_image_url": req.material_image_url,
"material_video_resource_id": req.material_video_resource_id,
"material_image_resource_id": req.material_image_resource_id,
"material_video_duration_seconds": req.material_video_duration_seconds,
"source_project_name": req.source_project_name,
"target_project_name": req.target_project_name,
"core_content_point": req.core_content_point,
@@ -1506,11 +1511,37 @@ async def mark_hot_opening_step_dispatch_failed(
async def delete_hot_opening_project(db: AsyncSession, *, current_user: User, project_id: str) -> HotOpeningDeleteOut:
project = await _get_project_for_user(db, project_id=project_id, user=current_user, for_update=True)
project_id_snapshot = project.id
deleted_at = _now()
project.deleted_at = deleted_at
await _soft_delete_steps_from_index(db, project=project, start_index=1, deleted_at=deleted_at)
await log_module_event(db, project=project, event_type=ModuleEventTypeEnum.PROJECT_DELETED.value, message="软删除爆款开头复刻项目")
return HotOpeningDeleteOut(message="项目已删除", project_id=project.id, deleted=True)
upload_release = await release_upload_resources_by_source(
db,
source_model=UploadResourceSourceModelEnum.MODULE_GENERATION_PROJECT.value,
source_ids=[project_id_snapshot],
module=UploadResourceModuleEnum.HOT_OPENING_REPLICATE.value,
)
pending_ids = list(upload_release.get("released_resource_ids") or [])
released_size = int(upload_release.get("released_size_bytes") or 0)
upload_resource_released = int(upload_release.get("released") or 0)
await log_module_event(
db,
project=project,
event_type=ModuleEventTypeEnum.PROJECT_DELETED.value,
message="软删除爆款开头复刻项目",
detail={
"upload_resource_release": {k: v for k, v in upload_release.items() if k != "released_resource_ids"},
"pending_delete_resource_count": len(pending_ids),
},
)
return HotOpeningDeleteOut(
message="项目已删除",
project_id=project_id_snapshot,
deleted=True,
released_size_bytes=released_size,
upload_resource_released=upload_resource_released,
pending_delete_resource_ids=pending_ids,
)
def _build_file_url_or_data_uri(file_url: str) -> str:
return _common_build_file_url_or_data_uri(file_url)