layout-viewer / scripts /inspect_inventory.py
Spyspook's picture
initial commit
ce82348 verified
# scripts/inspect_inventory.py
"""
Скрипт для глубокой инспекции доступных 3D-моделей товаров по категориям.
"""
import logging
from typing import List
import hydra
from omegaconf import DictConfig
# Настройка подробного логирования
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
datefmt="%H:%M:%S"
)
logger: logging.Logger = logging.getLogger(__name__)
@hydra.main(version_base=None, config_path="../configs", config_name="main_config")
def main(cfg: DictConfig) -> None:
"""
Главная функция для парсинга и вывода всех товаров из products_hierarchy.
Args:
cfg (DictConfig): Конфигурация проекта, загруженная Hydra.
"""
logger.info("🔍 Запуск ГЛУБОКОГО инспектора инвентаря (v4)...")
try:
# Извлекаем конфигурацию ассетов
assets_cfg: DictConfig = cfg.get("assets", cfg.get("asset_config", {}))
# Берем весь products_hierarchy целиком
products_hierarchy: DictConfig = assets_cfg.get("products_hierarchy", {})
if not products_hierarchy:
logger.error("❌ Не удалось найти структуру products_hierarchy в конфиге!")
return
total_items: int = 0
total_categories: int = 0
# Обходим все группы (food, drinks и т.д.)
for group_name, group_categories in products_hierarchy.items():
logger.info(f"📁 ГРУППА: {group_name.upper()}")
# Проходим по всем категориям внутри группы (например, RICE_SPAGHETTI, SAUCES)
for category_name, category_items in group_categories.items():
items_in_category: List[str] = list(category_items.keys())
count: int = len(items_in_category)
total_items += count
total_categories += 1
logger.info(f" 📂 КАТЕГОРИЯ: {category_name} ({count} товаров)")
logger.info("=" * 50)
logger.info(f"✅ ИТОГО: {total_items} товаров в {total_categories} категориях.")
logger.info("=" * 50)
except Exception as e:
logger.error(f"❌ Ошибка при чтении: {e}", exc_info=True)
if __name__ == "__main__":
main()