Files
dh-inspeccion-v2/scripts/phase-d5-3-1-acceptance.sh
T

83 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
ROOT="${ROOT:-/var/www/dhv2.korexlabs.com}"
cd "$ROOT"
DB_SERVICE="${DB_SERVICE:-db}"
API_URL="${API_URL:-http://127.0.0.1:3101/api/v3}"
psql_app() {
docker compose exec -T "$DB_SERVICE" sh -lc \
'psql -U "$POSTGRES_USER" -d "$POSTGRES_DB" -At -v ON_ERROR_STOP=1' <<<"$1"
}
echo "========== D5.3.1 · VERSIONES =========="
API_VERSION="$(node -p "require('./api-v3/package.json').version")"
WEB_VERSION="$(node -p "require('./web-v2/package.json').version")"
[[ "$API_VERSION" == "0.19.3-1" ]]
[[ "$WEB_VERSION" == "0.19.3-1" ]]
echo "API: $API_VERSION"
echo "WEB: $WEB_VERSION"
echo
echo "========== D5.3.1 · MIGRACIONES =========="
MIGRATION_OUTPUT="$(docker compose --profile tools run --rm migrate npm run migration:show 2>&1)"
echo "$MIGRATION_OUTPUT"
grep -q "Pending migrations: no" <<<"$MIGRATION_OUTPUT"
echo
echo "========== D5.3.1 · HEALTH =========="
HEALTH="$(curl -fsS "$API_URL/health")"
echo "$HEALTH"
grep -q '"version":"0.19.3-1"' <<<"$HEALTH"
grep -q '"phase":"D5.3.1"' <<<"$HEALTH"
echo
echo "========== D5.3.1 · BOOTSTRAP PROTEGIDO =========="
STATUS_CODE="$(curl -sS -o /tmp/dhv2-d531-bootstrap-status.txt -w '%{http_code}' "$API_URL/asset-types/bootstrap-status")"
[[ "$STATUS_CODE" == "401" ]]
echo "/asset-types/bootstrap-status sin sesión: 401 OK"
POST_CODE="$(curl -sS -o /tmp/dhv2-d531-bootstrap-post.txt -w '%{http_code}' -X POST "$API_URL/asset-types/bootstrap-defaults")"
[[ "$POST_CODE" == "401" ]]
echo "/asset-types/bootstrap-defaults sin sesión: 401 OK"
echo
echo "========== D5.3.1 · PRESET EN SOURCE =========="
grep -q "mendoza-hidrocarburos-v1" api-v3/src/asset-master/asset-master-bootstrap.ts
grep -q "Área / Concesión" api-v3/src/asset-master/asset-master-bootstrap.ts
grep -q "Empresa / Operadora" api-v3/src/asset-master/asset-master-bootstrap.ts
grep -q "Instalación de superficie" api-v3/src/asset-master/asset-master-bootstrap.ts
grep -q "Ducto / Cañería" api-v3/src/asset-master/asset-master-bootstrap.ts
grep -q "MASTER_BOOTSTRAP_REQUIRES_EMPTY_MASTER" api-v3/src/asset-master/asset-types.service.ts
grep -q "ASSET_MASTER_BOOTSTRAPPED" api-v3/src/database/entities/audit-event.entity.ts
echo "Preset, bloqueo de Maestro no vacío y auditoría: OK"
echo
echo "========== D5.3.1 · DASHBOARD =========="
grep -q "Instalar configuración base" web-v2/src/pages/AssetTypesPage.tsx
grep -q "No carga datos reales automáticamente" web-v2/src/pages/AssetTypesPage.tsx
grep -q "0.19.3-1" web-v2/src/config/version.ts
echo "Configuración inicial visible y footer correcto: OK"
echo
echo "========== D5.3.1 · ESTADO DEL MAESTRO =========="
TYPE_COUNT="$(psql_app 'SELECT COUNT(*) FROM asset_types;')"
ASSET_COUNT="$(psql_app 'SELECT COUNT(*) FROM assets;')"
echo "Tipos actuales: $TYPE_COUNT"
echo "Activos actuales: $ASSET_COUNT"
if [[ "$TYPE_COUNT" == "0" ]]; then
echo "Maestro vacío: el botón de configuración inicial quedará habilitado."
else
echo "Maestro ya configurado: el backend rechazará una nueva inicialización automática."
fi
echo
echo "========== D5.3.1 · CONTENEDORES =========="
docker compose ps -a
echo
echo "ACEPTACIÓN DE FASE D5.3.1: OK"