201 előtti mentés

This commit is contained in:
Roo
2026-03-26 07:09:44 +00:00
parent 89668a9beb
commit 03258db091
124 changed files with 13619 additions and 13347 deletions

View File

@@ -15,6 +15,7 @@ from .service import (
ServiceProfile,
ExpertiseTag,
ServiceExpertise,
Cost,
)
from .logistics import Location, LocationType
@@ -44,6 +45,7 @@ __all__ = [
"ServiceProfile",
"ExpertiseTag",
"ServiceExpertise",
"Cost",
"ServiceStaging",
"DiscoveryParameter",
"Location",

View File

@@ -2,7 +2,7 @@
import enum
import uuid
from datetime import datetime
from typing import Any, List, Optional
from typing import Any, List, Optional, TYPE_CHECKING
import sqlalchemy as sa
from sqlalchemy import Column, Integer, String, Boolean, DateTime, ForeignKey, JSON, text, Numeric, BigInteger, Float
from sqlalchemy.dialects.postgresql import ENUM as PG_ENUM, UUID as PG_UUID, JSONB
@@ -13,6 +13,9 @@ from geoalchemy2 import Geometry
# MB 2.0: A központi aszinkron adatbázis motorból húzzuk be a Base-t
from app.database import Base
if TYPE_CHECKING:
from .service_request import ServiceRequest
class OrgType(str, enum.Enum):
individual = "individual"
service = "service"
@@ -222,6 +225,13 @@ class Branch(Base):
# Kapcsolatok (Primaryjoin tartva a rating rendszerhez)
reviews: Mapped[List["Rating"]] = relationship(
"Rating",
"Rating",
primaryjoin="and_(Branch.id==foreign(Rating.target_branch_id))"
)
# Kapcsolat a ServiceRequest modellel
service_requests: Mapped[List["ServiceRequest"]] = relationship(
"ServiceRequest",
back_populates="branch",
cascade="all, delete-orphan"
)

View File

@@ -156,4 +156,21 @@ class DiscoveryParameter(Base):
city: Mapped[str] = mapped_column(String(100))
keyword: Mapped[str] = mapped_column(String(100))
is_active: Mapped[bool] = mapped_column(Boolean, default=True)
last_run_at: Mapped[Optional[datetime]] = mapped_column(DateTime(timezone=True))
last_run_at: Mapped[Optional[datetime]] = mapped_column(DateTime(timezone=True))
class Cost(Base):
""" Költségnapló a trust engine számára. """
__tablename__ = "costs"
__table_args__ = {"schema": "marketplace"}
id: Mapped[int] = mapped_column(Integer, primary_key=True)
vehicle_id: Mapped[int] = mapped_column(Integer, nullable=False, index=True)
category: Mapped[str] = mapped_column(String(50), nullable=False, index=True)
amount: Mapped[float] = mapped_column(Numeric(12, 2), nullable=False)
currency: Mapped[str] = mapped_column(String(3), default="HUF")
odometer_km: Mapped[Optional[int]] = mapped_column(Integer, nullable=True)
occurrence_date: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, index=True)
is_deleted: Mapped[bool] = mapped_column(Boolean, default=False)
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), onupdate=func.now(), server_default=func.now())

View File

@@ -4,7 +4,7 @@ ServiceRequest - Piactér központi tranzakciós modellje.
Epic 7: Marketplace ServiceRequest dedikált modell.
"""
from typing import Optional
from typing import Optional, TYPE_CHECKING
from datetime import datetime
from sqlalchemy import String, ForeignKey, Text, DateTime, Numeric, Integer, Index
from sqlalchemy.orm import Mapped, mapped_column, relationship
@@ -12,6 +12,11 @@ from sqlalchemy.sql import func
from app.database import Base
if TYPE_CHECKING:
from ..identity.identity import User
from ..vehicle.asset import Asset
from ..marketplace.service import Branch
class ServiceRequest(Base):
"""
@@ -87,9 +92,9 @@ class ServiceRequest(Base):
)
# Relationships (opcionális, de ajánlott a lazy loading miatt)
user = relationship("User", back_populates="service_requests", lazy="selectin")
asset = relationship("Asset", back_populates="service_requests", lazy="selectin")
branch = relationship("Branch", back_populates="service_requests", lazy="selectin")
user: Mapped["User"] = relationship("User", back_populates="service_requests", lazy="selectin")
asset: Mapped[Optional["Asset"]] = relationship("Asset", back_populates="service_requests", lazy="selectin")
branch: Mapped[Optional["Branch"]] = relationship("Branch", back_populates="service_requests", lazy="selectin")
def __repr__(self) -> str:
return f"<ServiceRequest(id={self.id}, status='{self.status}', user_id={self.user_id})>"