> ## Documentation Index
> Fetch the complete documentation index at: https://woku.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Registro de auditoría

> Quién hizo qué en tu empresa, cuándo y desde dónde. Filtros, paginación y export CSV.

Cada empresa en Woku tiene un **registro de auditoría** propio que
captura todas las acciones críticas ejecutadas por sus usuarios.

## Acceder al registro

1. En **admin.woku.app**, ve a **Empresa → Registro de auditoría**.
2. Verás una tabla paginada (25 entradas por página) con las
   acciones más recientes arriba.

## Qué eventos quedan registrados

| Categoría     | Eventos registrados                                                                                                                                                                                              |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Autenticación | `auth.login`, `auth.logout`, `auth.lockout`, `auth.unlock`, `auth.session.revoke`, `auth.mfa.enroll.start`, `auth.mfa.enroll.confirm`, `auth.mfa.verify`, `auth.mfa.disable`, `auth.mfa.backup-codes.regenerate` |
| Empresa       | `company.create`, `company.update`, `company.add-admin`, `company.remove-member`                                                                                                                                 |
| Usuario       | `user.create`, `user.update-name`, `user.update-email`, `user.password-recover`                                                                                                                                  |
| Woku          | `woku.create`, `woku.update`, `woku.delete`, `woku.close`                                                                                                                                                        |
| Formulario    | `form.create`, `form.update`, `form.delete`                                                                                                                                                                      |

Cada entrada incluye:

* **Fecha/hora** exacta (ISO 8601 con milisegundos).
* **Acción** (uno de los códigos de arriba).
* **Recurso** afectado y su ID cuando aplica.
* **Actor**: email del usuario que ejecutó la acción (cuando hay
  sesión autenticada).
* **IP** del request (extraída de `x-forwarded-for` o IP directa).

## Filtrar

La barra de filtros permite combinar:

* **Acción** (texto exacto, por ejemplo `auth.login`).
* **Recurso** (texto exacto, por ejemplo `user` o `woku`).
* **Email del actor**.
* **Rango de fechas** (Desde / Hasta, ambas opcionales).

Haz clic en **Aplicar** para refrescar la tabla con los filtros.
**Limpiar** vuelve al estado sin filtros.

## Exportar a CSV

El botón **Exportar CSV** descarga todas las entradas que coinciden
con los filtros actuales (la paginación se ignora; siempre exporta el
match completo). El archivo se llama
`audit-log-YYYY-MM-DD.csv` y contiene las columnas:

```
timestamp,action,resource,resourceId,actorEmail,actorId,companyId,ip,userAgent
```

Las comillas, comas y saltos de línea se escapan según RFC 4180.

## Retención

* **Default**: 365 días. Pasada esa fecha, MongoDB elimina las
  entradas vía un TTL index per-documento (`expireAt`).
* **Configurable per-empresa**: una mejora pendiente expondrá el
  ajuste en la UI de Settings. Por ahora la retención se puede
  customizar contactando a soporte.

## Garantías

* **Audit fire-and-forget**: el registro de un evento NUNCA bloquea
  ni revierte la acción auditada. Si la base de auditoría está caída,
  la acción sigue su curso y el fallo se loguea internamente.
* **Aislamiento per-empresa**: el filtro `companyId` siempre se aplica
  en queries del UI. No hay manera de listar acciones de otra
  empresa.
* **Inmutable**: las entradas no se editan ni se borran a mano. Solo
  expiran por TTL.
