1
This commit is contained in:
@@ -52,7 +52,7 @@ def _insert_history(
|
||||
)
|
||||
|
||||
|
||||
def run(payload: dict | None = None) -> dict:
|
||||
def run(payload: dict | None = None, job_id: int | None = None) -> dict:
|
||||
"""
|
||||
召回完成检测主流程。
|
||||
|
||||
@@ -69,6 +69,11 @@ def run(payload: dict | None = None) -> dict:
|
||||
6. 记录 coach_task_history
|
||||
7. 触发 fire_event('recall_completed', {site_id, assistant_id, member_id, service_time})
|
||||
|
||||
参数:
|
||||
payload: 事件载荷(event 触发时由 trigger_scheduler 传入)
|
||||
job_id: 触发器 job ID(由 trigger_scheduler 传入),用于在最终事务中
|
||||
更新 last_run_at,保证 handler 数据变更与 last_run_at 原子提交
|
||||
|
||||
返回: {"completed_count": int}
|
||||
"""
|
||||
completed_count = 0
|
||||
@@ -111,6 +116,17 @@ def run(payload: dict | None = None) -> dict:
|
||||
)
|
||||
conn.rollback()
|
||||
|
||||
# ── 事务安全(T5):handler 成功后更新 last_run_at ──
|
||||
# job_id 由 trigger_scheduler 传入,在 handler 最终事务中更新
|
||||
# handler 异常时此处不会执行(异常向上传播),last_run_at 不变
|
||||
if job_id is not None:
|
||||
from app.services.trigger_scheduler import update_job_last_run_at
|
||||
|
||||
with conn.cursor() as cur:
|
||||
cur.execute("BEGIN")
|
||||
update_job_last_run_at(cur, job_id)
|
||||
conn.commit()
|
||||
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
@@ -193,7 +209,7 @@ def _process_service_record(
|
||||
with conn.cursor() as cur:
|
||||
cur.execute("BEGIN")
|
||||
|
||||
# 查找匹配的 active 任务
|
||||
# 查找匹配的 active 召回类任务(仅完成召回任务,回访/关系构建不在此处理)
|
||||
cur.execute(
|
||||
"""
|
||||
SELECT id, task_type
|
||||
@@ -202,6 +218,7 @@ def _process_service_record(
|
||||
AND assistant_id = %s
|
||||
AND member_id = %s
|
||||
AND status = 'active'
|
||||
AND task_type IN ('high_priority_recall', 'priority_recall')
|
||||
""",
|
||||
(site_id, assistant_id, member_id),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user