From 777d7a4bdf06194bce6196efec381e71f7e5dca5 Mon Sep 17 00:00:00 2001 From: cfdaily Date: Mon, 18 May 2026 18:07:44 +0800 Subject: [PATCH] auto-sync: 2026-05-18 18:07:44 --- src/blackboard/models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/blackboard/models.py b/src/blackboard/models.py index b155206..22124d7 100644 --- a/src/blackboard/models.py +++ b/src/blackboard/models.py @@ -145,7 +145,8 @@ class Review: @classmethod def from_row(cls, row: Any) -> Review: - d = {k: row[k] for k in row.keys()} + valid_keys = {f.name for f in cls.__dataclass_fields__.values()} + d = {k: row[k] for k in row.keys() if k in valid_keys} # SQLite stores boolean as 0/1 if "consensus_reached" in d: d["consensus_reached"] = bool(d["consensus_reached"]) @@ -172,6 +173,7 @@ class Experience: @classmethod def from_row(cls, row: Any) -> Experience: - d = {k: row[k] for k in row.keys()} + valid_keys = {f.name for f in cls.__dataclass_fields__.values()} + d = {k: row[k] for k in row.keys() if k in valid_keys} d.pop("tags", None) # tags queried separately return cls(**d)