from __future__ import annotations from bom_assistant.scouting.errors import RowNotFoundError from bom_assistant.session.models import BomRow, BomSession, RowState from bom_assistant.suppliers.lcsc.category_resolver import resolve def get_row(session: BomSession, row_id: str) -> BomRow: for row in session.rows: if row.row_id == row_id: return row raise RowNotFoundError(session.session_id, row_id) def scout_row(session: BomSession, row_id: str) -> BomRow: row = get_row(session, row_id) candidates = resolve(row) row.scout_candidates = [{"name": c.name, "id": c.id} for c in candidates] row.state = RowState.scouting return row