from __future__ import annotations from datetime import date, timedelta from .datetime_utils import NO_EXPIRY_DATE, today_in_config_timezone CATEGORY_RULES = { "fresco_preparado": 4, "verdura_entera": 30, "snack_seco": 180, "dulce_sellado": 180, "gaseosa_botella": 90, "congelado": 120, "abarrote_seco": 365, "mayonesa_cerrada": 120, "sin_caducidad": None, "bebida_alcoholica": 270, } def list_supported_categories() -> list[str]: return sorted(CATEGORY_RULES.keys()) def estimate_expiry_for_category(category: str, base_date: date | None = None) -> str: category = (category or "").strip().lower() if category not in CATEGORY_RULES: return "" days = CATEGORY_RULES[category] if days is None: return NO_EXPIRY_DATE base = base_date or date.fromisoformat(today_in_config_timezone()) return (base + timedelta(days=days)).isoformat()