Files
html/api/scan-erp-gaps-all.sh

82 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# WEVAL — Master ERP Gap Scanner (D+C+B)
# Usage: scan-erp-gaps-all.sh
# Runs LLM gen (D) + RSS feeds (C) + Playwright G2 (B), then aggregates.
set -u
LOG_DIR=/var/log/weval
mkdir -p "$LOG_DIR"
TS=$(date +%Y%m%dT%H%M%S)
echo "═══════════════════════════════════════════"
echo "WEVAL ERP GAP SCANNER · $TS"
echo "═══════════════════════════════════════════"
# D — LLM sovereign (fastest, most reliable)
echo ""
echo "▶ OPTION D · LLM sovereign cascade"
timeout 480 python3 /var/www/html/api/scan-erp-gaps-llm.py > "$LOG_DIR/scan-llm-$TS.log" 2>&1
D_CODE=$?
tail -3 "$LOG_DIR/scan-llm-$TS.log"
echo " exit=$D_CODE log=$LOG_DIR/scan-llm-$TS.log"
# C — RSS feeds
echo ""
echo "▶ OPTION C · RSS consulting feeds"
timeout 180 python3 /var/www/html/api/scan-erp-gaps-rss.py > "$LOG_DIR/scan-rss-$TS.log" 2>&1
C_CODE=$?
tail -3 "$LOG_DIR/scan-rss-$TS.log"
echo " exit=$C_CODE log=$LOG_DIR/scan-rss-$TS.log"
# B — Playwright G2 scrape (slowest, skip if node missing)
echo ""
echo "▶ OPTION B · Playwright G2 public reviews"
if command -v node >/dev/null 2>&1; then
# Ensure deps installed in /var/www/html/api (one-time)
if [ ! -d /var/www/html/api/node_modules/playwright ]; then
echo " [BOOTSTRAP] installing node deps..."
cd /var/www/html/api && npm install playwright pg --no-save 2>&1 | tail -3
fi
cd /var/www/html/api
timeout 600 node /var/www/html/api/scan-erp-gaps-playwright.js > "$LOG_DIR/scan-pw-$TS.log" 2>&1
B_CODE=$?
tail -3 "$LOG_DIR/scan-pw-$TS.log"
echo " exit=$B_CODE log=$LOG_DIR/scan-pw-$TS.log"
else
echo " [SKIP] node not found"
B_CODE=-1
fi
# Summary
echo ""
echo "═══════════════════════════════════════════"
echo "SUMMARY · $(date -Iseconds)"
echo "═══════════════════════════════════════════"
PGPASSWORD=admin123 psql -h 10.1.0.3 -U admin -d adx_system -c "
SELECT
CASE
WHEN query LIKE 'llm_%' THEN 'LLM (D)'
WHEN query LIKE 'rss_%' THEN 'RSS (C)'
WHEN query LIKE 'playwright_%' THEN 'Playwright (B)'
ELSE 'Other (searxng)'
END AS source,
COUNT(DISTINCT erp_id) AS erps,
COUNT(*) AS gaps,
ROUND(AVG(confidence_score)::NUMERIC,3) AS avg_conf
FROM erp_gap_scans
GROUP BY source
ORDER BY gaps DESC;"
echo ""
echo "TOP ERPS BY GAP COUNT:"
PGPASSWORD=admin123 psql -h 10.1.0.3 -U admin -d adx_system -c "
SELECT erp_id, COUNT(*) AS gaps, ROUND(AVG(confidence_score)::NUMERIC,3) AS avg_conf
FROM erp_gap_scans
GROUP BY erp_id
ORDER BY gaps DESC
LIMIT 15;"
echo ""
echo "═══ DONE ═══"
exit 0