chore: sincronizar cambios pendientes de desarrollo a produccion

This commit is contained in:
2026-09-30 11:48:32 +02:00
parent dc545c9d86
commit c2dbe773a4
7 changed files with 609 additions and 10 deletions
+23
View File
@@ -77,6 +77,15 @@ También puedes usar el script de npm:
npm run notify:test -- --token "<FCM_DEVICE_TOKEN>" --dry-run
```
## API: Listado de viajes
Endpoint: `GET /api/trips`
Auth: `Bearer <JWT>` obligatorio.
Parametros opcionales: `page` (default `1`), `limit` (default `25`, maximo `100`), `status_ids` separado por comas, `date_from` y `date_to` en formato `YYYY-MM-DD`.
La respuesta mantiene `trips` con los campos legacy de cada viaje y añade `page`, `limit`, `total` y `has_more`. La paginacion y filtros se aplican en SQL. El orden estable del listado es `COALESCE(p.fecha_salida, v.fecha_salida) DESC, p.id_viaje DESC`.
## Fotos de estado de viaje (almacenamiento temporal dual)
Para `POST /api/trips/:id/status`, las fotos pueden guardarse en local y replicarse por SFTP en paralelo.
@@ -103,6 +112,20 @@ TRIP_STATUS_SFTP_PASSWORD=********
TRIP_STATUS_SFTP_REMOTE_BASE_DIR=/var/www/vhosts/gestion.abianservice.com/httpdocs/produccion/app/fotos_estado_react_native
```
## Diagnostico de subidas desde la app
Las peticiones `POST` multipart dejan eventos JSON en `POSTS_LOG_PATH` (por defecto,
`/var/log/posts.log`):
- `upload_request_started`: la API recibio la peticion.
- `upload_request_finished`: incluye estado HTTP, duracion, fase del posible fallo y
resultado del parser multipart.
- `upload_request_interrupted`: el cliente o la conexion se cerro antes de terminar.
Todos los eventos de una peticion comparten `request_id`, que tambien se devuelve en
la cabecera `x-request-id`. No se registran el token, los valores del formulario, el
contenido del archivo ni su nombre original.
## API: Crear incidencia de viaje
Endpoint: `POST /api/trips/:tripId/incidencias`