Files
MT/modelos.py
2026-07-01 20:40:09 +00:00

82 lines
1.9 KiB
Python

from dataclasses import dataclass, field
from datetime import date
from typing import Optional, List
@dataclass
class Articulo:
id_articulo: str
codigo: str
descripcion: str
@dataclass
class Recurso:
id_recurso: str
nombre: str
tipo: str # e.g., 'MAQUINA', 'HM'
@dataclass
class Operario:
id_operario: str
nombre: str
legajo: str
@dataclass
class TiemposElemento:
elemento: str
valoracion: float
minutos: float
segundos: float
elementos_medidos: int = 1
lote_frecuencial: float = 1.0
suplemento: float = 0.0
@dataclass
class Relevamiento:
id_relevamiento: Optional[str] = None
id_tarea: Optional[int] = None
articulo: Optional[Articulo] = None
operacion: str = ""
recurso: Optional[Recurso] = None
hm: Optional[Recurso] = None
operario: Optional[Operario] = None
fecha: date = field(default_factory=date.today)
postura: str = "pie" # pie o sentado
piezas_por_golpe: int = 1
articulos_por_golpe: int = 1
operarios_maquina: int = 1
tiempos: List[TiemposElemento] = field(default_factory=list)
@dataclass
class Informe:
id_informe: Optional[str] = None
relevamiento: Optional[Relevamiento] = None
tiempo_estandar_op: float = 0.0
cadencia_ph: float = 0.0
cadencia_h1000: float = 0.0
estandar_epicor: float = 0.0
dotacion_epicor: int = 1
@dataclass
class Usuario:
"""
Representa un usuario del sistema para autenticación y RBAC.
"""
id_usuario: int
username: str
password_hash: str
rol: str # "METODISTA" o "JEFE/GERENTE"
nombre: str
@dataclass
class Tarea:
"""
Representa una tarea o solicitud de relevamiento a mostrar en el Dashboard.
"""
id_tarea: int
titulo: str
descripcion: str
estado: str # "Pendiente", "En Proceso", "Completado", "Finalizado", "Cerrado"
fecha: str
informe_url: str
id_usuario_asignado: Optional[int] = None