Registro de actividad (CSV) — Backend
Qué es
- Fichero CSV por local:
{regstr_path}/{place_id:05}_activity.csv. Ej:00042_activity.csv. - Uso: auditoría de acciones por lugar (quién hizo qué y cuándo). No sustituye logs de aplicación; es un registro de negocio por place.
Formato
- Cabecera:
date;version;event;actor;affected;details - Campos:
date: ISO con timezone, ej.2025-02-25 14:30:00.123+00:00version: literalv1event: tipo de evento (ej.clock_in,staff_created,time_change_requested,document_uploaded,document_deleted)actor: identificador del que hace la acción (user_id o sesión)affected: entidad afectada (staff_id, time_control_id, etc.)details: texto libre; se escapan;y newline (reemplazo por,y espacio)
No hay cadena de hashes (hash chain). El CSV es append-only; la integridad depende del sistema de ficheros y de copias de seguridad. Si en el futuro se añade hash chain, este documento se actualizará y la lógica se documentará aquí.
Dónde se escribe
infrastructure/activity_log.rs:append_activity(config, place_id, event, actor, affected, details). Se llama desde handlers tras operaciones relevantes (fichaje, alta de empleado, modificación de jornada, etc.). La escritura es asíncrona (spawn_blocking); los fallos se registran contracing::warny no devuelven error al cliente.
Regla
- Al añadir un nuevo tipo de acción auditable, usar
activity_log::append_activitycon uneventconsistente (snake_case) y documentar el nuevo valor en esta sección o en un comentario en código.
Eventos de documentos
document_uploaded: actor=user_id, affected=doc_id, details="tipo filename"document_deleted: actor=user_id, affected=doc_id, details=filename