← back to Lawyer Directory Builder

scripts/build-agent/progress.sh

54 lines

#!/bin/bash
# Lawyer Build Agent — hourly progress snapshot.
# Records: variant counts, firms-with-3-unique, last-hour throughput.
set -euo pipefail

PROJ="/Users/macstudio3/Projects/lawyer-directory-builder"
LOG="$PROJ/logs/build-agent/progress.log"
SNAP="$PROJ/logs/build-agent/snapshot.json"
mkdir -p "$(dirname "$LOG")"
ts() { date -u +%Y-%m-%dT%H:%M:%SZ; }

# Snapshot of current build state. read returns 1 if no trailing newline, hence `|| true`.
read -r MOCK_TOTAL MOCK_X1 MOCK_X2 MOCK_X3 MOCK_X1H FIRMS_3UNIQUE FIRMS_LA_LEFT < <(
  psql -d lawyer_professional_directory -tA -F ' ' <<'SQL' | tr '\n' ' '
SELECT
  (SELECT COUNT(*) FROM site_mockups),
  (SELECT COUNT(*) FROM site_mockups WHERE variant='x1'),
  (SELECT COUNT(*) FROM site_mockups WHERE variant='x2'),
  (SELECT COUNT(*) FROM site_mockups WHERE variant='x3'),
  (SELECT COUNT(*) FROM site_mockups WHERE variant IN ('x1','x2','x3') AND generated_at > NOW() - INTERVAL '1 hour'),
  (SELECT COUNT(*) FROM (
     SELECT organization_id FROM site_mockups WHERE variant IN ('x1','x2','x3')
     GROUP BY organization_id HAVING COUNT(DISTINCT variant) = 3
  ) z),
  (SELECT COUNT(*) FROM organizations
     WHERE type='law_firm' AND website IS NOT NULL
       AND LOWER(city) IN (
         'los angeles','beverly hills','santa monica','pasadena','long beach','glendale',
         'burbank','culver city','west hollywood','el segundo','torrance','hermosa beach',
         'manhattan beach','sherman oaks','encino','studio city','van nuys','marina del rey',
         'hollywood','north hollywood','inglewood','redondo beach','westwood','brentwood',
         'century city','pacific palisades','malibu','calabasas','woodland hills','tarzana'
       )
       AND id NOT IN (
         SELECT organization_id FROM site_mockups WHERE variant IN ('x1','x2','x3')
         GROUP BY organization_id HAVING COUNT(DISTINCT variant) = 3
       )
  )
SQL
) || true

cat > "$SNAP" <<EOF
{
  "ts": "$(ts)",
  "mockups_total": $MOCK_TOTAL,
  "x1": $MOCK_X1, "x2": $MOCK_X2, "x3": $MOCK_X3,
  "unique_last_hour": $MOCK_X1H,
  "firms_with_3_unique": $FIRMS_3UNIQUE,
  "la_county_remaining": $FIRMS_LA_LEFT
}
EOF

echo "[$(ts)] mockups=$MOCK_TOTAL x1=$MOCK_X1 x2=$MOCK_X2 x3=$MOCK_X3 1hr=$MOCK_X1H complete=$FIRMS_3UNIQUE remaining=$FIRMS_LA_LEFT" >> "$LOG"