chore: import DH V2 D5.6.4 production baseline
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# DH Inspección V2 — Fase A5
|
||||
|
||||
## Versión
|
||||
|
||||
```text
|
||||
v0.5.0 · Fase A5 · Auditoría, filtros y trazabilidad
|
||||
```
|
||||
|
||||
## Endpoints
|
||||
|
||||
```text
|
||||
GET /api/v3/audit
|
||||
GET /api/v3/audit/:id
|
||||
```
|
||||
|
||||
Ambos requieren:
|
||||
|
||||
```text
|
||||
audit.read
|
||||
```
|
||||
|
||||
## Listado
|
||||
|
||||
El listado devuelve únicamente la información necesaria para una grilla:
|
||||
|
||||
```text
|
||||
fecha/hora
|
||||
usuario
|
||||
acción
|
||||
entidad
|
||||
request ID
|
||||
origen
|
||||
IP
|
||||
indicador de detalle
|
||||
```
|
||||
|
||||
Los objetos `beforeData`, `afterData` y `metadata` se reservan para la consulta
|
||||
individual, evitando respuestas innecesariamente pesadas.
|
||||
|
||||
## Filtros
|
||||
|
||||
```text
|
||||
page
|
||||
pageSize
|
||||
actorUserId
|
||||
actorUsername
|
||||
action
|
||||
source
|
||||
entityType
|
||||
entityId
|
||||
requestId
|
||||
from
|
||||
to
|
||||
search
|
||||
```
|
||||
|
||||
`pageSize` admite hasta 100 resultados. `from` y `to` usan ISO 8601 y se
|
||||
rechaza un rango en el que la fecha inicial sea posterior a la final.
|
||||
|
||||
La respuesta paginada conserva el contrato:
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [],
|
||||
"meta": {
|
||||
"page": 1,
|
||||
"pageSize": 25,
|
||||
"total": 0,
|
||||
"totalPages": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Detalle
|
||||
|
||||
Además de los campos del listado devuelve:
|
||||
|
||||
```text
|
||||
userAgent
|
||||
beforeData
|
||||
afterData
|
||||
metadata
|
||||
```
|
||||
|
||||
La escritura continúa pasando por `sanitizeAuditData`, que elimina passwords,
|
||||
hashes, JWT, refresh tokens, cookies, encabezados de autorización y secretos.
|
||||
|
||||
## Migraciones
|
||||
|
||||
A5 no cambia el esquema y no incluye migraciones.
|
||||
Reference in New Issue
Block a user