feat(review): propagate false_trigger/reviewed_real to twins on sidecar PATCH

This commit is contained in:
2026-08-25 00:42:27 +00:00
parent 5ffa92ab87
commit 7aae0208f8
3 changed files with 60 additions and 0 deletions
+20
View File
@@ -631,6 +631,26 @@ class SeismoDb:
).fetchall()
return [dict(r) for r in rows]
def propagate_review_to_twins(self, event_id: str, *, window_seconds: int = 300) -> list[str]:
"""
Copy this event's `false_trigger`/`reviewed_real` columns onto each
of its histogram/waveform twins (see `find_twins`), so flagging one
twin flags both. Returns the list of twin ids updated.
"""
row = self.get_event(event_id)
if not row:
return []
ft = 1 if row.get("false_trigger") else 0
real = 1 if row.get("reviewed_real") else 0
twins = self.find_twins(event_id, window_seconds=window_seconds)
moved = []
with self._connect() as conn:
for tw in twins:
conn.execute("UPDATE events SET false_trigger=?, reviewed_real=? WHERE id=?",
(ft, real, tw["id"]))
moved.append(tw["id"])
return moved
def set_false_trigger(self, event_id: str, value: bool) -> bool:
"""Set or clear the false_trigger flag on an event. Returns True if found."""
with self._connect() as conn:
+7
View File
@@ -2481,6 +2481,13 @@ def db_event_sidecar_patch(event_id: str, body: SidecarPatchBody) -> dict:
if body.review is not None:
_get_db().update_event_review(event_id, new_sidecar.get("review", {}))
# Propagate the review to the event's histogram/waveform twin(s) so
# flagging one flags both (column-level; twins share serial+PVS+near time).
try:
_get_db().propagate_review_to_twins(event_id)
except Exception as exc:
log.warning("twin review-propagation failed for %s: %s", event_id, exc)
return new_sidecar