feat(co-messung): bis zu 6 frei benennbare Gase/Schadstoffe statt nur CO
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
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
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
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de CodeForFire/lagebuch
-
Stammdaten: in the Checkliste editor the PFLICHT header is not aligned with its columnPosiblemente ocupada @Saad-elnagar la tomó hoy. Abiertobug ux
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
CodeForFire/lagebuch#714 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Stammdaten: on a phone the Fahrzeuge editor squeezes Wache and Funkrufname to nothingPosiblemente ocupada @Saad-elnagar la tomó hace 1 día. Abiertobug ux
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
CodeForFire/lagebuch#713 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
CodeForFire/lagebuch#405 ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
CodeForFire/lagebuch#349 ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
CodeForFire/lagebuch#348 ·
Los mantenedores suelen responder en 1 día
Todos los issues de CodeForFire/lagebuch
Issues similares
-
area: client bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug mcp misleading small
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
Bug Platform: Android
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
getsentry/sentry-dotnet#5764 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/SimpleL7Proxy#287 ·
Los mantenedores suelen responder en 1 día