auto-sync: 2026-05-18 00:20:37
This commit is contained in:
@@ -169,3 +169,39 @@ 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()})
|
||||
|
||||
Reference in New Issue
Block a user