new-site/infra/ansible/roles/worker-crons/defaults/main.yml
justin f8cd37ac8c Initial commit — Performance West telecom compliance platform
Includes: API (Express/TypeScript), Astro site, Python workers,
document generators, FCC compliance tools, Canada CRTC formation,
Ansible infrastructure, and deployment scripts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 06:54:22 -05:00

159 lines
6.5 KiB
YAML

---
# worker-crons defaults
#
# Each entry in `worker_crons` deploys a systemd .service + .timer pair.
# Times use systemd OnCalendar syntax (see `man systemd.time`).
#
# The service runs inside the workers container via
# docker compose exec -T workers python -m <module>
#
# Why systemd timers not crond: timers log to journald (queryable with
# `journalctl -u <name>.service`), support OnBootSec/Persistent for catch-up
# after a downed host, and inherit the docker daemon restart policy
# without additional tooling.
project_dir: /opt/performancewest
worker_crons:
# USF quarterly factor — polls USAC daily at 09:00 Chicago local.
- name: pw-usf-factor-monitor
description: Poll USAC for new USF quarterly contribution factor
module: scripts.workers.usf_factor_monitor
on_calendar: "*-*-* 14:00:00 UTC" # 09:00 CT
persistent: true
# De minimis factor presence — 3am daily, alerts if missing.
- name: pw-deminimis-factor-check
description: Alert if fcc_deminimis_factors missing for current/next year
module: scripts.workers.deminimis_factor_check
on_calendar: "*-*-* 03:00:00 UTC"
persistent: true
# Cold wallet sweep — every 30 min.
- name: pw-cold-wallet-sweep
description: Sweep SHKeeper hot-wallet excess to cold wallet
module: scripts.workers.cold_wallet_sweeper
on_calendar: "*-*-* *:00,30:00 UTC"
persistent: false
# Crypto payment worker — every 60s while we have pending jobs.
- name: pw-crypto-payment-worker
description: Advance crypto_payment_jobs state machine
module: scripts.workers.crypto_payment_worker
on_calendar: "*-*-* *:*:00 UTC"
persistent: false
# Relay deposit monitor — every 5 min, polls IMAP for Relay alerts.
- name: pw-relay-deposit-monitor
description: Parse Relay email alerts into relay_deposits
module: scripts.workers.relay_deposit_monitor
on_calendar: "*-*-* *:00/5:00 UTC"
persistent: false
# Commission worker — 02:00 daily (flips 14-day-eligible rows to eligible).
- name: pw-commission-worker
description: Flip commission_ledger rows to eligible after 14-day holdback
module: scripts.workers.commission_worker
on_calendar: "*-*-* 02:00:00 UTC"
persistent: true
# Renewal worker — 04:00 daily.
- name: pw-renewal-worker
description: Send renewal reminders + auto-renew RA/annual report/CDR
module: scripts.workers.renewal_worker
on_calendar: "*-*-* 04:00:00 UTC"
persistent: true
# CDR retention sweeper — 05:00 daily (purges past-retention CDR).
- name: pw-cdr-retention
description: Purge CDR older than the per-profile retention window
module: scripts.workers.cdr_retention_sweeper
on_calendar: "*-*-* 05:00:00 UTC"
persistent: true
# CDR unlock nudge — 10:00 daily (emails customers with locked studies).
- name: pw-cdr-unlock-nudge
description: Nudge customers whose CDR study is locked behind paywall
module: scripts.workers.cdr_unlock_nudge
on_calendar: "*-*-* 15:00:00 UTC" # 10:00 CT
persistent: true
# Payment reminder — 11:00 daily.
- name: pw-payment-reminder
description: Remind customers with unpaid compliance orders
module: scripts.workers.payment_reminder
on_calendar: "*-*-* 16:00:00 UTC" # 11:00 CT
persistent: true
# RMD removed scraper — weekly, Wednesday 08:00 (tracks FCC RMD removals).
- name: pw-fcc-rmd-removed
description: Scrape FCC public list of RMD-removed carriers
module: scripts.workers.fcc_rmd_removed_scraper
on_calendar: "Wed *-*-* 13:00:00 UTC"
persistent: true
# Client email processor — every 15 min, IMAPs regulatory mailboxes for
# CRTC pipeline events (incoming agency replies, domain activation, etc.).
- name: pw-client-email-processor
description: Parse regulatory mailbox replies for CRTC pipeline advancement
module: scripts.workers.client_email_processor
on_calendar: "*-*-* *:00/15:00 UTC"
persistent: false
# AMB location scraper — daily 06:00 UTC, pulls current per-mailbox pricing
# and sold-out status for the CRTC AMB picker.
- name: pw-amb-location-scraper
description: Scrape current Anytime Mailbox location + pricing catalog
module: scripts.workers.amb_location_scraper
on_calendar: "*-*-* 06:00:00 UTC"
persistent: true
# Compliance alert mailing list — weekly Sunday 06:00 UTC.
# Queries local DB for carriers behind on filings and upserts to Listmonk.
- name: pw-compliance-alert-list
description: Update Listmonk compliance alert mailing list from local FCC data
module: scripts.workers.compliance_alert_list
on_calendar: "Sun *-*-* 06:00:00 UTC"
persistent: true
# Entity cache refresh — daily 07:00 UTC (2am CT).
# Downloads business entity data from state Socrata APIs (CO, IA, CT, OR, NY)
# into entity_cache for corporation status checks.
- name: pw-entity-cache-refresh
description: Refresh entity_cache from state SOS open data portals
module: scripts.formation.bulk_download --all
on_calendar: "*-*-* 07:00:00 UTC"
persistent: true
# Multi-state entity scraper — daily 08:00 UTC (3am CT).
# Scrapes state SOS portals via Playwright for states without bulk APIs.
# Covers 44 states (excludes CO, IA, CT, OR, NY, FL which use bulk data).
- name: pw-entity-scraper
description: Scrape business entities from state SOS portals via Playwright
module: scripts.workers.entity_scraper --all
on_calendar: "*-*-* 08:00:00 UTC"
persistent: true
# Florida entity downloader — daily 07:30 UTC.
# Downloads daily diffs from FL Sunbiz SFTP (free public access).
- name: pw-fl-entity-downloader
description: Download Florida Sunbiz corporation data via SFTP
module: scripts.workers.fl_entity_downloader --daily
on_calendar: "*-*-* 07:30:00 UTC"
persistent: true
# RMD email scraper — daily 09:00 UTC (4am CT).
# Scrapes contact emails from FCC ServiceNow SP API for RMD carriers.
- name: pw-rmd-email-scraper
description: Scrape RMD contact emails from FCC ServiceNow portal
module: scripts.workers.fcc_rmd_scraper --phase scrape --limit 500
on_calendar: "*-*-* 09:00:00 UTC"
persistent: true
# RMD filing auditor — weekly Saturday 10:00 UTC (5am CT).
# Audits RMD filings for 2026 compliance deficiencies (PDF analysis).
- name: pw-rmd-auditor
description: Audit RMD filings for 2026 compliance deficiencies
module: scripts.workers.fcc_rmd_auditor --batch --year 2026 --no-ollama
on_calendar: "Sat *-*-* 10:00:00 UTC"
persistent: true