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';
|
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
|
/// Bester Produktstart für den Direktor:
|
||||||
/// Produkt-Ertrags-Tabelle passt: Wissen geht **additiv** in den Markt-Prozentsatz
|
/// Wissen geht additiv in den Markt-Prozentsatz `(worth + (2×Char + Dir)/3) / 100`.
|
||||||
/// `(worth + (2×Char + Dir)/3) / 100`, Kosten **`6 × category`**, Skalierung **`/ (300 × production_time)`**.
|
/// Für das Ranking werden dieselben Stückkosten wie im DirectorWorker angesetzt:
|
||||||
/// Verkauf/Steuer im laufenden Spiel nutzt weiter `DirectorWorker::compute_piece_sell_price` — nur **Ranking** hier.
|
/// `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.
|
/// `worth_percent`: mit Fahrzeug `MAX` über Filialregionen; ohne Fahrzeug nur Direktor-Region.
|
||||||
/// **Ein** Spielercharakter je User (`ORDER BY id DESC LIMIT 1`, `health > 0`).
|
/// **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
|
/ 3.0
|
||||||
)
|
)
|
||||||
/ 100.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))
|
) / (300.0 * NULLIF(ftp.production_time::float8, 0.0))
|
||||||
) AS worth,
|
) AS worth,
|
||||||
fdb.id AS branch_id, (SELECT COUNT(id) FROM falukant_data.production WHERE branch_id = fdb.id) AS running_productions,
|
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