Files
mercadodevida/work/artifacts/F-155/implementer.md
2026-08-21 22:37:03 +02:00

66 lines
2.3 KiB
Markdown

# F-155 — Implementer evidence
## Cambios
### `project/docker-compose.yml`
- PostgreSQL y Redis ahora tienen `restart: unless-stopped`.
- Los volúmenes quedan con nombre explícito para no depender del nombre de proyecto de Docker Compose:
- PostgreSQL: `project_mdv_pg_data`
- Redis: `project_mdv_redis_data`
- Se conservaron los nombres existentes para no apartar/perder la DB activa.
- Redis ahora arranca con persistencia AOF:
- `--appendonly yes`
- `--appendfsync everysec`
- `--save 60 1`
- Redis tiene healthcheck `redis-cli ping`.
### `project/scripts/monolith.sh`
- `start_infrastructure()` ya no hace `docker start` directo de contenedores existentes.
- Ahora siempre usa `docker compose up -d postgres redis`, lo que permite reconciliar cambios de configuración sin perder volúmenes nombrados.
- Espera readiness de PostgreSQL y Redis.
### `project/scripts/check-persistence.mjs`
Nuevo check operacional:
- levanta infraestructura con Compose;
- escribe marcador en `app_meta` de PostgreSQL;
- escribe marcador en Redis;
- reinicia o recrea contenedores manteniendo volúmenes;
- comprueba que ambos marcadores siguen;
- muestra mounts reales y `appendonly` de Redis.
### `project/package.json`
Nuevo script:
```bash
npm run infra:persistence-check
npm run infra:persistence-check -- --recreate
```
## Verificación
```text
npm run infra:persistence-check -- --recreate ✅
npm run infra:persistence-check ✅
docker compose config ✅
monolith prod status ✅ backend/admin/frontend/storefront 200
DB products después de recrear contenedores ✅ 12
DB backoffice users después de recrear ✅ 1
Redis appendonly ✅ yes
npm run build ✅
npm test ✅ 191 passed / 56 skipped
eslint check-persistence.mjs ✅
prettier docker-compose/package/check script ✅
verify.sh ✅
git diff --check ✅
```
## Notas
- No se han cambiado los datos actuales: al usar los nombres existentes `project_mdv_pg_data` y `project_mdv_redis_data`, la DB actual sigue montada.
- Hay imágenes `uploads` untracked preexistentes en frontend/storefront; no pertenecen a F-155 y no se incluyen.