added refference point

This commit is contained in:
2026-06-25 11:27:10 +03:00
parent b5258b4f82
commit 157e1484d3
11 changed files with 42 additions and 83 deletions
Binary file not shown.
Binary file not shown.
-3
View File
@@ -191,9 +191,6 @@ def apply_migrations(conn: sqlite3.Connection) -> list[str]:
rssi REAL,
role TEXT,
meta TEXT,
preset_id TEXT,
preset_name TEXT,
params_json TEXT,
FOREIGN KEY (session_id) REFERENCES reference_point_sessions(id)
);
CREATE INDEX IF NOT EXISTS idx_reference_samples_session_ts
+4 -32
View File
@@ -554,28 +554,9 @@ def _metric_stats(values: list[float]) -> dict[str, Any]:
def _reference_stats(samples: list[dict[str, Any]]) -> dict[str, Any]:
per = [_metric_from_meta(s.get("meta"), "per_percent") for s in samples]
quality = [_metric_from_meta(s.get("meta"), "rx_quality_percent") for s in samples]
by_preset: dict[str, dict[str, list[float]]] = {}
for sample in samples:
key = sample.get("preset_id") or sample.get("preset_name") or "none"
bucket = by_preset.setdefault(
str(key), {"per_percent": [], "rx_quality_percent": []}
)
per_v = _metric_from_meta(sample.get("meta"), "per_percent")
q_v = _metric_from_meta(sample.get("meta"), "rx_quality_percent")
if per_v is not None:
bucket["per_percent"].append(per_v)
if q_v is not None:
bucket["rx_quality_percent"].append(q_v)
return {
"per_percent": _metric_stats([v for v in per if v is not None]),
"rx_quality_percent": _metric_stats([v for v in quality if v is not None]),
"by_preset": {
key: {
"per_percent": _metric_stats(vals["per_percent"]),
"rx_quality_percent": _metric_stats(vals["rx_quality_percent"]),
}
for key, vals in by_preset.items()
},
}
@@ -633,9 +614,8 @@ def add_reference_point_samples(
conn.execute(
"""
INSERT INTO reference_point_samples
(session_id, ts, lat, lon, rssi, role, meta,
preset_id, preset_name, params_json)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
(session_id, ts, lat, lon, rssi, role, meta)
VALUES (?, ?, ?, ?, ?, ?, ?)
""",
(
session_id,
@@ -645,9 +625,6 @@ def add_reference_point_samples(
sample.get("rssi"),
sample.get("role"),
_json_or_none(sample.get("meta")),
sample.get("preset_id"),
sample.get("preset_name"),
_json_or_none(sample.get("params")),
),
)
added += 1
@@ -722,19 +699,14 @@ def get_reference_point_session(session_id: int) -> dict[str, Any]:
raise ValueError(f"reference point session {session_id} not found")
rows = conn.execute(
"""
SELECT id, session_id, ts, lat, lon, rssi, role, meta,
preset_id, preset_name, params_json
SELECT id, session_id, ts, lat, lon, rssi, role, meta
FROM reference_point_samples
WHERE session_id = ?
ORDER BY ts ASC
""",
(session_id,),
).fetchall()
samples = []
for row in rows:
sample = dict(row)
sample["params"] = _json_load(sample.pop("params_json"))
samples.append(sample)
samples = [dict(row) for row in rows]
result = dict(session)
result["sample_count"] = len(samples)
result["samples"] = samples