feat(backend): Update models and endpoints configuration

- Enhanced ticket and comment models with proper relationships
- Updated client_profile model for better data handling
- Improved auth endpoint with better error handling
- Updated main app configuration and imports
- Added new dependencies to requirements.txt
- Enhanced tickets endpoint with attachment support
This commit is contained in:
2026-02-09 13:28:40 -07:00
parent ac0cb6f132
commit 91ff49cdec
9 changed files with 257 additions and 92 deletions

View File

@@ -7,6 +7,7 @@ from .comment import TicketComment
from .system import System
from .category import Category
from .client_profile import ClientProfile
from .attachment import TicketAttachment
__all__ = [
"User",
@@ -15,5 +16,6 @@ __all__ = [
"TicketComment",
"System",
"Category",
"ClientProfile"
"ClientProfile",
"TicketAttachment"
]

View File

@@ -8,12 +8,15 @@ Almacena información detallada de la empresa cliente
from sqlalchemy import String, Boolean, DateTime, ForeignKey, Text, Numeric
from sqlalchemy.orm import Mapped, mapped_column, relationship
from sqlalchemy.dialects.postgresql import UUID
from typing import Optional
from typing import Optional, TYPE_CHECKING
import uuid
from datetime import datetime
from app.core.database import Base
if TYPE_CHECKING:
from app.models.tenant import Tenant
class ClientProfile(Base):
"""Modelo de Perfil de Cliente Empresarial."""

View File

@@ -64,6 +64,11 @@ class TicketComment(Base):
# Relationships
ticket: Mapped["Ticket"] = relationship("Ticket", back_populates="comments")
author: Mapped["User"] = relationship("User")
attachments: Mapped[list["TicketAttachment"]] = relationship(
"TicketAttachment",
back_populates="comment",
cascade="all, delete-orphan"
)
def __repr__(self) -> str:
return f"<TicketComment {self.id} by {self.author_id}>"

View File

@@ -126,6 +126,12 @@ class Ticket(Base):
cascade="all, delete-orphan"
)
attachments: Mapped[list["TicketAttachment"]] = relationship(
"TicketAttachment",
back_populates="ticket",
cascade="all, delete-orphan"
)
# ✅ AÑADIDOS: Constraints según schema.sql
__table_args__ = (
UniqueConstraint('tenant_id', 'ticket_number', name='uq_tickets_tenant_number'),