feat: multi-robot architecture, car-robot rename, and credit-based OCR logic spec
This commit is contained in:
34
backend/app/services/harvester_base.py
Normal file
34
backend/app/services/harvester_base.py
Normal file
@@ -0,0 +1,34 @@
|
||||
import httpx
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import select
|
||||
from app.models.vehicle import VehicleCatalog
|
||||
|
||||
class BaseHarvester:
|
||||
def __init__(self, category: str):
|
||||
self.category = category
|
||||
self.headers = {"User-Agent": "ServiceFinder-Harvester-Bot/2.0"}
|
||||
|
||||
async def check_exists(self, db: AsyncSession, brand: str, model: str):
|
||||
"""Ellenőrzi, hogy az adott modell létezik-e már."""
|
||||
stmt = select(VehicleCatalog).where(
|
||||
VehicleCatalog.brand == brand,
|
||||
VehicleCatalog.model == model,
|
||||
VehicleCatalog.category == self.category
|
||||
)
|
||||
result = await db.execute(stmt)
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
async def log_entry(self, db: AsyncSession, brand: str, model: str, specs: dict = None):
|
||||
"""Létrehoz vagy frissít egy katalógus bejegyzést."""
|
||||
existing = await self.check_exists(db, brand, model)
|
||||
if not existing:
|
||||
new_v = VehicleCatalog(
|
||||
brand=brand,
|
||||
model=model,
|
||||
category=self.category,
|
||||
factory_specs=specs or {},
|
||||
verification_status="incomplete" if not specs else "verified"
|
||||
)
|
||||
db.add(new_v)
|
||||
return True
|
||||
return False
|
||||
Reference in New Issue
Block a user