Conceptos clave¶
Entender estos conceptos le ayudará a comprender cómo está construido Hardhat Flow y por qué se comporta como lo hace.
1. Multi-inquilino¶
Hardhat Flow es una plataforma multi-inquilino. Cada empresa que usa Hardhat Flow es un tenant separado, y cada inquilino tiene una base de datos completamente aislada. No hay datos compartidos entre empresas: ni usuarios, ni Bids, ni Jobs, ni Invoices, nada.
El aislamiento por inquilino es absoluto.
Ninguna consulta, llamada a la API ni acción de usuario puede acceder a datos de otro inquilino. Esto se aplica en el middleware y el enrutador de base de datos, no solo filtrando en el código de la aplicación.
Esta arquitectura implica:
- Los datos de su empresa son solo suyos
- Una mala configuración en un inquilino no puede filtrar datos a otro
- La base de datos de cada inquilino puede administrarse, respaldarse y restaurarse de forma independiente
Solo los Platform Admins operan entre inquilinos, y lo hacen mediante una interfaz administrativa separada.
2. Control de acceso basado en roles¶
Cada usuario tiene exactamente un rol. Ese rol se asigna al crear la cuenta y determina todos los permisos del usuario en el sistema.
Los roles no son acumulativos.
No puede combinar roles. Un usuario es Project Manager o usuario de Accounting, no ambos. Si alguien necesita capacidades de varios roles, el Owner o Platform Admin debe evaluar qué rol encaja mejor.
Los permisos se aplican en cada extremo de la API, no solo en la interfaz. Aunque un usuario omitiera la UI, el servidor rechazaría solicitudes no autorizadas.
Los seis roles son:
| Role | Alcance |
|---|---|
| Platform Admin | Todos los inquilinos, nivel de sistema |
| Owner | Acceso total dentro de su empresa |
| Accounting | Solo registros financieros |
| Project Manager | Bids, Jobs (asignados), coordinación de campo |
| Supervisor | Solo Jobs asignados |
| Badge Worker | Solo Jobs asignados, lectura y actualización |
Vea Quién lo usa para el detalle y la Matriz de permisos para la cuadrícula completa.
3. Eliminación lógica (soft deletes)¶
En Hardhat Flow nada se elimina de forma permanente. Cuando un registro se “elimina”, queda marcado como inactivo y oculto de las vistas normales, pero permanece en la base de datos.
No hay eliminación definitiva en ninguna parte del sistema.
Aplica a usuarios, Bids, Jobs, Invoices, actualizaciones, fotos y demás registros.
Este diseño es intencional:
- Cumplimiento de auditoría — siempre tiene un historial completo
- Recuperación — los registros pueden restaurarse si se borraron por error
- Protección legal — los registros del proyecto se conservan aunque se desactive una cuenta
Si necesita “quitar” un registro, use el estado adecuado (por ejemplo, cancelar un Bid o Job). Contacte a un Platform Admin si un registro debe restaurarse.
4. Registro de auditoría inmutable¶
Cada acción en Hardhat Flow queda en el Activity Log. Este registro es solo de anexos: las entradas se escriben una vez y no pueden editarse ni eliminarse.
El Activity Log no puede modificarse por nadie, incluidos los Platform Admins.
Esto se aplica a nivel del modelo de datos, no solo por restricciones de rol.
El Activity Log captura:
- Cambios de estado en Bids, Jobs e Invoices
- Asignaciones y reasignaciones de usuarios
- Actualizaciones publicadas por el equipo de campo
- Registros de pago
- Cambios en banderas (bloqueado, prioridad)
Así obtiene un registro completo y defendible de todo lo ocurrido en un proyecto, útil para disputas, auditorías y revisiones posteriores. El Activity Feed es visible en cada página de detalle de Bid y Job para quienes tienen acceso adecuado.
5. La bandera Blocked¶
Cualquier Bid o Job puede marcarse como Blocked en cualquier momento por un Project Manager u Owner. La bandera Blocked es independiente del estado: un Job puede estar In Progress y bloqueado al mismo tiempo.
Cuando un registro se marca como bloqueado:
- La bandera es visible de inmediato en el detalle del Bid o Job
- Se envía una notificación SMS de forma asincrónica al Project Manager asignado y al Owner
- El registro conserva su estado actual — bloquear no pausa el flujo automáticamente
Use la bandera Blocked para escalar problemas que requieren atención.
Si un Job está detenido por materiales, permisos o decisiones del cliente, marcarlo como bloqueado pone el tema ante el liderazgo sin cambiar el estado operativo del Job.
Al quitar la bandera Blocked también se envía un SMS para que el equipo sepa que el tema quedó resuelto.
6. La bandera Priority¶
Cualquier Bid o Job puede marcarse como Priority para indicar que requiere atención urgente. Al igual que Blocked, Priority es ortogonal al estado y puede activarse en cualquier momento por un Project Manager u Owner.
Cuando un registro se marca como prioridad:
- Aparece un indicador visual en el Bid o Job en todas las vistas de lista
- Se envía un SMS al Project Manager y Owner asignados
Use Priority para destacar trabajo sensible al tiempo en tuberías ocupadas.
Las banderas Priority son visibles en listas y en el Dashboard, lo que facilita que Owners y PM identifiquen primero lo urgente.
Las banderas Priority y Blocked pueden configurarse de forma independiente: un registro puede ser ambas, una sola o ninguna.
7. Teléfono y pantallas pequeñas¶
En una pantalla estrecha o teléfono, las secciones principales de la aplicación (Dashboard, Bids, Jobs, Search y demás que permita su rol) aparecen en el menú que abre con el ícono arriba a la izquierda de la pantalla, no en una barra inferior. Toque ese ícono para moverse entre secciones; toque fuera del menú o el control de cierre para cerrarlo.