auto-sync: 2026-06-03 09:04:14

This commit is contained in:
cfdaily
2026-06-03 09:04:14 +08:00
parent 7a2f8187f6
commit 65c3849340
+31 -3
View File
@@ -242,10 +242,38 @@ class Dispatcher:
_dispatcher._rollback_current_agent(_task_db, _task_id, aid)
if _is_review:
# review: 正常完成标 donecrash/error 保持 review 等 ticker 处理
if _task_db and outcome in ("completed", "session_revived"):
_dispatcher._mark_task_status(_task_db, _task_id, "done")
logger.info("Task %s: review complete (%s), marking done", _task_id, outcome)
# #09: 读 verdict 决定后续动作
conn = get_connection(_task_db)
try:
review = conn.execute(
"SELECT verdict FROM reviews WHERE task_id=? ORDER BY created_at DESC LIMIT 1",
(_task_id,)
).fetchone()
finally:
conn.close()
if review and review["verdict"] == "approved":
_dispatcher._mark_task_status(_task_db, _task_id, "done")
logger.info("Task %s: review approved, marking done", _task_id)
else:
# 非 approved → @mention 被审 agentassignee,非 current_agent
verdict_str = review["verdict"] if review else "未知"
conn2 = get_connection(_task_db)
try:
task_row = conn2.execute("SELECT assignee FROM tasks WHERE id=?", (_task_id,)).fetchone()
finally:
conn2.close()
if task_row and task_row["assignee"]:
from src.blackboard.blackboard import Blackboard
bb = Blackboard(_task_db)
bb.add_comment(_task_id, "daemon",
f"@{task_row['assignee']} 审查结论: {verdict_str},请查看详情并决定接受或反驳",
comment_type="review")
logger.info("Task %s: review verdict=%s, notified assignee=%s",
_task_id, verdict_str, task_row["assignee"] if task_row else "?")
# 不标 done,保持 review 状态
else:
logger.warning("Task %s: review agent %s (%s), NOT marking done", _task_id, aid, outcome)
else: