analyze_bunch.py 876 B

123456789101112131415161718192021222324
  1. from src.infrastructure.vision_service import VertexVisionService
  2. from src.infrastructure.repository import MongoPalmOilRepository
  3. from src.domain.models import PalmOilBunch
  4. class AnalyzeBunchUseCase:
  5. def __init__(self, vision_service: VertexVisionService, repo: MongoPalmOilRepository):
  6. self.vision_service = vision_service
  7. self.repo = repo
  8. def execute(self, image_path: str, yolo_result: dict):
  9. # 1. Get the visual fingerprint
  10. vector = self.vision_service.get_image_embedding(image_path)
  11. # 2. Create the Domain Entity
  12. bunch = PalmOilBunch(
  13. ripeness_class=yolo_result['class'],
  14. confidence=yolo_result['confidence'],
  15. embedding=vector,
  16. box=yolo_result['box']
  17. )
  18. # 3. Persist to "Memory"
  19. record_id = self.repo.save(bunch)
  20. return record_id