| 123456789101112131415161718192021222324252627282930 |
- 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) -> LcscCategory | None:
- """Map a BomRow to an LCSC subcategory via shared LLM resolver."""
- result = resolve_category(
- row,
- get_subcategories_for(row.category),
- supplier="lcsc",
- cache_path=_CACHE_PATH,
- )
- return LcscCategory(result.name, result.id) if result else None
|