diff --git a/src/daemon/ticker.py b/src/daemon/ticker.py index 83fc5ee..f4eaf4b 100644 --- a/src/daemon/ticker.py +++ b/src/daemon/ticker.py @@ -1456,11 +1456,20 @@ Parent Task ID: {parent_task.id} init_db(db_path) self._initialized_dbs.add(db_key) - recovered, noop_count = self._recover_project(db_path, NON_TERMINAL) - if recovered: - recovery_report["projects"][project_id] = recovered - recovery_report["total_recovered"] += len(recovered) - recovery_report["total_noop"] += noop_count + # #06: 临时设置 _current_project_id,确保 _transition_status + # 对 _mail 项目不清空 assignee(L839 特殊分支依赖此字段) + old_pid = self._current_project_id + self._current_project_id = project_id + try: + recovered, noop_count = self._recover_project(db_path, NON_TERMINAL) + if recovered: + recovery_report["projects"][project_id] = recovered + recovery_report["total_recovered"] += len(recovered) + recovery_report["total_noop"] += noop_count + except Exception: + logger.exception("Startup recovery failed for project %s", project_id) + finally: + self._current_project_id = old_pid if recovery_report["total_recovered"] > 0: logger.info("Startup recovery: %d tasks recovered across %d projects",