import logging import uuid from typing import Optional from ..interfaces import CRMRepository, LeadData, TaskData logger = logging.getLogger(__name__) class MockRepository(CRMRepository): """ Simulates a CRM. Use this for local dev or tests. Stores data in memory (lost on restart). """ def __init__(self): self._store = {} def get_name(self) -> str: return "Local Mock CRM" def find_company(self, name: str, email: str = None) -> Optional[str]: # Simple Exact Match Simulation for lead_id, lead in self._store.items(): if lead.name.lower() == name.lower(): logger.info(f"[MockCRM] Found existing company '{name}' with ID {lead_id}") return lead_id return None def create_lead(self, lead: LeadData) -> str: new_id = f"MOCK_{uuid.uuid4().hex[:8]}" self._store[new_id] = lead logger.info(f"[MockCRM] Created company '{lead.name}' (ID: {new_id}). Total records: {len(self._store)}") return new_id def update_lead(self, external_id: str, lead: LeadData) -> bool: if external_id in self._store: self._store[external_id] = lead logger.info(f"[MockCRM] Updated company {external_id} with robotics score: {lead.robotics_potential_score}") return True return False def create_task(self, external_id: str, task: TaskData) -> bool: logger.info(f"[MockCRM] 🔔 TASK CREATED for {external_id}: '{task.subject}'") return True