feat: Convertir módulo de clases para usar TenantCRUDRoutes

Cambios en backend:
- Actualizado ClassResponseDTO con campos de tenant y timestamps
- Agregados métodos estáticos en servicio (get_all, get_by_id, create, update, delete)
- Reemplazados endpoints de rutas con inicialización de TenantCRUDRoutes
- Corregida ruta de importación del modelo Company en security.py
- Actualizados nombres de campos en DTO para coincidir con modelo (description_es/en)
- Agregada validación para constraint de foreign key de material_key
- Agregada validación de class_code duplicado en método create
- Agregado TimestampMixin al modelo Class
- Creada migración de Alembic para agregar columnas timestamp a tabla classes
- Corregido orden de parámetros en firma del método update

Cambios en frontend:
- Actualizados componentes de UI para módulo de clases
This commit is contained in:
KevinMrkz3221
2025-11-15 20:05:29 -06:00
parent 836083b428
commit 99aff32eea
15 changed files with 1703 additions and 295 deletions

View File

@@ -4,7 +4,7 @@ Modelos ORM para gestión de clases SCAII y SCAF
from typing import TYPE_CHECKING, Optional
from api.v1.common.base_models import TenantScopedMixin
from api.v1.common.base_models import TenantScopedMixin, TimestampMixin
from core.database import Base
from sqlalchemy import (
ForeignKey,
@@ -22,7 +22,7 @@ if TYPE_CHECKING:
from api.v1.modules.public.reference_data.material_types.models import MaterialType
class Class(Base, TenantScopedMixin):
class Class(Base, TenantScopedMixin, TimestampMixin):
"""
Modelo para la tabla GClases - Información de clases en sistemas SCAII y SCAF
"""