开发机迁移
This commit is contained in:
@@ -39,6 +39,61 @@ class RunJobByNameResponse(BaseModel):
|
||||
job_name: str
|
||||
|
||||
|
||||
class EtlCompletedRequest(BaseModel):
|
||||
"""ETL 完成通知请求体。"""
|
||||
pipeline: str = Field(default="api_full", description="完成的 pipeline 名称")
|
||||
site_id: int | None = Field(default=None, description="门店 ID(可选)")
|
||||
|
||||
|
||||
class EtlCompletedResponse(BaseModel):
|
||||
"""ETL 完成编排结果。"""
|
||||
success: bool
|
||||
recall_result: dict | None = None
|
||||
task_gen_result: dict | None = None
|
||||
message: str = ""
|
||||
|
||||
|
||||
@router.post("/etl-completed", response_model=EtlCompletedResponse)
|
||||
async def etl_completed_endpoint(
|
||||
body: EtlCompletedRequest,
|
||||
_token: str = Depends(verify_internal_token),
|
||||
) -> EtlCompletedResponse:
|
||||
"""ETL pipeline 完成后的统一编排入口。
|
||||
|
||||
CHANGE 2026-04-07 | Fix-12:ETL 完成后自动触发。
|
||||
编排顺序:recall_detector.run() → task_generator.run()
|
||||
"""
|
||||
from app.services import recall_detector, task_generator
|
||||
|
||||
recall_result = None
|
||||
task_gen_result = None
|
||||
errors = []
|
||||
|
||||
# Step 1: 先检查召回完成(含回溯)
|
||||
try:
|
||||
recall_result = recall_detector.run()
|
||||
logger.info("ETL 编排 Step1 recall_detector 完成: %s", recall_result)
|
||||
except Exception:
|
||||
logger.exception("ETL 编排 Step1 recall_detector 失败")
|
||||
errors.append("recall_detector failed")
|
||||
|
||||
# Step 2: 再生成新任务
|
||||
try:
|
||||
task_gen_result = task_generator.run()
|
||||
logger.info("ETL 编排 Step2 task_generator 完成: %s", task_gen_result)
|
||||
except Exception:
|
||||
logger.exception("ETL 编排 Step2 task_generator 失败")
|
||||
errors.append("task_generator failed")
|
||||
|
||||
success = len(errors) == 0
|
||||
return EtlCompletedResponse(
|
||||
success=success,
|
||||
recall_result=recall_result,
|
||||
task_gen_result=task_gen_result,
|
||||
message="; ".join(errors) if errors else "ok",
|
||||
)
|
||||
|
||||
|
||||
@router.post("/run-job", response_model=RunJobByNameResponse)
|
||||
async def run_job_by_name_endpoint(
|
||||
body: RunJobByNameRequest,
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
- POST /api/xcx/tasks/{id}/restore — 恢复任务
|
||||
|
||||
所有端点均需 JWT(approved 状态)。
|
||||
回访任务通过提交备注自动完成(note_service),不提供手动完成接口。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -20,6 +21,7 @@ from fastapi import APIRouter, Depends, Query
|
||||
|
||||
from app.auth.dependencies import CurrentUser
|
||||
from app.middleware.permission import require_approved, require_permission
|
||||
|
||||
from app.schemas.xcx_tasks import (
|
||||
AbandonRequest,
|
||||
TaskDetailResponse,
|
||||
|
||||
Reference in New Issue
Block a user