feat(v2): Add pkt_payload to DMs, update watchdog for single container

- Add pkt_payload column to direct_messages table for stable packet
  hash generation and Analyzer URL linking
- Update insert_direct_message() and DeviceManager to store pkt_payload
- Add test for DM pkt_payload storage (43 tests pass)
- Update watchdog to monitor only mc-webui (meshcore-bridge removed)
- USB reset trigger now fires for mc-webui container failures

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
MarekWo
2026-03-01 10:01:43 +01:00
parent df8e2d2218
commit e98acf6afa
5 changed files with 20 additions and 6 deletions
+3 -2
View File
@@ -248,14 +248,15 @@ class Database:
cursor = conn.execute(
"""INSERT INTO direct_messages
(contact_pubkey, direction, content, timestamp, sender_timestamp,
txt_type, snr, path_len, expected_ack, signature, raw_json)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
txt_type, snr, path_len, expected_ack, pkt_payload, signature, raw_json)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
(contact_pubkey, direction, content, timestamp,
kwargs.get('sender_timestamp'),
kwargs.get('txt_type', 0),
kwargs.get('snr'),
kwargs.get('path_len'),
kwargs.get('expected_ack'),
kwargs.get('pkt_payload'),
kwargs.get('signature'),
kwargs.get('raw_json'))
)
+2
View File
@@ -262,6 +262,7 @@ class DeviceManager:
sender_timestamp=data.get('sender_timestamp'),
snr=data.get('snr'),
path_len=data.get('path_len'),
pkt_payload=data.get('pkt_payload'),
raw_json=json.dumps(data, default=str),
)
@@ -454,6 +455,7 @@ class DeviceManager:
content=text,
timestamp=ts,
expected_ack=event_data.get('expected_ack'),
pkt_payload=event_data.get('pkt_payload'),
)
return {
+1
View File
@@ -72,6 +72,7 @@ CREATE TABLE IF NOT EXISTS direct_messages (
snr REAL,
path_len INTEGER,
expected_ack TEXT, -- ACK code for delivery tracking
pkt_payload TEXT, -- raw packet payload for hash/analyzer
signature TEXT, -- dedup signature
raw_json TEXT,
created_at TEXT NOT NULL DEFAULT (datetime('now')),