106 lines
3.0 KiB
Python
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,
|
|
)
|