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