from __future__ import annotations from dataclasses import dataclass from pathlib import Path from bom_assistant.session.models import BomRow from bom_assistant.suppliers.category_resolver import resolve_category from bom_assistant.suppliers.lcsc.categories import get_subcategories_for _CACHE_PATH = Path(__file__).parent / "category_cache.json" @dataclass class LcscCategory: name: str id: int def __repr__(self) -> str: return f"LcscCategory(name={self.name!r}, id={self.id})" def resolve(row: BomRow) -> list[LcscCategory]: """Map a BomRow to up to 3 LCSC subcategories ranked by confidence.""" results = resolve_category( row, get_subcategories_for(row.category), supplier="lcsc", cache_path=_CACHE_PATH, ) return [LcscCategory(r.name, r.id) for r in results]