← 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"