Activity Feed y actualizaciones¶
Hardhat Flow registra dos tipos de actividad: ActivityLog (generado por el sistema, registro de auditoría inmutable) y Updates (notas y fotos publicadas por usuarios). Ambos aparecen en contexto en Bids y Jobs. El Dashboard Feed agrega actividad y alertas relevantes por rol.
ActivityLog (generado por el sistema)¶
El ActivityLog es un registro de auditoría inmutable generado por el sistema. Cada cambio significativo crea automáticamente una entrada de ActivityLog. Ningún usuario puede editar ni eliminar un registro de ActivityLog en ningún caso.
Los registros del ActivityLog son permanentes. No pueden editarse, eliminarse ni borrarse con eliminación lógica — ni siquiera por Platform Admin.
Qué se almacena¶
Cada entrada del ActivityLog contiene:
| Field | Description |
|---|---|
entity_type |
Tipo de objeto afectado (ej. bid, job, invoice, user). |
entity_id |
ID del registro afectado. |
action_type |
Categoría del cambio. Vea la tabla abajo. |
performed_by |
Usuario que disparó la acción (o system para acciones automáticas). |
metadata |
Objeto JSON con diff antes/después de campos modificados u otros datos. |
created_at |
Marca de tiempo UTC de cuándo ocurrió la acción. |
Tipos de acción¶
| Action Type | Qué lo dispara |
|---|---|
status_change |
Cualquier transición de estado en Bid, Job o Invoice. |
field_update |
Cambia el valor de un campo en Bid, Job o Invoice. El metadata contiene un diff JSON. |
assignment |
Se asigna o quita un trabajador o PM/Supervisor de un Job. |
blocked_change |
Se activa o quita la bandera blocked en un Bid o Job. |
subcontractor_added |
Se agrega o quita un subcontratista de un Job. |
payment_recorded |
Se registra un pago contra un Invoice. |
login |
Un usuario autentica correctamente. |
role_change |
Un Owner o Platform Admin cambia el rol de un usuario. |
invoice_edit |
Se modifica cualquier campo de un Invoice después de crearlo. |
admin_action |
Un Platform Admin realiza una operación administrativa (ej. eliminación lógica, aprovisionamiento de inquilino). |
tenant_provisioned |
Se crea un nuevo inquilino y se provisiona su base de datos. |
Por qué es inmutable¶
El ActivityLog es el registro legal y operativo del sistema. Garantiza que:
- Todo cambio puede rastrearse a un usuario y momento específicos.
- Nadie puede borrar su huella eliminando entradas del log.
- Las disputas sobre qué ocurrió — y cuándo — pueden resolverse de forma objetiva.
Updates (generadas por usuarios)¶
Las Updates son notas manuales que los usuarios publican directamente en un Bid o Job. Admiten texto libre y archivos adjuntos de fotos.
Publicar una actualización¶
- Cualquier usuario con acceso al Bid o Job puede publicar una actualización.
- Las actualizaciones admiten contenido de texto y fotos adjuntas (vea Photos).
- Las actualizaciones no son editables después de publicarse en V1. Si hay error, publique una actualización de seguimiento para aclarar.
- Las actualizaciones no se eliminan — todas las eliminaciones en el sistema son lógicas y debe iniciarlas Platform Admin.
La política de no edición en Updates asegura un registro confiable de comunicaciones y observaciones en el proyecto.
Quién puede ver las Updates¶
- Todo usuario asignado al Bid o Job relevante puede ver las actualizaciones publicadas en esa entidad.
- El Owner puede ver todas las actualizaciones en todas las entidades.
- Accounting puede ver actualizaciones en Invoices y Jobs pero no publicarlas directamente.
Dashboard Feed¶
El Dashboard Feed es la página de inicio para todos los usuarios. Muestra un flujo reciente de actividad y alertas activas acotado por rol.
Visibilidad por rol¶
Ve todo: todos los Bids, todos los Jobs, todas las alertas del inquilino. Panorama completo de operaciones.
Ve actividad y alertas para Bids y Jobs donde es el PM asignado — su jerarquía completa.
Ve actividad y alertas solo para Jobs donde es el Supervisor asignado.
Ve actividad relacionada con Invoices y cambios de estado. Sin alertas operativas.
No tiene Dashboard Feed. Solo ve su lista de Jobs asignados.
Panel de alertas¶
El Dashboard muestra tres categorías de alertas de forma destacada:
| Alert Type | Trigger | Who Sees It |
|---|---|---|
| Priority | Cualquier Bid o Job con priority = true. |
Owner (todos), PM (sus elementos), Supervisor (sus Jobs). |
| Blocked | Cualquier Bid o Job con blocked = true. |
Owner (todos), PM (sus elementos), Supervisor (sus Jobs). |
| Stale Jobs | Cualquier Job In Progress sin cambio de estado más allá del umbral “stale” (predeterminado: 14 días). | Owner (todos), PM (sus elementos). |
El umbral de Jobs \"stale\" es configurable por inquilino en CompanySettings. El valor predeterminado es 14 días de inactividad.