爆款开头复刻/拆镜复刻追加日志|拆镜复刻追加视频AI分析API

This commit is contained in:
2026-07-07 19:52:12 +08:00
parent 35ffa317e7
commit 2d419b171e
16 changed files with 1153 additions and 91 deletions
+11 -10
View File
@@ -11,6 +11,7 @@ from app.enums.credit_record import CreditRecordBillingScene, CreditRecordOwnerT
from app.enums.shot_replicate import (
ModuleCodeEnum,
ShotAnalysisStatusEnum,
ShotReplicateLogEventEnum,
ShotSegmentAnalysisStatusEnum,
ShotSegmentSourceModeEnum,
ShotSplitStatusEnum,
@@ -113,7 +114,7 @@ async def _run_analyze_original_video(task_set_id: str) -> None:
log_module_event_file(
module=MODULE,
event_type="SHOT_ANALYSIS_STARTED",
event_type=ShotReplicateLogEventEnum.ANALYSIS_STARTED.value,
project_id=task_set_id,
user_id=task_set_user_id,
message="原视频拆镜分析开始",
@@ -121,7 +122,7 @@ async def _run_analyze_original_video(task_set_id: str) -> None:
)
async with async_session() as db:
analyzed = await analyze_video_for_shot_split(db, video_url or "", user_id=task_set_user_id, mode="full_breakdown")
analyzed = await analyze_video_for_shot_split(db, video_url or "", user_id=task_set_user_id, mode="full_breakdown", task_set_id=task_set_id, trace_id=f"shot-task-set-analysis:{task_set_id}")
result = await db.execute(
select(ShotReplicateTaskSet)
.where(ShotReplicateTaskSet.id == task_set_id, ShotReplicateTaskSet.deleted_at.is_(None))
@@ -157,7 +158,7 @@ async def _run_analyze_original_video(task_set_id: str) -> None:
await cleanup_active_if_terminal(db, object_type=OBJECT_SHOT_TASK_SET_ANALYSIS, object_id=task_set_id)
log_module_prompt_event(
event_type="SHOT_ANALYSIS_SUCCESS",
event_type=ShotReplicateLogEventEnum.ANALYSIS_SUCCESS.value,
project_id=task_set_id,
step_id=task_set_id,
user_id=task_set_user_id or "",
@@ -169,7 +170,7 @@ async def _run_analyze_original_video(task_set_id: str) -> None:
)
log_module_event_file(
module=MODULE,
event_type="SHOT_ANALYSIS_SUCCESS",
event_type=ShotReplicateLogEventEnum.ANALYSIS_SUCCESS.value,
project_id=task_set_id,
user_id=task_set_user_id,
message="原视频拆镜分析成功",
@@ -195,7 +196,7 @@ async def _run_analyze_original_video(task_set_id: str) -> None:
await remove_active_task(object_type=OBJECT_SHOT_TASK_SET_ANALYSIS, object_id=task_set_id)
log_module_error(
module=MODULE,
event_type="SHOT_ANALYSIS_FAILED",
event_type=ShotReplicateLogEventEnum.ANALYSIS_FAILED.value,
project_id=task_set_id,
user_id=task_set_user_id,
message="原视频拆镜分析失败",
@@ -241,7 +242,7 @@ async def _run_analyze_custom_segment_video(segment_id: str) -> None:
log_module_event_file(
module=MODULE,
event_type="SHOT_SEGMENT_ANALYSIS_STARTED",
event_type=ShotReplicateLogEventEnum.SEGMENT_ANALYSIS_STARTED.value,
project_id=task_set_id,
step_id=segment_id,
user_id=user_id,
@@ -250,7 +251,7 @@ async def _run_analyze_custom_segment_video(segment_id: str) -> None:
)
async with async_session() as db:
analyzed = await analyze_video_for_shot_split(db, video_url or "", user_id=user_id, mode="summary_only")
analyzed = await analyze_video_for_shot_split(db, video_url or "", user_id=user_id, mode="summary_only", task_set_id=task_set_id, segment_id=segment_id, trace_id=f"shot-segment-analysis:{segment_id}")
result = await db.execute(
select(ShotReplicateSegment)
.where(ShotReplicateSegment.id == segment_id, ShotReplicateSegment.deleted_at.is_(None))
@@ -287,7 +288,7 @@ async def _run_analyze_custom_segment_video(segment_id: str) -> None:
await cleanup_active_if_terminal(db, object_type=OBJECT_SHOT_SEGMENT_ANALYSIS, object_id=segment_id)
log_module_prompt_event(
event_type="SHOT_SEGMENT_ANALYSIS_SUCCESS",
event_type=ShotReplicateLogEventEnum.SEGMENT_ANALYSIS_SUCCESS.value,
project_id=task_set_id,
step_id=segment_id,
user_id=user_id or "",
@@ -299,7 +300,7 @@ async def _run_analyze_custom_segment_video(segment_id: str) -> None:
)
log_module_event_file(
module=MODULE,
event_type="SHOT_SEGMENT_ANALYSIS_SUCCESS",
event_type=ShotReplicateLogEventEnum.SEGMENT_ANALYSIS_SUCCESS.value,
project_id=task_set_id,
step_id=segment_id,
user_id=user_id,
@@ -326,7 +327,7 @@ async def _run_analyze_custom_segment_video(segment_id: str) -> None:
await remove_active_task(object_type=OBJECT_SHOT_SEGMENT_ANALYSIS, object_id=segment_id)
log_module_error(
module=MODULE,
event_type="SHOT_SEGMENT_ANALYSIS_FAILED",
event_type=ShotReplicateLogEventEnum.SEGMENT_ANALYSIS_FAILED.value,
project_id=task_set_id,
step_id=segment_id,
user_id=user_id,