Improve logging in DirectorWorker: Added detailed error messages and production calculations to enhance visibility into production planning and execution. Included checks for running productions and capacity constraints, ensuring better tracking of production processes.

This commit is contained in:
Torsten Schulz (local)
2025-12-01 10:23:42 +01:00
parent d5017ef1e1
commit 9715723db7

View File

@@ -372,14 +372,37 @@ impl DirectorWorker {
conn.prepare("get_to_produce", QUERY_GET_BEST_PRODUCTION)?;
let rows = conn.execute("get_to_produce", &[&director.id])?;
if rows.is_empty() {
eprintln!(
"[DirectorWorker] Keine Produktionskandidaten für Director {} gefunden.",
director.id
);
return Ok(());
}
let plan = match Self::map_row_to_production_plan(&rows[0]) {
Some(p) => p,
None => return Ok(()),
None => {
eprintln!(
"[DirectorWorker] Produktionsplan für Director {} konnte nicht gemappt werden.",
director.id
);
return Ok(());
}
};
eprintln!(
"[DirectorWorker] Produktionsplan: director_user_id={}, branch_id={}, product_id={}, money={}, certificate={}, stock_size={}, used_in_stock={}, running_productions={}, running_qty={}",
plan.falukant_user_id,
plan.branch_id,
plan.product_id,
plan.money,
plan.certificate,
plan.stock_size,
plan.used_in_stock,
plan.running_productions,
plan.running_productions_quantity
);
self.create_production_batches(&mut conn, &plan)?;
Ok(())
}
@@ -410,6 +433,10 @@ impl DirectorWorker {
) -> Result<(), DbError> {
let running = plan.running_productions;
if running >= 2 {
eprintln!(
"[DirectorWorker] Bereits zu viele laufende Produktionen ({}), keine neue Produktion.",
running
);
return Ok(());
}
@@ -430,6 +457,14 @@ impl DirectorWorker {
let to_produce = free_capacity.min(max_money_production).min(300).max(0);
eprintln!(
"[DirectorWorker] Produktionsberechnung: free_capacity={}, one_piece_cost={}, max_money_production={}, to_produce={}",
free_capacity,
one_piece_cost,
max_money_production,
to_produce
);
if to_produce < 1 {
eprintln!(
"[DirectorWorker] Keine Produktion gestartet: free_capacity={}, max_money_production={}, running_productions={}, running_qty={}",
@@ -456,6 +491,7 @@ impl DirectorWorker {
conn.prepare("insert_production", QUERY_INSERT_PRODUCTION)?;
let mut remaining = to_produce;
let mut inserted_total = 0;
while remaining > 0 {
let batch = remaining.min(100);
conn.execute(
@@ -463,8 +499,14 @@ impl DirectorWorker {
&[&plan.branch_id, &plan.product_id, &batch],
)?;
remaining -= batch;
inserted_total += batch;
}
eprintln!(
"[DirectorWorker] Produktion angelegt: branch_id={}, product_id={}, quantity={}",
plan.branch_id, plan.product_id, inserted_total
);
let message = format!(
r#"{{"event":"production_started","branch_id":{}}}"#,
plan.branch_id