Files
HOA_Financial_Platform/scripts
olsch01 a025c9e979 fix: health check now probes HTTP directly with 3-min timeout
The previous approach relied on Docker's container health status, but
Docker's healthcheck (start_period:30s + 3x15s retries = ~75s) marks
the container "unhealthy" before NestJS finishes cold-starting after a
fresh image build (New Relic + TypeORM + Redis + BullMQ init can take
2-3 minutes).

Changes:
- Primary check is now direct wget to localhost:3000/api from the host
- Docker health status used only for informational logging
- Total timeout increased from 130s to 190s (~3 min) for cold starts
- Early exit if container has stopped/exited (no point waiting)
- More backend log lines (30 vs 20) shown on failure for diagnostics

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 09:42:49 -04:00
..

HOA LedgerIQ - Scripts

Standalone scripts for data fetching, maintenance, and automation tasks.

CD Rate Fetcher

Scrapes the top 25 CD rates from Bankrate.com and stores them in the shared.cd_rates PostgreSQL table.

Note: Bankrate renders rate data dynamically via JavaScript, so this script uses Puppeteer (headless Chrome) to fully render the page before extracting data.

Prerequisites

  • Node.js 20+
  • PostgreSQL with the shared.cd_rates table (created by db/init/00-init.sql or db/migrations/005-cd-rates.sql)
  • A .env file at the project root with DATABASE_URL

Manual Execution

cd scripts
npm install
npx tsx fetch-cd-rates.ts

Cron Setup

To run daily at 6:00 AM:

# Edit crontab
crontab -e

# Add this line (adjust path to your project directory):
0 6 * * * cd /path/to/HOA_Financial_Platform/scripts && /usr/local/bin/npx tsx fetch-cd-rates.ts >> /var/log/hoa-cd-rates.log 2>&1

For Docker-based deployments, you can use a host cron job that executes into the container:

0 6 * * * docker exec hoa-backend sh -c "cd /app/scripts && npx tsx fetch-cd-rates.ts" >> /var/log/hoa-cd-rates.log 2>&1

Troubleshooting

  • 0 rates extracted: Bankrate likely changed their page structure. Inspect the page DOM in a browser and update the CSS selectors in fetch-cd-rates.ts.
  • Database connection error: Verify DATABASE_URL in .env points to the correct PostgreSQL instance. For local development (outside Docker), use localhost:5432 instead of postgres:5432.
  • Puppeteer launch error: Ensure Chromium dependencies are installed. On Ubuntu: apt-get install -y libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 libasound2