Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン
#410 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
csharp, sqlite

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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?
主要言語
C#
スター
1
フォーク
3
平均マージ
4時間 34分
マージ済み PR(30日)
182

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

CodeForFire/lagebuch のほかの issue

CodeForFire/lagebuch の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。