Initial commit

This commit is contained in:
marianesaldana
2026-05-23 08:59:34 -06:00
commit 80dbd947e5
36446 changed files with 3729147 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Enum
from sqlalchemy.orm import relationship
from datetime import datetime
import enum
from ..database import Base
class ReportType(str, enum.Enum):
NO_PASO = "NO_PASO"
RETRASO = "RETRASO"
ACUMULACION = "ACUMULACION"
OTRO = "OTRO"
class ReportStatus(str, enum.Enum):
PENDIENTE = "PENDIENTE"
EN_PROCESO = "EN_PROCESO"
RESUELTO = "RESUELTO"
CERRADO = "CERRADO"
class Report(Base):
__tablename__ = "reports"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
address_id = Column(Integer, ForeignKey("addresses.id"), nullable=False)
folio = Column(String, unique=True, index=True, nullable=False)
report_type = Column(String, nullable=False)
description = Column(Text, nullable=True)
status = Column(String, default=ReportStatus.PENDIENTE)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
user = relationship("User", back_populates="reports")
address = relationship("Address", back_populates="reports")
class ServiceRating(Base):
__tablename__ = "service_ratings"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
address_id = Column(Integer, ForeignKey("addresses.id"), nullable=False)
rating = Column(Integer, nullable=False) # 1-5
comment = Column(Text, nullable=True)
created_at = Column(DateTime, default=datetime.utcnow)
user = relationship("User", back_populates="ratings")
address = relationship("Address", back_populates="ratings")
class OperationalReport(Base):
"""Reportes generados por el personal operativo (empleados)."""
__tablename__ = "operational_reports"
id = Column(Integer, primary_key=True, index=True)
employee_id = Column(Integer, ForeignKey("users.id"), nullable=False)
folio = Column(String, unique=True, index=True, nullable=False)
category = Column(String, nullable=False)
# NO_ARRANQUE | FALLA_MECANICA | ACCIDENTE | OBSTACULO | TRAFICO |
# COMBUSTIBLE | CLIMA | OTRO
description = Column(Text, nullable=True)
severity = Column(String, default="MEDIA") # BAJA | MEDIA | ALTA
route_id = Column(String, nullable=True) # RUTA-XX (opcional)
truck_id = Column(Integer, nullable=True)
status = Column(String, default="REPORTADO") # REPORTADO | EN_ATENCION | RESUELTO
created_at = Column(DateTime, default=datetime.utcnow)
resolved_at = Column(DateTime, nullable=True)