Improve the frontend and fix TODOs

This commit is contained in:
Urtzi Alfaro
2025-10-24 13:05:04 +02:00
parent 07c33fa578
commit 61376b7a9f
100 changed files with 8284 additions and 3419 deletions

View File

@@ -419,15 +419,36 @@ class InventoryService:
) -> List[StockMovementResponse]:
"""Get stock movements with filtering"""
logger.info("📈 Getting stock movements",
tenant_id=tenant_id,
ingredient_id=ingredient_id,
tenant_id=str(tenant_id),
ingredient_id=str(ingredient_id) if ingredient_id else None,
skip=skip,
limit=limit)
limit=limit,
movement_type=movement_type)
try:
async with get_db_transaction() as db:
movement_repo = StockMovementRepository(db)
ingredient_repo = IngredientRepository(db)
# Validate ingredient exists if filtering by ingredient
if ingredient_id:
ingredient = await ingredient_repo.get_by_id(ingredient_id)
if not ingredient:
logger.warning("Ingredient not found for movements query",
ingredient_id=str(ingredient_id),
tenant_id=str(tenant_id))
raise ValueError(f"Ingredient {ingredient_id} not found")
if ingredient.tenant_id != tenant_id:
logger.error("Ingredient does not belong to tenant",
ingredient_id=str(ingredient_id),
ingredient_tenant=str(ingredient.tenant_id),
requested_tenant=str(tenant_id))
raise ValueError(f"Ingredient {ingredient_id} does not belong to tenant {tenant_id}")
logger.info("Ingredient validated for movements query",
ingredient_name=ingredient.name,
ingredient_id=str(ingredient_id))
# Get filtered movements
movements = await movement_repo.get_movements(
tenant_id=tenant_id,
@@ -454,8 +475,14 @@ class InventoryService:
logger.info("✅ Returning movements", response_count=len(responses))
return responses
except ValueError:
# Re-raise validation errors as-is
raise
except Exception as e:
logger.error("❌ Failed to get stock movements", error=str(e), tenant_id=tenant_id)
logger.error("❌ Failed to get stock movements",
error=str(e),
error_type=type(e).__name__,
tenant_id=str(tenant_id))
raise
# ===== ALERTS AND NOTIFICATIONS =====
@@ -577,7 +604,7 @@ class InventoryService:
low_stock_alerts=len(low_stock_items),
expiring_soon_items=len(expiring_items),
expired_items=len(expired_items),
out_of_stock_items=0, # TODO: Calculate this
out_of_stock_items=stock_summary.get('out_of_stock_count', 0),
stock_by_category=stock_by_category,
recent_movements=recent_activity.get('total_movements', 0),
recent_purchases=recent_activity.get('purchase', {}).get('count', 0),