Saltar a contenido

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:00
  • version: literal v1
  • event: 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 con tracing::warn y no devuelven error al cliente.

Regla

  • Al añadir un nuevo tipo de acción auditable, usar activity_log::append_activity con un event consistente (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