From aadd2e621f73b77231f777fc7f37da597a532ec8 Mon Sep 17 00:00:00 2001 From: cfdaily Date: Sun, 17 May 2026 21:14:40 +0800 Subject: [PATCH] auto-sync: 2026-05-17 21:14:40 --- src/blackboard/db.py | 23 +++++++++++++++++++++++ src/blackboard/models.py | 4 ++++ 2 files changed, 27 insertions(+) diff --git a/src/blackboard/db.py b/src/blackboard/db.py index f5b9c8d..6155f7d 100644 --- a/src/blackboard/db.py +++ b/src/blackboard/db.py @@ -260,4 +260,27 @@ _SCHEMA_STATEMENTS = [ PRIMARY KEY (experience_id, tag) )""", "CREATE INDEX IF NOT EXISTS idx_exptags_tag ON experience_tags(tag)", + + # routing_decisions — 路由审计日志(v2.6.1) + """CREATE TABLE IF NOT EXISTS routing_decisions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + task_id TEXT NOT NULL REFERENCES tasks(id), + from_status TEXT, + to_status TEXT, + mode TEXT NOT NULL CHECK (mode IN ('deterministic','agent_handoff','llm_route','fallback')), + selected_agent TEXT NOT NULL, + previous_agent TEXT, + reason TEXT, + confidence REAL, + model TEXT, + latency_ms INTEGER, + task_type TEXT, + requested_capability TEXT, + outcome TEXT, + detail TEXT, + created_at TEXT NOT NULL DEFAULT (datetime('now')) + )""", + "CREATE INDEX IF NOT EXISTS idx_routing_task ON routing_decisions(task_id)", + "CREATE INDEX IF NOT EXISTS idx_routing_mode ON routing_decisions(mode)", + "CREATE INDEX IF NOT EXISTS idx_routing_time ON routing_decisions(created_at)", ] diff --git a/src/blackboard/models.py b/src/blackboard/models.py index f8b47f3..8757ffb 100644 --- a/src/blackboard/models.py +++ b/src/blackboard/models.py @@ -30,6 +30,10 @@ class Task: risk_level: str = "standard" estimated_duration_minutes: Optional[int] = None escalated: bool = False + # v2.6.1 路由扩展字段(司马懿 BUG-1:不改 assignee 语义) + current_agent: Optional[str] = None # 当前阶段执行者(随状态流转更新) + previous_agent: Optional[str] = None # 前一阶段执行者(审计追溯) + next_capability: Optional[str] = None # Agent 声明的下一步需要的能力(Mode B) @classmethod def from_row(cls, row: Any) -> Task: