Refactor product start calculation and SQL query: Updated the documentation for the best product start logic to clarify the ranking criteria and cost calculations. Adjusted the SQL query to enhance the worth calculation by incorporating new logic for category-based costs and headroom discounts, ensuring consistency with the updated pricing strategy.
Some checks failed
Deploy yourpart (blue-green) / deploy (push) Failing after 2s
Some checks failed
Deploy yourpart (blue-green) / deploy (push) Failing after 2s
This commit is contained in:
@@ -73,10 +73,12 @@ JOIN falukant_data.branch b ON b.region_id = c.region_id AND b.falukant_user_id
|
||||
WHERE current_time BETWEEN '08:00:00' AND '17:00:00';
|
||||
"#;
|
||||
|
||||
/// Bester Produktstart: **Legacy/UI-Formel** (vormals C++ `QUERY_GET_BEST_PRODUCTION`), damit Reihenfolge zur
|
||||
/// Produkt-Ertrags-Tabelle passt: Wissen geht **additiv** in den Markt-Prozentsatz
|
||||
/// `(worth + (2×Char + Dir)/3) / 100`, Kosten **`6 × category`**, Skalierung **`/ (300 × production_time)`**.
|
||||
/// Verkauf/Steuer im laufenden Spiel nutzt weiter `DirectorWorker::compute_piece_sell_price` — nur **Ranking** hier.
|
||||
/// Bester Produktstart für den Direktor:
|
||||
/// Wissen geht additiv in den Markt-Prozentsatz `(worth + (2×Char + Dir)/3) / 100`.
|
||||
/// Für das Ranking werden dieselben Stückkosten wie im DirectorWorker angesetzt:
|
||||
/// `raw = 6 + category`, mit Headroom-Rabatt über Zertifikat (`min((cert-cat)*0.035, 0.14)`).
|
||||
/// Skalierung: `/ (300 × production_time)`.
|
||||
/// Verkauf/Steuer im laufenden Spiel nutzt weiterhin `DirectorWorker::compute_piece_sell_price` — hier nur Ranking.
|
||||
///
|
||||
/// `worth_percent`: mit Fahrzeug `MAX` über Filialregionen; ohne Fahrzeug nur Direktor-Region.
|
||||
/// **Ein** Spielercharakter je User (`ORDER BY id DESC LIMIT 1`, `health > 0`).
|
||||
@@ -106,7 +108,20 @@ COALESCE((SELECT SUM(COALESCE(fdi.quantity, 0)) FROM falukant_data.stock fds JOI
|
||||
/ 3.0
|
||||
)
|
||||
/ 100.0
|
||||
- 6.0 * COALESCE(ftp.category, 0)::float8
|
||||
- (
|
||||
(
|
||||
6.0 + GREATEST(COALESCE(ftp.category, 1)::float8, 1.0)
|
||||
) * (
|
||||
1.0 - LEAST(
|
||||
GREATEST(
|
||||
COALESCE(fdu.certificate, 1)::float8
|
||||
- GREATEST(COALESCE(ftp.category, 1)::float8, 1.0),
|
||||
0.0
|
||||
) * 0.035,
|
||||
0.14
|
||||
)
|
||||
)
|
||||
)
|
||||
) / (300.0 * NULLIF(ftp.production_time::float8, 0.0))
|
||||
) AS worth,
|
||||
fdb.id AS branch_id, (SELECT COUNT(id) FROM falukant_data.production WHERE branch_id = fdb.id) AS running_productions,
|
||||
|
||||
Reference in New Issue
Block a user