Cada orden de trabajo en TradelyHQ pasa por cuatro estados. Las transiciones se rastrean en audit_log para que pueda responder "quién cambió qué y cuándo" sin entrar por SSH a una base de datos.
Abierta
El estado predeterminado al crear una OT. Sin técnico asignado todavía. Visible para:
- Administrador (asignando técnico)
- Cliente (sabe que recibió su solicitud)
Salga del estado Abierta asignando un técnico y cambiando el estado a progress (Activa en la UI).
En espera
Use esto para "lo sabemos, no estamos trabajando activamente" — esperando piezas, esperando acceso, retraso por clima, aprobación pendiente del cliente. Visible para todas las partes; cuenta como "en progreso" pero se marca diferente en los dashboards.
Las OT en En espera por > 7 días aparecen en la pestaña Reportes del administrador como un resumen de "necesita atención".
Activa (status='progress')
El técnico va en camino, en sitio, o trabajando. Flujo del portal del técnico en este estado:
- Pre-llegada: fotos opcionales de ingreso, indicaciones de manejo
- Llegada: el check-in por GPS estampa lat/lng + timestamp en la OT
- En sitio: campos de diagnóstico y arreglo de finalización, captura de gastos, subida de fotos
- Salida: captura de firma del cliente, fotos finales de finalización, monto opcional de enlace de pago
- Marca (opcional): "Cotización requerida" si el trabajo excederá el NTE
Completa
El técnico marcó el trabajo como hecho. Disparadores:
- Se establece el timestamp
completed_at - Si el modelo de pago del técnico es "payment_link" e ingresó un monto final, se crea automáticamente un borrador de factura en Pendiente de Revisión para que el propietario lo autorice
- De lo contrario, la OT aparece en su cola Factura Pendiente para borrador manual
- El cliente tiene 3 días hábiles para firmar el informe de finalización (panel de firma en su portal). Después de eso, la OT se bloquea automáticamente; el cliente ya no puede reabrirla
Cancelada (booleano separado, no un estado)
Si un trabajo se cancela antes de la finalización, establezca cancelled=true con un motivo. La OT permanece en la auditoría (no la elimina) pero sale de las colas activas.
Reabierta
Un cliente puede solicitar una revisita en una OT completada si está dentro de 3 días hábiles. Esto establece reopened_at + reopened_reason y cambia el estado de regreso a progress. Después de 3 días hábiles, la OT está bloqueada y la solicitud tendría que ser una OT completamente nueva.
¿Por qué el bloqueo de 3 días hábiles?
Para prevenir el modo de fallo de "el cliente nunca firma el informe de finalización → limbo indefinido". Sin el bloqueo, un cliente molesto podría dejar una OT en un estado nunca confirmado para siempre, bloqueando facturación y atando reportes de auditoría. Después de 3 días hábiles, TradelyHQ marca automáticamente la firma como waived y trata la OT como totalmente cerrada.