Files
video-gen/video-gen-api/app/services/module_generation_log_service.py
T

106 lines
3.0 KiB
Python

from __future__ import annotations
from typing import Any
from app.enums.common import LogEventStatusEnum, LogSourceEnum
from app.services.operation_log_service import (
build_exception_detail,
log_module_generation_event,
)
def log_module_event_file(
*,
module: str,
event_type: str,
project_id: str | None = None,
step_id: str | None = None,
task_id: str | None = None,
user_id: str | None = None,
trace_id: str | None = None,
source: str | None = None,
event_status: str | None = None,
message: str | None = None,
detail: dict[str, Any] | None = None,
error: str | None = None,
) -> None:
log_module_generation_event(
module=module,
event_type=event_type,
project_id=project_id,
step_id=step_id,
task_id=task_id,
user_id=user_id,
trace_id=trace_id,
message=message,
detail=detail,
error=error,
event_status=event_status or (LogEventStatusEnum.FAILED.value if error else LogEventStatusEnum.SUCCESS.value),
source=source or LogSourceEnum.SERVICE.value,
)
def log_module_prompt_event(
*,
event_type: str,
project_id: str,
step_id: str,
user_id: str,
module: str,
prompt_type: str,
trace_id: str | None = None,
request: dict[str, Any] | None = None,
response: dict[str, Any] | None = None,
token_usage: dict[str, Any] | None = None,
error: str | None = None,
) -> None:
log_module_generation_event(
module=module,
event_type=event_type,
project_id=project_id,
step_id=step_id,
user_id=user_id,
trace_id=trace_id,
message=f"模块 AI 步骤:{prompt_type}",
detail={
"prompt_type": prompt_type,
"has_request": request is not None,
"has_response": response is not None,
"token_usage": token_usage or {},
},
error=error,
event_status=LogEventStatusEnum.FAILED.value if error else LogEventStatusEnum.SUCCESS.value,
source=LogSourceEnum.SERVICE.value,
)
def log_module_error(
*,
module: str,
event_type: str,
project_id: str | None = None,
step_id: str | None = None,
task_id: str | None = None,
user_id: str | None = None,
trace_id: str | None = None,
source: str | None = None,
message: str | None = None,
detail: dict[str, Any] | None = None,
error: str | None = None,
exc: BaseException | None = None,
) -> None:
log_module_generation_event(
module=module,
event_type=event_type,
project_id=project_id,
step_id=step_id,
task_id=task_id,
user_id=user_id,
trace_id=trace_id,
message=message,
detail=build_exception_detail(exc, detail),
error=error if error is not None else (str(exc) if exc else None),
event_status=LogEventStatusEnum.FAILED.value,
source=source or LogSourceEnum.SERVICE.value,
)