From e645fc2483baa29136bfbbbe6e0fedf81c1c6d62 Mon Sep 17 00:00:00 2001 From: cfdaily Date: Mon, 18 May 2026 11:35:05 +0800 Subject: [PATCH] auto-sync: 2026-05-18 11:35:05 --- src/blackboard/models.py | 54 ++++++---------------------------------- 1 file changed, 7 insertions(+), 47 deletions(-) diff --git a/src/blackboard/models.py b/src/blackboard/models.py index 70325b2..c05acbb 100644 --- a/src/blackboard/models.py +++ b/src/blackboard/models.py @@ -30,13 +30,13 @@ 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) - # v2.7 三级层次结构 - card_id: Optional[str] = None # 所属 Card - stage: Optional[str] = None # 所属 Stage(Card 内的进度标签) + # v2.6.1 路由扩展字段 + current_agent: Optional[str] = None + previous_agent: Optional[str] = None + next_capability: Optional[str] = None + # v2.7 SubTask 层 + stage: Optional[str] = None # 所属 Stage 标签 + stages_json: str = "[]" # 动态 Stage 定义(仅顶层 Task) @classmethod def from_row(cls, row: Any) -> Task: @@ -51,7 +51,6 @@ class Comment: comment_type: str = "general" body: str = "" mentions: Optional[str] = None # JSON array string - card_id: Optional[str] = None created_at: Optional[str] = None @classmethod @@ -70,7 +69,6 @@ class Output: summary: Optional[str] = None metadata: Optional[str] = None # JSON attempt_number: int = 1 - card_id: Optional[str] = None created_at: Optional[str] = None @classmethod @@ -116,7 +114,6 @@ class Event: agent: Optional[str] = None event_type: str = "" detail: Optional[str] = None # JSON - card_id: Optional[str] = None created_at: Optional[str] = None @classmethod @@ -138,7 +135,6 @@ class Review: consensus_reached: bool = False summary: str = "" detail_path: Optional[str] = None - card_id: Optional[str] = None created_at: Optional[str] = None @classmethod @@ -173,39 +169,3 @@ class Experience: d = {k: row[k] for k in row.keys()} d.pop("tags", None) # tags queried separately return cls(**d) - - -# ====================================================================== -# v2.7 Card 模型 -# ====================================================================== - -CARD_VALID_STATUSES = frozenset({ - "active", "pending", "working", "review", - "done", "failed", "blocked", - "cancelled", "archived", "deleted", -}) - -CARD_MANUAL_STATUSES = frozenset({"cancelled", "archived", "deleted"}) - -CARD_TYPE_SET = frozenset({ - "default", "strategy", "data_pipeline", "research", - "platform", "bugfix", "mail", -}) - - -@dataclass -class Card: - id: str - name: str - description: str = "" - card_type: str = "default" - stages_json: str = "[]" # AI 生成的阶段定义 JSON - labels_json: str = "[]" - status: str = "active" # Card 状态(聚合 + 人工操作) - created_at: Optional[str] = None - updated_at: Optional[str] = None - archived_at: Optional[str] = None - - @classmethod - def from_row(cls, row: Any) -> Card: - return cls(**{k: row[k] for k in row.keys()})