From a5d5d2d9743e0203e4056e9eb32579a6c7e8377c Mon Sep 17 00:00:00 2001 From: cfdaily Date: Sat, 13 Jun 2026 23:43:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20P0=20token=20=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F=20+=20P1=20fail=5Fcount=20=E9=80=BB=E8=BE=91=E7=AE=80?= =?UTF-8?q?=E5=8C=96=EF=BC=88=E5=A7=9C=E7=BB=B4=20Review=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/daemon/toolchain_handler.py | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/daemon/toolchain_handler.py b/src/daemon/toolchain_handler.py index 65bf8a6..1d1b58e 100644 --- a/src/daemon/toolchain_handler.py +++ b/src/daemon/toolchain_handler.py @@ -7,6 +7,7 @@ from __future__ import annotations import json import logging +import os import urllib.request from pathlib import Path from typing import Dict, List @@ -23,10 +24,7 @@ logger = logging.getLogger("moziplus-v2.handler.toolchain") # --------------------------------------------------------------------------- _GITEA_BASE = "http://192.168.2.154:3000/api/v1" -_GITEA_TOKEN = "a6d596b826f4bfeaf983ef4d25ac25dab95bbc4e" - -# 业务失败连续次数阈值,超过则升级为系统失败 -_BUSINESS_FAIL_THRESHOLD = 3 +_GITEA_TOKEN = os.environ.get("GITEA_TOKEN", "") # action_type → action_hint 映射 _ACTION_HINTS: Dict[str, str] = { @@ -308,22 +306,16 @@ class ToolchainHandler(BaseTaskHandler): ).fetchone() if row and row["must_haves"]: meta = json.loads(row["must_haves"]) - # 统计该 task 的业务失败次数 - fail_count = conn.execute( - "SELECT COUNT(*) FROM events WHERE task_id=? " - "AND event_type='status_change' AND payload LIKE '%failed%'", - (task_id,) - ).fetchone()[0] conn.close() except Exception: - fail_count = 0 + pass action_type = meta.get("action_type", "") context_data = meta.get("context", {}) assignee = meta.get("assignee", "") or meta.get("from", "") # 三分路决策 - route = self._classify_failure(verify, fail_count) + route = self._classify_failure(verify) if route == "business": self._handle_business_failure( @@ -335,14 +327,11 @@ class ToolchainHandler(BaseTaskHandler): self._handle_infrastructure_failure( task_id, agent_id, verify, db_path) - def _classify_failure(self, verify: VerifyResult, fail_count: int) -> str: + def _classify_failure(self, verify: VerifyResult) -> str: """分类失败类型:business / system / infrastructure""" # verify_error 或 DB 不可用 → 基础设施失败 if verify.reason == "verify_error": return "infrastructure" - # 连续业务失败超过阈值 → 升级为系统失败 - if fail_count >= _BUSINESS_FAIL_THRESHOLD: - return "system" # 默认:业务失败 return "business" @@ -450,6 +439,8 @@ class ToolchainHandler(BaseTaskHandler): self, repo: str, pr_number: int, body: str, ) -> bool: """在 PR/Issue 上创建 comment。返回是否成功。""" + if not _GITEA_TOKEN: + return False payload = json.dumps({"body": body}, ensure_ascii=False).encode("utf-8") try: req = urllib.request.Request( @@ -471,6 +462,8 @@ class ToolchainHandler(BaseTaskHandler): assignees: list = None, ) -> bool: """创建 Gitea Issue。返回是否成功。""" + if not _GITEA_TOKEN: + return False data = {"title": title, "body": body} if assignees: data["assignees"] = assignees