Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

feat(co-messung): bis zu 6 frei benennbare Gase/Schadstoffe statt nur CO

Abierto
#410 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
csharp, sqlite

Línea de trabajo

Start with the listed entry points: Domain/CoMeasurement and Incident.cs, then trace persistence, Sync, CoMessprotokollViewModel.cs, CoMessprotokollView.axaml, and Documents/Sections/CoMessprotokollSection.cs. Review issue #403 for threshold configuration and #404 for PDF layout constraints before deciding the design. Done means multi-gas values, units, colors, sync, PDF output, and loading legacy CO data are handled; the issue also leaves key design choices open.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

Heute

Das CO-Messprotokoll kennt genau einen Messwert je Wohnung: Dwelling.CoValue, ein int? in ppm.

// src/LageBuch.Domain/CoMeasurement/Dwelling.cs
public int? CoValue { get; private init; }
public Dwelling WithCoValue(int? coValue) => this with { CoValue = coValue };

Die Trupps gehen aber mit Mehrgasmessgeräten ins Objekt. Ein Warngerät zeigt neben CO regelmäßig noch CO₂, H₂S, CH₄ (%UEG) und O₂ an, bei Sonderlagen auch etwas ganz anderes (Propan, Ammoniak, ein Messröhrchen-Ergebnis). Alles außer CO landet heute bestenfalls im ETB-Freitext und taucht in der Messprotokoll-Matrix und im Bericht überhaupt nicht auf — genau dort, wo der Einsatzleiter hinschaut.

Vorschlag

Bis zu 6 Gase/Schadstoffe, je Einsatz als Freitext benannt.

Der Einsatz definiert einmal eine Liste von maximal 6 Gas-Slots mit frei eingebbarem Namen (Vorbelegung: CO). Jede Wohnung erfasst dann einen Wert je Slot — die Slots sind die Spalten der Matrix und des Berichts:

Einsatz: Gase = [CO] [CO2] [H2S] [CH4] [ ] [ ]

Haus A, 2. OG
  Whg. 1   CO 120 ppm   CO2 —   H2S 3 ppm   CH4 —
  Whg. 2   CO  15 ppm   CO2 —   H2S —       CH4 12 %UEG

Bewusst nicht je Wohnung frei benannt: eine gemeinsame Spaltenliste ist das, was ein Trupp mit einem Gerät tatsächlich misst, und nur so bleiben Matrix und PDF eine feste Spaltenmenge statt einer Liste heterogener Namen je Zelle.

Wert + Einheit statt nur ppm. %UEG und Vol-% sind das, was das Gerät für CH₄ und O₂ anzeigt, und 20,9 Vol-% O₂ ist als int-ppm nicht darstellbar. Je Slot also eine kurze Einheit (Freitext, Vorschlagsliste ppm / %UEG / Vol-% / mg/m³) und ein Wert, der Nachkommastellen zulässt.

Farbbänder: mitgelieferte Schwellen je bekanntem Gas. CO behält seine Bänder unverändert (30/200/800 ppm, CoSeverityClassifier). Für die gängigen weiteren Gase werden Default-Schwellen ausgeliefert und über den eingegebenen Namen (normalisiert, CO2/CO₂/Kohlendioxid) zugeordnet; ein Name ohne Treffer wird ohne Farbe dargestellt, nie mit falscher.

Damit erbt dieses Feature die Frage aus #403 (Schwellen sind am deutschen AGW aufgehängt) — Konsequenz: die neuen Schwellen gehören von Anfang an in dieselbe Struktur, die #403 konfigurierbar machen will, und nicht in weitere const int-Felder.

Betroffene Stellen

Ebene Was
Domain/CoMeasurement Gas-Slot-Definition am Einsatz; Dwelling.CoValue → Messwerte je Slot; CoSeverityClassifier nimmt Gas + Einheit statt nur ppm
Domain/Incident.cs RecordCoValue (≈ Zeile 991) bekommt den Slot als Parameter; ETB-Eintrag nennt das Gas
Persistence Migration ab CurrentVersion = 21: Slot-Tabelle je Einsatz + Messwerte je Wohnung/Slot; co_dwellings.co_value bleibt lesbar und wandert beim Laden in Slot 1
Sync RecordCoValueCommand + DwellingDto/IncidentSnapshot um den Slot erweitern; Slot-Liste gehört in den Snapshot, sonst sieht ein beigetretenes Gerät nur Werte ohne Spaltennamen
AppLogic/ViewModels/CoMessprotokollViewModel.cs Editor und Zell-VM je Slot statt eines CoValue; CoDisplay/CoCompact/IsCoElevated… werden Slot-bezogen
App.Shared/Views/CoMessprotokollView.axaml CoValueInput (NumericUpDown, Max 9999) → bis zu 6 Eingaben; Zellen-Kompaktdarstellung muss mit 6 Werten noch lesbar bleiben
Documents/Sections/CoMessprotokollSection.cs Spalten je Gas im PDF; bei 6 Gasen wird A4 hochkant eng (siehe #404)
docs/master-data.example.json falls die Gas-Vorbelegung in die Stammdaten wandert

Kompatibilität

Ein vor diesem Feature gespeicherter Einsatz hat genau ein Gas: CO, Einheit ppm, mit den heutigen Bändern. Das muss beim Laden ohne Rückfrage so herauskommen — co_value darf nicht verloren gehen und nicht plötzlich als „Slot 1 unbenannt" erscheinen. Ein Vorwärts-Kompat-Test analog zu den bestehenden gehört dazu.

Offene Punkte

  • Ist 6 die richtige Obergrenze, oder soll die Zahl weich sein und nur die Darstellung begrenzen?
  • Darstellung in der Matrix bei 6 Gasen: alle Werte in der Zelle, oder nur das „schlimmste" Gas farbig und der Rest im Detail-Editor?
  • Sollen die Gas-Slots aus den Stammdaten vorbelegt werden (jede Wehr misst immer dasselbe) statt je Einsatz neu eingegeben zu werden?
Lenguaje dominante
C#
Estrellas
1
Forks
3
Merge medio
4 h 49 min
PR fusionados (30 d)
177

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de CodeForFire/lagebuch

Todos los issues de CodeForFire/lagebuch

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.