orchestrator.py 684 B

1234567891011121314151617181920
  1. from __future__ import annotations
  2. from bom_assistant.scouting.errors import RowNotFoundError
  3. from bom_assistant.session.models import BomRow, BomSession, RowState
  4. from bom_assistant.suppliers.lcsc.category_resolver import resolve
  5. def get_row(session: BomSession, row_id: str) -> BomRow:
  6. for row in session.rows:
  7. if row.row_id == row_id:
  8. return row
  9. raise RowNotFoundError(session.session_id, row_id)
  10. def scout_row(session: BomSession, row_id: str) -> BomRow:
  11. row = get_row(session, row_id)
  12. candidates = resolve(row)
  13. row.scout_candidates = [{"name": c.name, "id": c.id} for c in candidates]
  14. row.state = RowState.scouting
  15. return row