87 lines
4.6 KiB
Markdown
87 lines
4.6 KiB
Markdown
# Portal: Waermepumpe und Header
|
|
|
|
Stand: 6. Oktober 2026. Entwickelt und getestet, noch nicht live veroeffentlicht.
|
|
|
|
## Aenderung / Pull-Request-Text
|
|
|
|
Der bestehende Katalogeintrag `heat_pump` wird im Lizenzkauf beruecksichtigt.
|
|
Die bestehenden Preise bleiben unveraendert: CHF 20.95 Lizenz und CHF 27.25
|
|
Generator / Ersteinrichtung, jeweils netto. Die Bereitstellung aktiviert nur die
|
|
Verfuegbarkeit des Produkts; sie kauft keine Lizenz und vergibt keine kostenlose
|
|
Berechtigung an eine Anlage.
|
|
|
|
Der Wizard hat einen eigenen Waermepumpenschritt mit SG Ready oder Sperre/Erhoehung,
|
|
zwei Kontakten, Betriebsrueckmeldung und Schutzzeiten. Gespeicherte Konfigurationen,
|
|
Lizenzvorschlag und generiertes Symcon-Paket verwenden das Modul
|
|
`{A31C9274-54F7-4BD2-9804-7AF23E86C4D1}`. Freie Bestandskontingente von
|
|
`consumer_single` werden wie im Manager angerechnet, ohne Doppelbelegung.
|
|
Technische Variablenkennungen duerfen zur Planung noch 0 sein. Das Bootstrap-Skript
|
|
bricht vor Objektveraenderungen ab, wenn die Waermepumpen-Zuordnung unvollstaendig
|
|
ist, das Modul fehlt oder die Rueckmeldung einen unpassenden Typ hat.
|
|
|
|
Dokumentation und Preise stehen als Textlinks rechts im Portalheader und nicht
|
|
mehr in der Seitennavigation. Oeffentliche Links auf der Anmeldeseite bleiben.
|
|
|
|
## Voraussetzungen und Konfliktschutz
|
|
|
|
- Ziel: `/home/agent/services/license` auf `enelix-services`.
|
|
- `portal.patch` zeigt ausschliesslich Aenderungen gegen den gelesenen Live-Stand.
|
|
- `manifest.json` enthaelt SHA-256 vor und nach jeder Quellaenderung.
|
|
- Die weiterentwickelte, nicht veroeffentlichte Wizard-Fassung auf `ubuntu` wird
|
|
nicht durch diesen Live-Patch ersetzt.
|
|
- Keine Aenderung an Symcon-Anlagen, Docker-Compose, Datenbankschema, Geheimnissen,
|
|
Prognosediensten oder fremden Git-Aenderungen. Daniel Haefliger hat Commit und
|
|
Push auf `develop` sowie den Portalneustart ausdruecklich freigegeben.
|
|
|
|
## Tests
|
|
|
|
- 32 Node-Tests: vorhandene Portalregressionen plus acht neue Waermepumpentests.
|
|
- Browserpruefung mit isolierten API-Fixtures: Header bei 1440, 768, 390 und
|
|
320 Pixeln; Wizard konfigurieren, speichern, Lizenzvorschlag und erneut oeffnen.
|
|
- Keine Browserfehler. Kein echter Kauf, keine Live-Lizenzvergabe und keine
|
|
Schaltbefehle an eine Waermepumpe.
|
|
- JavaScript-Syntax und Anwendbarkeit des Patches geprueft. PHP-Syntaxpruefung
|
|
und Symcon-Laufzeittest konnten nicht ausgefuehrt werden: keine native PHP-CLI
|
|
und kein Zugriff auf die Docker-Sockets in dieser Agent-Ausfuehrung.
|
|
- `tests/` enthaelt neue bzw. angepasste Tests. Im Testcheckout in dessen
|
|
vorhandenes `tests/` uebernehmen und `node --test tests/*.test.mjs` ausfuehren.
|
|
- Browserpruefung: `node tests/browser-smoke.mjs` mit installiertem Playwright und
|
|
Chromium; optional `BROWSER_PACKAGE` und `BROWSER_EXECUTABLE` fuer vorhandene
|
|
Testwerkzeuge setzen. API-Antworten stammen ausschliesslich aus Test-Fixtures.
|
|
|
|
## Bereitstellung
|
|
|
|
Der Portalneustart ist vom Auftraggeber freigegeben; dem Serverkonto `agent`
|
|
fehlt jedoch der technische Zugriff auf den Docker-Socket. Ein berechtigter
|
|
Administrator prueft dieses Paket und fuehrt auf dem Diensteserver aus:
|
|
|
|
```sh
|
|
python3 /PFAD/ZUM/PAKET/deploy.py
|
|
```
|
|
|
|
Das Skript verlangt Root, prueft alle Ausgangshashes und Container-Mounts und
|
|
bricht bei Abweichungen ohne Quellaenderung ab. Es sichert die betroffenen Dateien
|
|
und den Katalog, stoppt nur `enelix_license_portal`, schreibt die Quelldateien
|
|
unter Erhalt der Datei-Bind-Mounts und setzt ausschliesslich die Produktfreigabe
|
|
`items.heat_pump.available` auf `true`. Anschliessend startet es den Portalcontainer
|
|
und prueft Healthcheck, Wizardkatalog und ausgelieferte Oberflaeche. Es nimmt keine
|
|
Bestellung vor und laesst alle Produktpreise unveraendert.
|
|
|
|
Das Stoppen/Starten verursacht eine kurze Portalunterbrechung. Backoffice und
|
|
Anlagensteuerungen werden nicht neu gestartet. Vor Ausfuehrung parallele
|
|
Katalogbearbeitungen im Backoffice fuer das Wartungsfenster aussetzen.
|
|
|
|
## Ruecksetzen und Nachkontrolle
|
|
|
|
Bei Fehlern stellt das Skript die gesicherten Quellinhalte wieder her und startet
|
|
den Portalcontainer erneut. Ein nachtraeglich anderweitig veraenderter Katalog
|
|
wird dabei nicht blind ueberschrieben. Sicherungen liegen unter
|
|
`/home/agent/services/license/change-backups/heat-pump-header-<Zeitpunkt>`.
|
|
|
|
Nach erfolgreicher Bereitstellung angemeldet Headerlinks, neue Lizenzzeile,
|
|
Waermepumpenschritt, Speichern und Wiedereroeffnen kontrollieren. Zahlungen nur
|
|
mit einem ausdruecklich freigegebenen Sandbox-Test abschliessen. Das erzeugte
|
|
Symcon-Paket zuerst in einer isolierten IP-Symcon-8-Installation pruefen; das
|
|
Ausfuehren des Pakets kann Kontakte schalten und ist kein Bestandteil dieser
|
|
Portalbereitstellung.
|