feat(abrechnung): pflegbare Preistabelle billing_tariff als Quelle der Sätze

Die Credits-Sätze je Aktion stehen jetzt in der geteilten Tabelle
billing_tariff statt nur in der Konfiguration. Die Migration legt die
Tabelle an und befüllt sie einmalig mit den wirksamen CREDIT_TARIFF-
Werten, danach liest _charge_credits() bei jeder Buchung die Tabelle,
fehlende Schlüssel oder eine fehlende Tabelle fallen auf die
Konfiguration zurück. Damit können Monitor und Verwaltungsportal
dieselben Sätze anzeigen und das Portal kann sie künftig pflegen,
eine Preisänderung braucht keinen Server-Eingriff mehr.

Getestet gegen eine Kopie der Staging-DB. Seed mit 7 Sätzen (45/40/
12/12/1/1/1), Buchung nach Tabelle, Tabellenänderung greift sofort,
Rückfall auf die Konfiguration ohne Tabelle.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
claude-dev
2026-07-25 14:28:09 +00:00
Ursprung ec3843bbe3
Commit 027244ada5
3 geänderte Dateien mit 51 neuen und 7 gelöschten Zeilen

Datei anzeigen

@@ -15,9 +15,12 @@ einheitlich in Monitor und Verwaltungsportal).
## Was eine Aktion kostet
Im Modus `flat` (Voreinstellung) kostet jede Aktion einen festen Satz aus
`CREDIT_TARIFF` in `src/config.py`, unabhängig davon, was sie uns tatsächlich
verursacht hat. 1 Credit entspricht 0,20 USD.
Im Modus `flat` (Voreinstellung) kostet jede Aktion einen festen Satz,
unabhängig davon, was sie uns tatsächlich verursacht hat. 1 Credit entspricht
0,20 USD. Die wirksamen Sätze stehen seit 25.07.2026 in der geteilten Tabelle
`billing_tariff` und sind über den Verbrauchsrechner des Verwaltungsportals
pflegbar. `CREDIT_TARIFF` in `src/config.py` befüllt die Tabelle beim ersten
Start und bleibt Rückfallebene für fehlende Schlüssel.
| Aktion | Credits | Herkunft des Werts |
|---|---|---|
@@ -138,8 +141,6 @@ Zur Orientierung bei einem Kontingent von 10.000 Credits und 45 Credits je Lauf.
## Offene Punkte
- E-Mail-Versand der Budget-Warnung.
- Eingabefelder für die Stellwerte im Verwaltungsportal (heute erzeugt das
Anlegen einer Organisation dort nicht einmal eine Lizenz).
- Takt-Untergrenze und Kostenvorschau aus dem Lokal-Fork portieren (siehe oben).
- Nachkaufpakete. Ohne sie ist der Deckel eine Sackgasse, mit ihnen eine
Umsatzquelle. Der Verkauf gehört ins Verwaltungsportal, im Monitor müsste nur