# 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.