#17 NINA: Schweregradstufen-Konfiguration (Intervall, Kanal, Mesh-Versand je Stufe) #17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
Jeder der vier NINA-Schweregrade (Minor, Moderate, Severe, Extreme) erhält eine eigene Konfiguration für Poll-Intervall, Wiederholungs-Intervall, Kanal und Mesh-Versand-Freigabe. Zusätzlich: Wiederholung abschaltbar (nur Änderungen senden) und vollständiges Versandlog einsehbar im Dashboard.
Neue Config-Struktur (
config/nina.yaml)resend_interval: 0= kein periodischer Wiederholungsversand – es werden ausschliesslich neue oder geaenderte Meldungen gesendet.Wegfallende Felder:
send_to_mesh,poll_interval,resend_interval,channel,min_severity.Logik-Aenderungen in
meshbot/nina.pyPolling
Vier separate Poll-Tasks, je einer pro Schweregrad. Jeder Task filtert beim Verarbeiten nur Meldungen seines Schweregrads. De-Duplikation ueber gemeinsames
_known/_activebleibt erhalten.Resend
Vier separate Resend-Tasks.
resend_interval: 0=> kein Task gestartet => nur Aenderungen werden gesendet.Versandlog
Datenbank
Neue Tabelle
nina_logindatabase.py:Jede Aussendung (neu, geaendert, Wiederholung, Monitor-Only) wird eingetragen.
API-Endpunkt
GET /api/nina/log?limit=100- Liste der letzten Eintraege, neueste zuerst. Zugang: Staff.Frontend: Log-Fenster in
/ninaNeues Panel Versandlog unterhalb der Alerts-Tabelle:
nina_logMigrationsverhalten
Beim Start mit alter
nina.yaml(ohneseverities:):min_severitybestimmt welche Stufensend_to_mesh: truebekommennina.yamlgeschrieben, alte Felder entferntAufgaben
Backend
database.py: Tabellenina_log+insert_nina_log()+get_nina_log(limit)nina.py:DEFAULT_CONFIGaufseverities:-Struktur umstellennina.py:_load()/_save()+ Migrations-Logiknina.py: 4x_poll_loop(severity)+ 4x_resend_loop(severity)nina.py:start()/stop()alle Tasks verwaltennina.py:_send()schreibt jeden Versand innina_log+ WS-Broadcastnina_logwebserver.py:GET /api/nina/log(Staff)Frontend
nina.html: Log-Panel unterhalb der Alerts-Tabellenina.js:loadLog(), Log-Tabelle rendern, WS-Eventnina_logverarbeitennina.js: Konfig-UI als 4-zeilige Tabelle (Stufe / Mesh / Kanal / Poll / Resend)Akzeptanzkriterium
resend_interval: 0=> kein Wiederholungsversand, nur AenderungenSchalter: Bot-Kommandos deaktivieren
Config (
config/config.yaml)Verhalten bei
commands_enabled: false?ping,?nodes, …) werden still ignoriertAufgaben
bot.py: In_handle_command()pruefen obconfig.get("bot.commands_enabled", True)– wenn False, fruehzeitig abbrechenconfig/config.example.yaml: Feldcommands_enabled: truemit Kommentar ergaenzen/config-Seite: Toggle in der Bot-Sektion (webserver.py_api_config_get/updatenimmt das Feld bereits mit durch diebot:-Gruppe)