Refactor Falukant certificate management: Consolidated certificate logic into the FalukantFamilyWorker's daily processing, removing the separate FalukantCertificateWorker. Updated SQL queries to include app_user_id and enhanced documentation for clarity on certificate scoring and daily recalculation logic.

This commit is contained in:
Torsten Schulz (local)
2026-03-25 11:12:55 +01:00
parent 3b25f8c3a0
commit 083fa26297
7 changed files with 163 additions and 221 deletions

View File

@@ -0,0 +1,40 @@
# Director: Stückkosten Produktion (Balancing)
## Problem
Die DB wählt das „beste“ Produkt über `QUERY_GET_BEST_PRODUCTION` (Worth-Formel mit `- 6 * ftp.category`), während der Daemon früher **nur** `certificate * 6` pro Stück abgebucht hat **ohne** die Produktklasse. Dadurch konnten Stückkosten und Worth-Ranking auseinanderlaufen.
## Aktuelle Formel (Rust, `DirectorWorker::calc_one_piece_cost`)
```
raw = certificate × PRODUCTION_COST_PER_CERT_LEVEL
+ product_category × PRODUCTION_COST_PER_PRODUCT_CATEGORY
effektiv = raw × (1 headroom_discount)
```
- `product_category` kommt aus `QUERY_GET_BEST_PRODUCTION` (`ftp.category`).
- **Headroom** = `max(0, certificate product_category)`
Wenn du **nicht** am Klassenlimit produzierst (Zertifikat höher als nötig für das Produkt), gibt es einen kleinen Rabatt (Effizienz / Reserve).
Konstanten in `src/worker/director.rs` (anpassen zum Feintuning):
| Konstante | Standard | Bedeutung |
|-----------|----------|-----------|
| `PRODUCTION_COST_PER_CERT_LEVEL` | `6.0` | wie früher `×6` pro Zertifikatsstufe |
| `PRODUCTION_COST_PER_PRODUCT_CATEGORY` | `1.0` | Material pro Produktklasse |
| `PRODUCTION_HEADROOM_DISCOUNT_PER_STEP` | `0.035` | Rabatt pro Headroom-Stufe |
| `PRODUCTION_HEADROOM_DISCOUNT_CAP` | `0.14` | maximaler Gesamtrabatt |
## Spielerfortschritt
- **Höheres Zertifikat** allein erhöht die Basis-Stückkosten linear entspricht **besserer** Produktpalette (`ftp.category <= certificate` in SQL).
- **Höhere Produktklasse** erhöht `raw` über `product_category` (bessere Ware = mehr Material).
- **Zertifikat über der Produktklasse** (Headroom) senkt die effektiven Kosten Belohnung, wenn du nicht immer nur am Limit produzierst.
## Worth in SQL
Die Worth-Zeile in `QUERY_GET_BEST_PRODUCTION` sollte bei größeren Formeländerungen **mit** angepasst werden, damit der Director weiterhin sinnvoll sortiert.
## Parallelproduktionen
`MAX_PARALLEL_PRODUCTIONS` (aktuell 2) bestimmt, wie viele Linien pro Tick Geld binden unabhängig von der Stückkostenformel; bei Liquiditätsproblemen ggf. auf `1` setzen.