Vorschlag: Raumflächen (m²) an Räumen, später automatisch aus Revit befüllt #8

Closed
opened 2026-09-26 13:20:39 +02:00 by Grovy311 · 1 comment
Collaborator

Idee

Räume bekommen eine Fläche in m². Sie wird zunächst von Hand gepflegt und soll später automatisch aus Revit kommen. Die Fläche ist die Grundlage für flächenbezogene Werte:

  • Ansätze in W/m² für die grobe Leistungsbilanz in LPH 2/3 (#7)
  • Plausibilitätsprüfung (installierte bzw. gleichzeitige Leistung je m² und Raum/Etage/Gebäude)
  • Massenerfassung (#5) und Raumlisten in der Seitenansicht

Vorschlag Datenmodell (additiv)

  • rooms.area_m2: nullable real, ≥ 0, zwei Nachkommastellen in der Anzeige
  • optional rooms.area_source (manual | revit) und der zuletzt importierte Revit-Wert. So lässt sich ein manueller Wert von einem importierten unterscheiden, und eine Abweichung wird sichtbar statt überschrieben.
  • Bestehende Räume bleiben ohne Fläche (null), eine Pflicht gibt es nicht.

Befehle / Snapshots (nach deinem Muster)

  • project-room.insert/.update/.delete bekommen areaM2 als neue Payload-Version. Version-1-Befehle aus bestehender Historie werden mit areaM2 = null hochgestuft, so wie jetzt bei den Etagen mit buildingId in feature/building-structure.
  • Das Projekt-Snapshot-Schema wird erhöht, ältere Versionen werden mit null hochgestuft. Transfer und Restore enthalten die Fläche.

Revit

Heute liefert der Revit-CSV-Import Geräteobjekte mit Raumnummer und Raumname (ExternalModelObjectSourceValues), aber keine Fläche. Zwei mögliche Wege:

  1. Eigener Raumlisten-Import (Revit-Bauteilliste „Räume“: Ebene, Nummer, Name, Fläche): Er ordnet über den vorhandenen Raumschlüssel bzw. die Raum-Mappings (normalizedSourceRoomKey) zu.
  2. Zusätzliche Spalte „Raumfläche“ in der bestehenden Geräte-CSV (additionalSourceValues): Die Fläche wird je Raumschlüssel übernommen, wenn alle Zeilen eines Raums denselben Wert haben.

In beiden Fällen gilt deine Regel: Vorbelegung nur nach Vorschau und ausdrücklicher Bestätigung. Die Vorschau zeigt Abweichungen zwischen manuellem und Revit-Wert. Das Zahlenformat ist deutsch (23,45 bzw. 23,45 m²), die Einheit wird geprüft.

Oberfläche

  • Raumdialog: Feld „Fläche [m²]“
  • Seite Gebäudestruktur: Fläche je Raum sowie Summen je Etage und Gebäude
  • optional: Leistung je m² in der Verteiler- bzw. Raumauswertung

Fragen an dich

  1. Reicht die Nettogrundfläche aus Revit (Raumparameter „Fläche“), oder brauchen wir verschiedene Flächenarten (NUF/NRF, DIN 277)?
  2. Raumlisten-Import (Weg 1) oder zusätzliche Spalte in der Geräte-CSV (Weg 2)? Hast du dafür in der Revit-Anbindung schon etwas vorgesehen?
  3. Soll ein manuell gesetzter Wert beim Revit-Import geschützt bleiben (nur Hinweis auf Abweichung), oder gewinnt nach Bestätigung immer Revit?

Nur ein Vorschlag, noch nicht umgesetzt.

## Idee Räume bekommen eine **Fläche in m²**. Sie wird zunächst von Hand gepflegt und soll später automatisch aus Revit kommen. Die Fläche ist die Grundlage für flächenbezogene Werte: - Ansätze in W/m² für die grobe Leistungsbilanz in LPH 2/3 (#7) - Plausibilitätsprüfung (installierte bzw. gleichzeitige Leistung je m² und Raum/Etage/Gebäude) - Massenerfassung (#5) und Raumlisten in der Seitenansicht ## Vorschlag Datenmodell (additiv) - `rooms.area_m2`: nullable `real`, ≥ 0, zwei Nachkommastellen in der Anzeige - optional `rooms.area_source` (`manual` | `revit`) und der zuletzt importierte Revit-Wert. So lässt sich ein manueller Wert von einem importierten unterscheiden, und eine Abweichung wird sichtbar statt überschrieben. - Bestehende Räume bleiben ohne Fläche (`null`), eine Pflicht gibt es nicht. ## Befehle / Snapshots (nach deinem Muster) - `project-room.insert/.update/.delete` bekommen `areaM2` als neue Payload-Version. Version-1-Befehle aus bestehender Historie werden mit `areaM2 = null` hochgestuft, so wie jetzt bei den Etagen mit `buildingId` in `feature/building-structure`. - Das Projekt-Snapshot-Schema wird erhöht, ältere Versionen werden mit `null` hochgestuft. Transfer und Restore enthalten die Fläche. ## Revit Heute liefert der Revit-CSV-Import Geräteobjekte mit Raumnummer und Raumname (`ExternalModelObjectSourceValues`), aber keine Fläche. Zwei mögliche Wege: 1. **Eigener Raumlisten-Import** (Revit-Bauteilliste „Räume“: Ebene, Nummer, Name, Fläche): Er ordnet über den vorhandenen Raumschlüssel bzw. die Raum-Mappings (`normalizedSourceRoomKey`) zu. 2. **Zusätzliche Spalte „Raumfläche“** in der bestehenden Geräte-CSV (`additionalSourceValues`): Die Fläche wird je Raumschlüssel übernommen, wenn alle Zeilen eines Raums denselben Wert haben. In beiden Fällen gilt deine Regel: Vorbelegung nur nach **Vorschau und ausdrücklicher Bestätigung**. Die Vorschau zeigt Abweichungen zwischen manuellem und Revit-Wert. Das Zahlenformat ist deutsch (`23,45` bzw. `23,45 m²`), die Einheit wird geprüft. ## Oberfläche - Raumdialog: Feld „Fläche [m²]“ - Seite Gebäudestruktur: Fläche je Raum sowie Summen je Etage und Gebäude - optional: Leistung je m² in der Verteiler- bzw. Raumauswertung ## Fragen an dich 1. Reicht die Nettogrundfläche aus Revit (Raumparameter „Fläche“), oder brauchen wir verschiedene Flächenarten (NUF/NRF, DIN 277)? 2. Raumlisten-Import (Weg 1) oder zusätzliche Spalte in der Geräte-CSV (Weg 2)? Hast du dafür in der Revit-Anbindung schon etwas vorgesehen? 3. Soll ein manuell gesetzter Wert beim Revit-Import geschützt bleiben (nur Hinweis auf Abweichung), oder gewinnt nach Bestätigung immer Revit? Nur ein Vorschlag, noch nicht umgesetzt.
Owner

Umgesetzt mit Commit dce31ee.

Umsetzung:

  • Optionales Feld rooms.area_m2 für die manuell gepflegte Netto-Raumfläche; bestehende Räume bleiben bei null.
  • Raumdialog mit deutscher Komma-Eingabe, Validierung auf endliche Werte ≥ 0 und Anzeige mit zwei Nachkommastellen.
  • Gebäudestruktur zeigt die Fläche je Raum sowie Summen und die Anzahl fehlender Flächen je Etage/Gebäude, einschließlich „Ohne Etage“ und „Ohne Gebäude“. Fehlende Werte werden separat gezählt.
  • project-room.insert/.update/.delete verwenden Command-Version 2. Gespeicherte Version-1-Befehle werden mit areaM2 = null hochgestuft; der exakte Datensatzvergleich verhindert, dass ältere Updates oder Deletes eine neuere Fläche still überschreiben.
  • Snapshot-Schema 8 erhält rooms[].areaM2; Versionen 1–7 werden mit null hochgestuft. Restore, Export und Duplizieren erhalten die Fläche.
  • Migration 0011 enthält ausschließlich ALTER TABLE rooms ADD area_m2 real. Vor dem Einspielen in eine bestehende Datenbank ist wie dokumentiert ein Backup erforderlich.
  • Dokumentation in AGENTS.md, building-structure.md, circuit-list-editor-api.md und current-architecture.md aktualisiert.

Geprüfte Entscheidungen/Abweichungen:

  • Das portable Transferformat bleibt Version 2, weil es den versionierten Projektsnapshot bereits einbettet. Eine neue äußere Formatversion ist nicht erforderlich.
  • Werte werden ohne fachliche Rundung gespeichert; nur die Anzeige verwendet zwei Nachkommastellen.
  • Kein Revit-Import und keine Quellwert-Spalten am Raum. Ein späterer Abgleich bleibt Teil der zurückgestellten Linear-CSV-/Phase-14-Arbeit mit Vorschau und Bestätigung.
  • Keine W/m²-Auswertung und keine Übernahme in Flächenlasten; das bleibt Folgethema in #20.

Validierung:

  • 528 Tests erfolgreich, darunter Migration auf befüllter Alt-Datenbank, Commands v1/v2 mit Undo/Redo, Snapshot-Upgrade 7→8, Transfer/Duplizieren, Eingabevalidierung und Summen.
  • API-Build, Next.js-Produktionsbuild und beide TypeScript-Prüfungen erfolgreich.
Umgesetzt mit Commit [dce31ee](https://git.jappel.io/jappel/leistungsbilanz-ts/commit/dce31ee). Umsetzung: - Optionales Feld `rooms.area_m2` für die manuell gepflegte Netto-Raumfläche; bestehende Räume bleiben bei `null`. - Raumdialog mit deutscher Komma-Eingabe, Validierung auf endliche Werte ≥ 0 und Anzeige mit zwei Nachkommastellen. - Gebäudestruktur zeigt die Fläche je Raum sowie Summen und die Anzahl fehlender Flächen je Etage/Gebäude, einschließlich „Ohne Etage“ und „Ohne Gebäude“. Fehlende Werte werden separat gezählt. - `project-room.insert/.update/.delete` verwenden Command-Version 2. Gespeicherte Version-1-Befehle werden mit `areaM2 = null` hochgestuft; der exakte Datensatzvergleich verhindert, dass ältere Updates oder Deletes eine neuere Fläche still überschreiben. - Snapshot-Schema 8 erhält `rooms[].areaM2`; Versionen 1–7 werden mit `null` hochgestuft. Restore, Export und Duplizieren erhalten die Fläche. - Migration 0011 enthält ausschließlich `ALTER TABLE rooms ADD area_m2 real`. Vor dem Einspielen in eine bestehende Datenbank ist wie dokumentiert ein Backup erforderlich. - Dokumentation in AGENTS.md, building-structure.md, circuit-list-editor-api.md und current-architecture.md aktualisiert. Geprüfte Entscheidungen/Abweichungen: - Das portable Transferformat bleibt Version 2, weil es den versionierten Projektsnapshot bereits einbettet. Eine neue äußere Formatversion ist nicht erforderlich. - Werte werden ohne fachliche Rundung gespeichert; nur die Anzeige verwendet zwei Nachkommastellen. - Kein Revit-Import und keine Quellwert-Spalten am Raum. Ein späterer Abgleich bleibt Teil der zurückgestellten Linear-CSV-/Phase-14-Arbeit mit Vorschau und Bestätigung. - Keine W/m²-Auswertung und keine Übernahme in Flächenlasten; das bleibt Folgethema in #20. Validierung: - 528 Tests erfolgreich, darunter Migration auf befüllter Alt-Datenbank, Commands v1/v2 mit Undo/Redo, Snapshot-Upgrade 7→8, Transfer/Duplizieren, Eingabevalidierung und Summen. - API-Build, Next.js-Produktionsbuild und beide TypeScript-Prüfungen erfolgreich.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: jappel/leistungsbilanz-ts#8
No description provided.