← zurück
Releases
Versionsschema: MAJOR.MINOR.PATCH —
MAJOR = Bedienung ändert sich grundlegend, MINOR = neues Feature, PATCH = Bugfix oder interne Änderung.
v2.3.3
18.05.2026, 12:00
Umsatz: Gesamt-Karte zaehlt ab dem dritten Standort wieder mit
- In der Monatsansicht von /umsatz wurde die „Gesamt“-Karte (und die Summenzeile in der Tagestabelle) nur aus den ersten zwei Standorten gebildet — ab dem dritten Standort fehlte dessen Umsatz komplett in der Summe. Jetzt zaehlen alle Standorte des Kontos mit, die Tagestabelle bekommt automatisch eine Spalte je Standort.
v2.3.2
17.05.2026, 11:00
Marktplatz: Stern und Datum ueberlagern sich nicht mehr
- Auf der Marktplatz-Uebersicht lag der Bookmark-Stern bisher uebereinander mit dem Veroeffentlichungsdatum oben rechts auf dem Vorschau-Bild. Beides sitzt jetzt nebeneinander in einer gemeinsamen Zeile, das Datum bekommt einen eigenen Pill-Hintergrund passend zur Handle-Pille.
v2.3.1
16.05.2026, 17:00
Marktplatz: Bilder werden jetzt serverseitig gecached
- Bisher wurde beim Sort-Wechsel im Marktplatz-Grid (z.B. von „Neueste“ auf „Top-Likes“) jedes Vorschau-Bild erneut vom Instagram-CDN geholt — bei 60 Posts ergab das 60 Roundtrips und gefuehlt lange Ladezeiten. Bilder werden jetzt server-seitig auf Disk gepuffert (7 Tage Cache), sodass ein Sort-Wechsel praktisch sofort rendert.
v2.3.0
16.05.2026, 16:30
Kasse: Entnahme-Historie direkt sichtbar, mit Standort + Wochenfarben
- Die Entnahme-Historie auf /kassenentnahme ist nicht mehr hinter einem Tab versteckt, sondern direkt unter dem Kassenstand zu sehen — alle Standorte gemeinsam, gruppiert nach Monat (mit Monatssumme), pro Zeile mit Standortname und Notiz.
- Jede Zeile bekommt links einen farbigen Streifen pro Kalenderwoche (zyklisch durch acht Pastellfarben). So sieht man auf einen Blick, welche Entnahmen zu derselben Woche gehoeren und wo der Monatswechsel liegt. Eine Legende oben zeigt die KW-Nummern.
- Optionaler Standort-Filter im Kopf der Historie — Default ist „Alle Standorte“.
v2.2.3
16.05.2026, 16:00
Falsche deutsche Beschriftungen flaechendeckend korrigiert
- Auf /kassenentnahme stand „Maschine“ statt „Scheine“ — und ueber das ganze Portal hinweg waren noch ca. 180 weitere deutsche Beschriftungen aehnlich vertauscht (z.B. „Wasser“ statt „Kasse“, „Deaktiviert“ statt „aktiviert“). Ursache war ein verschluckter Babel-Catalog-Header, der saemtliche Eintraege als „unbestaetigt“ markierte und dabei mit dem naechstaehnlichen Eintrag verpaart hat. Catalog repariert, alle Eintraege gegen ihren Original-Text validiert.
v2.2.2
16.05.2026, 15:30
Menue „Kasse“ korrigiert
- Der Menue-Eintrag unter Anzeigen, der eigentlich „Kasse“ heisst, wurde versehentlich als „Wasser“ angezeigt — behoben.
v2.2.1
16.05.2026, 15:00
Marktplatz: Kauf-Buttons respektieren Owner-Verkaufsmodus
- Auf der Post-Detail-Seite sind die „Kaufen“- und „Verhandeln“-Buttons nicht mehr sichtbar, wenn der Owner seinen Marktplatz-Verkauf pausiert hat — stattdessen erscheint ein Hinweis-Banner „Verkauf aktuell pausiert“.
- Bei Owner-Modus „Nur Anfrage“ entfaellt der Kauf-Button komplett; bei „Gemischt“ entfaellt er nur fuer das Premium-Paket. Der Verhandeln-Button bleibt sichtbar und ist mit einem Hint „(nur auf Anfrage)“ versehen.
- Zusaetzlich wird auch der Verhandeln-Endpoint serverseitig blockiert, wenn der Owner pausiert ist — Schutz gegen direktes URL-Aufrufen.
v2.2.0
16.05.2026, 14:00
Marktplatz-Admin: Owner-Verkauf-Status im Owner-Mapping
- Auf /admin/marktplatz/mapping zeigt jetzt eine zusaetzliche Spalte „Verkauf aktiv“ pro verifiziertem Owner an, ob sein Marktplatz-Verkauf eingeschaltet ist. Der Schalter laesst sich direkt umlegen und speichert sofort — praktisch, um einen Owner schnell zu (de)aktivieren ohne in dessen Konto wechseln zu muessen.
v2.1.0
16.05.2026, 12:00
Operationen: Kontext-Modal repariert
- Operationen-Uebersicht: Klick auf das kleine Plus neben einem Event oeffnete bisher das Kontext-Fenster „Davor/Danach“ mit Server-Fehler — behoben.
v2.0.0
15.05.2026, 17:00
Marktplatz: Vollausbau Abrechnung, Stripe, SEPA, Owner-Tools
- Lizenz-Marktplatz mit Kommissionaersmodell (§383 HGB / §3 Abs. 11 UStG): Dynkhues GmbH verkauft im eigenen Namen auf Rechnung des Owners. B2B-EU-only, kein Stripe Connect — alle Trx ueber einen einzigen Stripe-Standard-Account mit Stripe Tax.
- Stripe-Integration mit Stripe-Tax (automatic_tax + tax_id_collection + tax_behavior=exclusive). USt-IdNr. wird ueber VIES validiert; Stripe rechnet pro Checkout die korrekte Steuer (19 % DE-Buyer / 0 % Reverse Charge EU). Admin-Seite /admin/marktplatz/stripe-config: Keys testen, in .env eintragen, Webhook per Stripe-API anlegen, App-Restart-Button.
- Owner-Onboarding: Firmendaten + IBAN/BIC + USt-IdNr. kommen aus /admin/einstellungen (CompanyData, Single Source of Truth). /marktplatz/owner/onboarding ergaenzt um Kommissionsvertrag- und Self-Billing-Vollmacht-Akzeptanz und VIES-Re-Check.
- Owner-Verkaufseinstellungen unter /marktplatz/owner/einstellungen: Verkaufsmodus (Festpreis / Nur Anfrage / Mixed), globale Pausierung, Pauschal-Preise (override Portal-Default), Pro-Post-Inline-Edit. Live Info-Panel zeigt fuer jeden Preis: was der Buyer zahlt, wie viel Provision das Portal einbehaelt, was netto beim Owner bleibt.
- Buyer-Onboarding: Rechnungsadresse + EU-USt-IdNr. (Dropdown der 27 EU-Mitgliedstaaten), VIES-validiert, AGB-Akzeptanz. Pflicht vor dem ersten Kauf.
- Bezahlflow: Owner-Accept triggert Stripe-Checkout, Buyer bekommt Bezahl-Link per Mail. Nach Zahlung erzeugt der Post-Payment-Hook automatisch Lizenzvertrag-PDF und Buyer-Rechnung (DE/EN/IT). Premium-Lizenzen: 7-Tage-Upload-Frist fuer Raw-Asset (bis 1 GB), Auto-Refund bei Frist-Verstreichen.
- Monatlicher SEPA-Sammelauszahlungs-Cron am 1. Werktag des Folgemonats: aggregiert alle releasable Owner-Anteile, generiert Self-Billing-Gutschrifts-PDF und SEPA-pain.001-XML zum Upload bei der Sparkasse Hanau. Admin-UI mit Lauf-trigger + Mark-as-paid-Workflow.
- Anfragen-Detail-Seite /marktplatz/anfrage/<id> mit vollstaendigem Counter-Offer-Verlauf (Chat-Thread, Buyer links, Owner rechts), Status-Banner und Aktions-Bar mit Live-Mini-Info „Du bekommst …“.
- Marktplatz-Zugriff steuern: Admin-Modus (admin_only / whitelist / all) und per-User-Toggle auf /admin/marktplatz/zugriffe — zusaetzlich direkt in der Portal-Benutzer-Tabelle auf /admin/users.
- Counter-Offer mit Floor-Pruefung (min. 50 % des Listenpreises), max. 3 Runden, 72 h TTL pro Runde, Auto-Decline via Cron.
- Admin-Tools: Portal-Stammdaten (Dynkhues GmbH), Stripe-Konfiguration, Transaktionen-Liste mit Refund, Payouts-Verwaltung, Marktplatz-Zugriffe, Sub-Navigation auf allen Marktplatz-Seiten (Stoebern / Meine Anfragen / Mein Content).
- Beta-Tester-Whitelist (5 initiale Mails) wird beim ersten Boot automatisch ge-seeded. Aenderbar ueber Admin-UI. Default-Modus ist whitelist — Live-Schaltung erfolgt mit einem Klick auf access_mode='all'.
v1.43.0
14.05.2026, 10:00
Marktplatz: Hashtag-Discovery via Apify (Slice B)
- Neuer Admin-Bereich „Marktplatz“ fuer Bildlizenzen: Discovery von Bloomest-Posts ueber Hashtag-Suche und Seed-Handles, Owner-Mapping, Takedown-Workflow.
- Hashtag-Discovery laeuft jetzt ueber den Apify Instagram-Scraper — kein 24h-Limit, keine 30-Hashtag-pro-Woche-Beschraenkung der Meta Graph API, kein App-Review noetig. Apify-Token wird Fernet-verschluesselt in der DB hinterlegt; eingerichtet im Instagram-Setup-Tab.
- Seed-Handles laufen weiterhin ueber Meta Graph API (business_discovery liefert Bio fuer Email-Scrape). Beide Pfade koexistieren in `run_discovery()`.
v1.42.0
13.05.2026, 18:00
Pump-Log: Multi-Select fuer Maschinen-Filter
- Der Maschine-Filter im Pumpaktivitaeten-Log ist jetzt ein Multi-Select: mehrere Maschinen gleichzeitig anhaken (z.B. alle Large-Maschinen) — das Log zeigt dann nur Doses dieser Maschinen. Klick ausserhalb des Dropdowns schliesst die Liste.
v1.41.0
13.05.2026, 17:30
Dosierung: fehlende Pump-Daten einzelner Dispenser
- Bugfix: Bei intermittierenden HTTP 500 auf der SekoWeb-Detail-Seite blieben einzelne Dispenser ohne group_id im Speicher — der Sync ueberspruengte sie still und es kamen keine Pumpaktivitaeten fuer diese Geraete in der DB an (z.B. zeitweise Dos 2 in Offenbach). Wenn die Seko-API das group_id-HTML nicht ausliefert, wird der Wert jetzt aus der DB nachgeladen, sodass der Sync trotzdem alle Geraete erfasst.
v1.40.0
13.05.2026, 16:30
Dosierung: Geister-Duplikate aus stuendlichen API-Wiederholungen entfernen
- Bugfix: Pumpaktivitaeten-Log und Vergleich zeigten den gleichen Wash-Cycle teilweise 10–12-mal an. Ursache war die SekoWeb-flow_records-API, die denselben Cycle ueber mehrere Stunden hinweg in jedem Poll erneut zurueckliefert — mit jeweils anderem Polling-Zeitstempel, sodass unsere Unique-Constraint nicht griff. Der Sync entfernt jetzt nach jedem Lauf solche Duplikate (gleiche Maschine, gleicher Stoff, gleiche ml + gleiches Programm innerhalb 24h) und behaelt den fruehesten Datensatz.
v1.39.0
13.05.2026, 15:30
Dosierung: Zeitstempel in lokaler Uhrzeit (Europe/Berlin)
- Im Pumpaktivitaeten-Log, bei den Alarmen und beim „zuletzt gesehen“ der Dispenser wurden Zeitstempel bisher in UTC angezeigt — eine Dose um „00:27 nachts“ war tatsachlich 02:27 lokal (Sommerzeit). Alle Zeitangaben sind jetzt in Europe/Berlin.
- Im Hinweis ueber dem Log steht jetzt deutlicher: eine als „02:27“ angezeigte Dose lief zwischen ca. 01:30 und 02:30 — die Seko-API aggregiert Dosen pro Stundenslot, nicht pro Sekunde.
v1.38.0
13.05.2026, 14:30
Dosierung: Pumpaktivitaeten-Log mit Filtern + 500 Eintraege
- Das Log auf der Seite Dosierung zeigt jetzt die letzten 500 Einzeldosierungen (vorher 200) — damit reicht das Sichtfenster mehrere Tage zurueck, auch wenn ein Dispenser sehr viel dosiert.
- Neu: drei Filter-Dropdowns ueber dem Log (Dispenser, Maschine, Stoff) zum gezielten Eingrenzen. Filter laufen direkt im Browser, keine Seite muss neu geladen werden. Rechts steht die Trefferzahl.
v1.37.0
13.05.2026, 13:00
Dosierung: jede Dose wird der konkreten Maschine zugeordnet
- Der Sync liest jetzt den Device-Scope der Seko-Antwort und legt pro Dose den ausloesenden Washer mit ab (z.B. E Large, F Large). Im Pumpaktivitaeten-Log gibt es dadurch eine eigene Spalte Maschine statt nur dem Dispenser.
- Folge fuer den Standort-Vergleich: keine Mix-Zeilen mehr — auch Dispenser mit gemischten Maschinengroessen (z.B. 2x Small + 2x XMedium am gleichen Geraet) werden sauber in S/M/L/PET aufgeteilt.
- Datenmigration: vorhandene flow_records (alte API-Sicht ohne Washer-Bezug) werden geloescht. Ein einmaliger Re-Sync ueber 30 Tage holt die Daten in der neuen Struktur zurueck. Tagesverbrauch und Mengensummen sind davon nicht betroffen.
v1.36.0
13.05.2026, 11:00
Dosierung: Pumpaktivitaeten-Log pro Standort
- Neu auf der Seite Dosierung: ein Log der letzten 200 Einzeldosierungen pro Standort, neueste oben. Pro Zeile Zeitstempel, Dispenser (welcher Geraet die Pumpe ausgeloest hat), Stoff, gepumpte Menge in ml und Programm-Nummer. Hinweis: Seko liefert den Zeitstempel auf Stundenslots gerundet — die Reihenfolge stimmt, der exakte Pumpzeitpunkt innerhalb der Stunde ist nicht praezise.
v1.35.0
13.05.2026, 10:00
Dosierung: „Heute“ zeigt jetzt verlaessliche Tageswerte
- Bugfix: Die Box „Heute (Einzeldosierungen)“ zeigte teilweise Aktivitaet an, obwohl an dem Tag keine Maschine gelaufen war. Ursache: die SekoWeb-API liefert Einzeldosierungen mit einem stuendlichen Polling-Zeitstempel statt dem realen Pumpzeitpunkt — Records werden dadurch beim Tageswechsel auf die naechste UTC-Stunde gestempelt und tauchten faelschlich als „heute“ auf. Die Anzeige baut jetzt auf dem Tagesaggregat der API auf und zeigt pro Chemikalie die heutigen Liter und Pumpenlaufzeit-Minuten. Wenn keine Aktivitaet war, erscheint ein klarer Empty-State.
v1.34.0
13.05.2026, 09:00
Dosierung: Sync-Luecke zwischen Cron und Backfill geschlossen
- Bugfix: In der Tabelle „Tagesverbrauch der letzten 7 Tage“ waren einzelne Tage leer, obwohl der Standort aktiv war. Ursache war eine Luecke zwischen dem regulaeren 30-Min-Sync (deckte nur 2 Tage zurueck) und dem Backfill (begann erst eine Woche in der Vergangenheit). Der Cron-Sync deckt jetzt 7 Tage zurueck ab, der Backfill startet bei „gestern“ — damit ueberlappen sich die Fenster und keine Tage fallen durchs Raster.
v1.33.0
12.05.2026, 23:00
Dosierung: Standort-Vergleich jetzt nach Maschinengroesse aufgeschluesselt
- Der Vergleich auf der Seite Dosierung zeigt jetzt eine eigene Zeile pro Maschinengroessen-Klasse — S (Small), M (Medium/XMedium), L (Large) und PET (PET-Programm). Die Groesse wird aus dem Washer-Namen abgeleitet. Geraete mit gemischten Groessen am selben Dispenser (z.B. Small + XMedium am gleichen Dispenser) sind als „Mix“ gekennzeichnet, damit die Daten nicht verloren gehen, aber sichtbar bleibt, dass keine saubere Zuordnung moeglich ist.
v1.32.0
12.05.2026, 22:30
Dosierung: Standort-Vergleich + Layoutfix der Heute-Kacheln
- Neu auf der Seite Dosierung (Seko): bei mehr als einem Standort erscheint oben ein Vergleich „Durchschnittliche Menge pro Dosierung pro Chemikalie“ ueber die letzten 30 Tage. Die hoechste Menge pro Chemikalie wird hervorgehoben, daneben der relative Unterschied (Δ) zwischen Standorten — so faellt sofort auf, wenn ein Standort beim selben Mittel deutlich mehr pro Dosierung zufuehrt als der andere.
- Layoutfix: Die Kacheln unter „Heute (Einzeldosierungen)“ wurden bei vielen Chemikalien rechts abgeschnitten. Brechen jetzt sauber in mehrere Zeilen um.
v1.31.0
12.05.2026, 22:00
Seko: Verwaiste Dosierer aus alter Konfiguration entfernen
- Bugfix: Wer pre-v1.30 die Anwendung eines bestehenden Seko-Accounts gewechselt hat, hatte danach in der Dosierungs-Uebersicht alle Geraete aus beiden Anwendungen vermischt unter dem ersten Standort stehen. Der Sync entfernt jetzt automatisch Dosierer, die in der aktuell hinterlegten Anwendung nicht mehr enthalten sind — inkl. ihrer Tagesverbraeuche und Flow-Records.
v1.30.0
12.05.2026, 21:00
Seko: Mehrere Standorte pro SekoWeb-Zugang anlegbar
- Bugfix: In den Einstellungen liess sich pro SekoWeb-Installation (Subdomain wie GBL2146SEKO) nur ein Account hinterlegen — beim Speichern eines zweiten Standorts wurde der erste ueberschrieben. Jetzt koennen mehrere Anwendungen (Standorte) unter derselben Installation parallel gespeichert werden.
v1.29.0
12.05.2026, 20:15
Hotfix: Karten-Aufladung fand die Karte nicht
- Bugfix: Beim Aufladen oder Rabatt-Setzen lieferte die Bloomest-API-Suche „Karte in Bloomest-API nicht gefunden“, obwohl die Karte existiert. Grund war ein falscher JSON-Pfad fuer die Kartennummer in der Suche. Funktioniert jetzt.
v1.28.0
12.05.2026, 20:10
Hotfix: Kunden-Seite war leer
- Bugfix: Nach dem v1.27-Update lud die Kunden-Seite gar keine Daten mehr — die neue Beschriftung „Rabatt (%)“ kollidierte mit der Template-Engine. Bezeichnung jetzt „Rabatt in Prozent“.
v1.27.0
12.05.2026, 20:30
Treuekarten: Guthaben aufladen und Rabatt direkt im Portal setzen
- Neu in der Kunden-Detailansicht: zwei Aktions-Felder direkt unter den Stammdaten. „Karte aufladen“ schickt einen Geldbetrag (in €) an die Bloomest-API; die Zahl erscheint sofort als „ausstehend“ im angezeigten Guthaben.
- Wichtig: Aufgeladenes Guthaben wird an der physischen Karte erst aktiv, wenn sie das naechste Mal in einen Kartenleser geschoben wird — das ist eine Eigenheit von Bloomest. Im Portal ist der neue Stand sofort sichtbar und wird automatisch verbucht, sobald die Bewegung an der Karte erfasst wurde (stuendlicher Sync).
- „Rabatt (%)“ setzt den Karten-Rabatt zwischen 0 und 100 %. Wirkt sofort und gilt fuer alle naechsten Buchungen mit dieser Karte.
- Beide Aktionen brauchen die Berechtigung „Karten aufladen“ (in den Gastzugriffen freischaltbar; Owner haben sie automatisch).
v1.26.0
12.05.2026, 19:50
Maschinen: Seite laedt sofort, Umsatz-Refresh laeuft im Hintergrund
- Performance: Die Maschinen-Seite reagiert wieder sofort. Der Live-Refresh des Heute-Umsatzes wartet nicht mehr auf die Bloomest-API (die mitunter 30 s pro Standort braucht), sondern laeuft im Hintergrund. Beim naechsten Seitenaufruf sind die frischen Daten dann da.
- Bei Bloomest-API-Timeouts auf einzelnen Standorten werden die bereits geholten Werte trotzdem gespeichert — nicht mehr alles-oder-nichts. Standorte mit zwischenzeitlichem API-Aussetzer bekommen ihren Wert spaetestens beim naechsten 5-Min-Cron oder Browser-Refresh.
v1.25.0
12.05.2026, 18:40
Hotfix: Umsatzzahl auf Maschinen wurde nicht mehr angezeigt
- Bugfix: Nach dem Live-Refresh-Update in v1.24 konnte die Tagesumsatz-Zahl auf der Maschinen-Seite kurzzeitig leer bleiben. Grund war eine fehlende DB-Spalte fuer den Throttle-Mechanismus. Throttle laeuft jetzt rein im Speicher, der Live-Refresh funktioniert wie vorgesehen.
v1.24.0
12.05.2026, 18:30
Umsatz heute: Live-Refresh beim Aufruf + Cron alle 5 Min
- Beim Aufruf von Maschinen wird der heutige Tagesumsatz pro Standort jetzt live von der Bloomest-API geholt — max. einmal pro Minute pro Nutzer (Throttle). Vorher wartete die Anzeige bis zum naechsten Hintergrund-Sync.
- Der Hintergrund-Sync der Tagesumsaetze laeuft jetzt alle 5 Minuten (vorher: alle 15). Auch ohne Browser-Refresh ist der „Heute“-Wert damit maximal 5 Minuten alt.
- Tipp: Wenn die Zahl mal nicht aktuell scheint, hilft ein Reload der Seite — der Live-Refresh laeuft genau dann.
v1.23.0
12.05.2026, 18:00
Maschinen-Verwaltung: eigene Namen + /analyse zeigt jede Maschine genau einmal
- Bugfix: In Analyse, Abbrueche und Kapazitaet erschien dieselbe Maschine mehrfach, wenn ihr Name oder Standort im Lauf der Zeit umbenannt wurde (z. B. „F“ unter „Waschsalon Offenbach“ und „OF-F-W“ unter „Offenbach Zentrum“). Jede Maschine wird jetzt strukturell ueber ihre Fabrikationsnummer identifiziert und erscheint genau einmal in den Aggregaten — unabhaengig von historischen Namensaenderungen.
- Neu unter Einstellungen → Maschinen koennen Owner pro Maschine einen eigenen Anzeige-Namen vergeben, der den automatisch synchronisierten Namen aus Miele Move bzw. Bloomest ueberschreibt. Wirkt sofort in Analyse, Abbrueche, Kapazitaet und im Zeitstrahl der Maschinen-Uebersicht.
- Optional pro Maschine: Bloomest-LCS-Label und Standort-ID manuell setzen, damit Live-Restzeiten von Miele Move und LCS-Status korrekt zusammenfliessen — auch wenn der automatische Namens-Match nicht eindeutig ist.
- Maschinen koennen ausgeblendet werden (z. B. ausgemusterte Geraete). Ausgeblendete Maschinen verschwinden aus den Aggregaten und der Maschinen-Uebersicht, ihre historischen Daten bleiben erhalten.
v1.19.0
11.05.2026, 15:00
Maschinen: korrekte Restlaufzeiten + optionaler Miele REST-API-Key
- Bugfix: Restlaufzeiten von Waschmaschinen mit Label E, G, R oder T wurden in der Maschinen-Uebersicht nicht angezeigt, obwohl in Miele Move eine Zeit lief. Grund war ein zu lockerer Namens-Match (das Label „E“ traf faelschlich auf das „e“ in „Geraet A“). Match laeuft jetzt ueber Wortgrenzen — alle Maschinen-Labels bekommen die Zeit korrekt zugeordnet.
- Neu unter Einstellungen → Miele Move kann optional ein „X-Api-Key“ aus dem Miele-Move-Profil hinterlegt werden. Wenn gesetzt, werden Live-Restzeiten direkt ueber die offizielle REST-API geholt — schneller und stabiler als der Browser-Login.
- Der Browser-Login (E-Mail + Passwort) bleibt weiterhin noetig fuer den stuendlichen Sync der Programmhistorie und die Fehlercodes — diese sind nur im Service-Bereich verfuegbar, nicht in der REST-API.
v1.18.0
10.05.2026, 15:00
Abbrueche: Fehler-Karten zeigen jetzt jede betroffene Maschine + Drill-Down
- „Aktuelle Fehler pro Maschine“ zeigt jetzt jede Maschine, die im Zeitraum mindestens einen Fehler hatte — auch wenn sie keine abgebrochenen Programme hat. Bisher fielen Maschinen ohne Programmhistorie im Zeitraum aus den Karten heraus.
- F-Codes in der Tabelle „F-Codes im Zeitraum“ sind klickbar: Klick filtert die Liste „Alle Fehler-Ereignisse“ auf den gewaehlten Code und springt zur Liste.
- In der „Maschinen-Übersicht“ sind die Zeilen mit Fehlern klickbar: Klick filtert die Fehler-Liste auf diese Maschine.
- Aktive Filter werden oben als entfernbare Pille angezeigt (z. B. „F4910 ד oder „Geraet J ד).
v1.17.0
10.05.2026, 13:00
Abbrueche & Fehlercodes — Miele-F-Codes mit Klartext im Portal
- Die Seite Analyse → Abbruchanalyse heisst jetzt „Abbrueche & Fehlercodes“. Sie zeigt zusaetzlich zur Abbruchquote auch die F-Codes der Maschinen, jeweils mit Klartext aus dem Miele-Service-Bereich (z. B. „F4910 Fehler Wasserzulauf“, „F4824 Fehler Unwuchtschalter“).
- Neue Sektionen: „Aktuelle Fehler pro Maschine“ als Karten, „F-Codes im Zeitraum“ als Aggregat (welcher Code wie oft auf welchen Maschinen), Maschinen-Tabelle mit zusaetzlicher Spalte „Letzter F-Code“ und eine vollstaendige Fehler-Liste der letzten 200 Ereignisse.
- In der Detail-Tabelle der Abbrueche wird der zeitlich passende F-Code direkt zum Lauf zugeordnet — wenn die Maschine waehrend oder unmittelbar nach dem Abbruch einen Fehler gemeldet hat.
- Datenquelle ist der interne Miele-Service-Endpunkt (max. die letzten 5 Fehler pro Maschine), die im stuendlichen Sync zusammen mit der Programmhistorie geholt und in die Datenbank geschrieben werden.
v1.16.0
10.05.2026, 10:00
Analyse: neue Abbruchanalyse — wer bricht wann welches Programm ab
- Unter Analyse → Abbruchanalyse gibt es eine neue Auswertung fuer Programme mit Status „Abgebrochen“. Sichtbar werden: Gesamtquote, Quote pro Maschine (mit Ampel ab 5 % / 15 %), Tagesverlauf als Balkendiagramm und eine Detailtabelle mit den letzten 500 Abbruechen (Datum, Maschine, Standort, Programm).
- Filterbar nach Zeitraum (Default: letzte 90 Tage), Standort und Geraetetyp (Waschmaschine / Trockner). Fuer Owner werden ueber alle eigenen Standorte aggregiert; Gaeste sehen die Daten ihres Owners.
- Datenbasis ist die bestehende Programmhistorie — kein zusaetzlicher Sync, die Auswertung ist sofort fuer alle vorhandenen Laeufe verfuegbar.
v1.15.0
07.05.2026, 19:00
Gastzugriffe: Maschinen-Steuerung als eigenes Recht freigebbar
- Bisher konnten Gaeste den Status der Maschinen sehen, aber sie nicht in/ausser Betrieb setzen oder Wasch-/Trockengaenge freischalten — der Klick auf einen Aktions-Button erzeugte beim Gast nur eine kryptische „Netzwerkfehler“-Meldung.
- Neu: unter Einstellungen → Gastzugriffe gibt es das Recht „manage_machines“. Ist es fuer einen Gast aktiviert, kann er Maschinen genauso steuern wie der Owner. Default fuer neue Gaeste bleibt aus.
- Wer das Recht nicht hat, sieht jetzt eine klare Meldung „Keine Berechtigung — Maschinen-Steuerung ist fuer diesen Account nicht freigegeben.“ statt des Netzwerkfehler-Texts.
v1.14.0
05.05.2026, 21:00
Operationen: Detailansicht und Gruppierung pro Treuekarte korrigiert
- Wenn auf der Operationen-Seite eine Karte angeklickt wurde, die gerade frisch am Kiosk angelegt oder aufgeladen worden ist, kam manchmal die Meldung „Karte nicht gefunden“. Grund: die Kartenliste wird im Hintergrund nur alle 5 Minuten aktualisiert, einzelne Buchungen aber sofort.
- In so einem Fall wird die Kartenliste jetzt sofort neu von der Bloomest-API geladen, wenn die angeklickte Karte lokal noch nicht bekannt ist. Erst wenn sie auch danach nicht auftaucht, erscheint weiterhin die Meldung „Karte nicht gefunden“ (z. B. bei Voucher-/Einmalkarten).
- In der Operationen-Liste wurden Verkaeufe verschiedener Treuekarten teilweise zu einer Buchung zusammengefasst. Ab sofort enthaelt eine Gruppe immer entweder genau eine Treuekarte oder ausschliesslich Bar-Verkaeufe — nie mehrere Karten gemischt.
- In der Produkt-Spalte stand bei Verkaeufen ueber eine Treuekarte „Media“. Es wird jetzt korrekt „Treuekarte“ angezeigt.
v1.13.0
05.05.2026, 20:00
Kanister: Uebersicht ueber alle Standorte + Forecast in Wochen
- Auf der Kanister-Seite gibt es jetzt eine Uebersicht „Alle Standorte“. In einer kompakten Tabelle ist auf einen Blick zu sehen, wie viele Kanister pro Sorte an jedem Standort vorhanden sind und bis wann sie reichen.
- Bei Auswahl eines einzelnen Standorts erscheinen wie gewohnt Bestand, QR-Codes und Wechsel-Log.
- Im „Reicht bis“-Forecast steht in den Klammern jetzt die Anzahl der Wochen (z. B. „12.06.2026 (4 Wo)“) statt der Tage.
- Die Reicht-bis-Skalierung nach Service-Umsatz wirkt nun auch in der Uebersicht: jeder Standort bekommt einen eigenen, an seinem Verbrauch orientierten Forecast.
v1.12.0
05.05.2026, 19:00
Operationen: Beleg-/Bar-Rechnung fuer Kaeufe ohne Kundenkarte
- In der Operationen-Liste gibt es bei jedem Bar-Verkauf (ohne Kundenkarte) jetzt einen kleinen „Beleg +“-Button. Damit laesst sich auf Wunsch des Kunden direkt eine Rechnung erstellen.
- Im Dialog werden Empfaengername (Pflicht), Firma, Anschrift, E-Mail und Steuernummer erfasst. Die Rechnungsnummer wird wie bei Kundenkarten-Rechnungen pro Standort und Jahr fortlaufend hochgezaehlt.
- Erstellte Belege erscheinen unter „Rechnungen“ und koennen wie gewohnt heruntergeladen oder per E-Mail an den Kunden versendet werden.
- Wurde fuer eine Buchung bereits eine Bar-Rechnung ausgestellt, zeigt die Operationen-Tabelle direkt die Rechnungsnummer als PDF-Link statt erneut den Button.
v1.11.0
05.05.2026, 18:30
Kanister-Forecast: Reicht-bis pro Standort nach Umsatz skaliert
- Auf der Kanister-Seite wurde das „Reicht bis“-Datum bisher nur aus der durchschnittlichen globalen Verbrauchsrate berechnet — zwei Standorte mit gleichem Bestand zeigten denselben Forecast, auch wenn sie unterschiedlich viel Umsatz machen.
- Neu: der Forecast wird zusätzlich mit dem Verhältnis Standort-Service-Umsatz / Mittelwert der eigenen Standorte (letzte 30 Tage) skaliert. Umsatzstärkere Standorte bekommen jetzt früher ein „Reicht bis“-Warndatum als ruhigere Standorte mit gleichem Bestand.
v0.3.1
05.05.2026, 18:00
Operationen: Live-Aktualisierung beim Seitenaufruf
- Beim Aufruf von „Operationen“ werden die heutigen Bewegungen jetzt direkt aus der Bloomest-API nachgezogen — die Tabelle aktualisiert sich automatisch, sobald neue Buchungen vorliegen, ohne dass die Seite neu geladen werden muss.
- Bisher kamen neue Operationen erst mit dem 15-Minuten-Cron in der Anzeige an; gerade gestartete Wäschen fehlten kurzzeitig. Das ist jetzt behoben.
v0.3.0
03.05.2026, 20:00
Gastzugriffe: weitere Personen einladen, ohne Daten doppelt zu ziehen
- Unter Einstellungen → Gastzugriffe können Sie weitere Personen per E-Mail einladen. Sie sehen dann denselben Standort-View wie Sie selbst.
- Externe Daten (Bloomest, Miele, Seko) werden nur einmal pro Standort vom Anbieter abgerufen — egal wie viele Gäste Sie einladen.
- Pro Gast können Sie Schreibrechte einzeln freigeben: Karten aufladen, Rechnungen erstellen, Kanister verwalten, Forum-Beiträge schreiben, Display-Slugs verwalten. Standard ist nur Lesen.
- Einladungen sind 7 Tage gültig, einmalig verwendbar und an die angegebene E-Mail gebunden — ein geleakter Link kann nicht von Dritten benutzt werden.
- Gäste lassen sich jederzeit wieder entfernen (Account wird gelöscht); offene Einladungen können widerrufen werden.
- Im Gäste-Tabellenkopf wird angezeigt, wann der Gast zuletzt aktiv war.
v0.2.1
03.05.2026, 18:00
Test-Instanz: Sicherheitsnetz gegen externe API-Aufrufe
- Auf der Test-Instanz (dev.bloomest-hessen.de) erscheint oben ein dezenter Hinweisbalken „TESTSYSTEM“. Dort werden keine echten Aufladungen, Mails oder API-Aufrufe an Bloomest/Miele/Seko/DeepL ausgefuehrt — die Test-Instanz arbeitet ausschliesslich auf den naechtlich von Prod gespiegelten Daten.
- Auf der Produktiv-Instanz aendert sich nichts.
v0.2.0
03.05.2026, 17:30
Einmalkosten in der DB-Rechnung
- Beim Anlegen einer Kostenposition gibt es jetzt das Intervall „Einmalig (für einen Monat)“ — die Position wirkt nur in dem ausgewaehlten Monat und wird nicht aufgeteilt.
- Auf der Auswertungs-Seite gibt es einen neuen Button „+ Einmalkosten“ rechts neben den Reitern. Damit lassen sich Einmalkosten fuer den gerade angezeigten Monat in einem schlanken Dialog (Name, Kategorie, Standort, Betrag, MwSt) erfassen.
v0.1.1
03.05.2026, 17:00
Versionierung eingefuehrt
- Neue Seite unter /releases zeigt alle Aenderungen mit Datum und Versionsnummer.
- Im Footer steht jetzt die aktuelle Version — ein Klick fuehrt zur Uebersicht.