chore(release): v0.25.0 — reviewed_real + twin review-propagation
This commit is contained in:
@@ -8,6 +8,32 @@ All notable changes to seismo-relay are documented here.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## v0.25.0 — 2026-08-25
|
||||||
|
|
||||||
|
**reviewed_real 3-state review flag + twin review-propagation.** The
|
||||||
|
`events` table and the `/db/events` feed now carry `reviewed_real`, a
|
||||||
|
3-state review flag mutually exclusive with `false_trigger`, mirrored from
|
||||||
|
the sidecar review block — plus histogram/waveform twin review-propagation
|
||||||
|
(flagging one flags both, matched by serial + identical PVS + timestamp
|
||||||
|
window).
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **`events` column** `reviewed_real` — `INTEGER NOT NULL DEFAULT 0`, added
|
||||||
|
via the existing incremental `_migrate` ADD COLUMN pass (auto-migrates on
|
||||||
|
`SeismoDb()` construction, no manual migration). `query_events` /
|
||||||
|
`get_event` (and thus `/db/events`) return it automatically (`SELECT *`).
|
||||||
|
- **Mutual exclusivity with `false_trigger`** — setting `reviewed_real=1`
|
||||||
|
clears `false_trigger`, and vice versa, both via `set_false_trigger` /
|
||||||
|
the sidecar review PATCH path.
|
||||||
|
- **`find_twins`** — matches an event's histogram/waveform twins by serial +
|
||||||
|
identical peak-vector-sum + a timestamp window.
|
||||||
|
- **`propagate_review_to_twins`** — copies an event's `false_trigger`/
|
||||||
|
`reviewed_real` state onto its twins, wired into the
|
||||||
|
`PATCH /db/events/{id}/sidecar` review path so flagging one flags both.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## v0.24.0 — 2026-08-22
|
## v0.24.0 — 2026-08-22
|
||||||
|
|
||||||
**Waveform-shape metrics on events.** The `events` table and the `/db/events`
|
**Waveform-shape metrics on events.** The `events` table and the `/db/events`
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "seismo-relay"
|
name = "seismo-relay"
|
||||||
version = "0.24.0"
|
version = "0.25.0"
|
||||||
description = "Python client and REST server for MiniMate Plus seismographs"
|
description = "Python client and REST server for MiniMate Plus seismographs"
|
||||||
requires-python = ">=3.10"
|
requires-python = ">=3.10"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
+1
-1
@@ -90,7 +90,7 @@ app = FastAPI(
|
|||||||
"Implements the minimateplus RS-232 protocol library.\n"
|
"Implements the minimateplus RS-232 protocol library.\n"
|
||||||
"Proxied by terra-view at /api/sfm/*."
|
"Proxied by terra-view at /api/sfm/*."
|
||||||
),
|
),
|
||||||
version="0.24.0",
|
version="0.25.0",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Allow requests from the waveform viewer opened as a local file (file://)
|
# Allow requests from the waveform viewer opened as a local file (file://)
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
import os, sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
|
from sfm.database import SeismoDb
|
||||||
|
from minimateplus.models import Event
|
||||||
|
|
||||||
|
|
||||||
|
def test_query_events_includes_reviewed_real(tmp_path: Path):
|
||||||
|
db = SeismoDb(tmp_path / "s.db")
|
||||||
|
ev = Event(index=0)
|
||||||
|
ev._waveform_key = bytes.fromhex("01110000")
|
||||||
|
db.insert_events([ev], serial="BE1")
|
||||||
|
assert "reviewed_real" in db.query_events(serial="BE1")[0]
|
||||||
Reference in New Issue
Block a user