Mejoras en Módulo de Tickets: - Implementado sistema de filtros funcional por estado y prioridad - Tabla compacta estilo auditoría (50% más espacio visible) - Backend actualizado: parámetros 'status' y 'priority' con validación - Interfaz más limpia con labels reducidos y 2 columnas de filtros - Eliminación de columna SLA duplicada en tabla Correcciones Backend: - Endpoint /v1/tickets/: filtros 'status' y 'priority' funcionan correctamente - Endpoint /v1/sla/violations: timezone UTC y eager loading con selectinload - Endpoint /v1/client-profile/: generación explícita de UUID - Migración fix_client_profiles_timestamps aplicada Mejoras UI Frontend: - Tabla tickets: encabezados uppercase text-xs, celdas px-3 py-2 - Toggle de estado activo/inactivo en gestión de tenants (tabla + modal) - Badges más compactos con rounded-full - Botones de acciones con separador visual y transiciones - Filtros con URLSearchParams para construcción correcta de queries Arquitectura: - SQLAlchemy: eager loading para evitar N+1 queries - Timezone handling: datetime.now(timezone.utc) para comparaciones - Svelte reactivity: keyed loops y spread operator para forzar updates - API client: endpoint con query string completo Estado del sistema: Totalmente funcional para producción MVP
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
"""Fix client_profiles timestamps to use server defaults
|
|
|
|
Revision ID: fix_client_timestamps
|
|
Revises: a1b2c3d4e5f6
|
|
Create Date: 2026-02-17 12:05:00.000000
|
|
|
|
"""
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = 'fix_client_timestamps'
|
|
down_revision = 'a1b2c3d4e5f6'
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# Modificar created_at para usar server_default
|
|
op.alter_column('client_profiles', 'created_at',
|
|
existing_type=sa.DateTime(timezone=True),
|
|
nullable=False,
|
|
server_default=sa.text('now()')
|
|
)
|
|
|
|
# Modificar updated_at para usar server_default
|
|
op.alter_column('client_profiles', 'updated_at',
|
|
existing_type=sa.DateTime(timezone=True),
|
|
nullable=False,
|
|
server_default=sa.text('now()')
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
# Remover server_default
|
|
op.alter_column('client_profiles', 'created_at',
|
|
existing_type=sa.DateTime(timezone=True),
|
|
nullable=False,
|
|
server_default=None
|
|
)
|
|
|
|
op.alter_column('client_profiles', 'updated_at',
|
|
existing_type=sa.DateTime(timezone=True),
|
|
nullable=False,
|
|
server_default=None
|
|
)
|