All checks were successful
Deploy / deploy (push) Successful in 57s
Status now reads "Sent" when the confirmation click lands, since that only means MassPrice accepted the run request, not that it finished — their own processing is async and takes anywhere from ~1 to ~22 minutes in observed practice. A new "Complete" column tracks that separately: run_rule() captures a watermark (the target rule's current top data-activitylogid on /Activity/List, not the displayed timestamp string, to sidestep fragile date/timezone parsing) before submitting, and scheduler.py schedules a one-off verify_run() job VERIFY_DELAY_MINUTES later to check whether a new "Complete" entry appeared past that watermark. rebuild_jobs() now only clears recurring "rule-*" jobs, not the one-off "verify-*" jobs, so editing a schedule can't cancel a verification that's already in flight for an earlier run. Also scopes the Activity page to the last 24 hours per request. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H6TgffxTvYhqxykAbVQg2v
23 lines
838 B
YAML
23 lines
838 B
YAML
services:
|
|
massprice:
|
|
build: .
|
|
container_name: massprice
|
|
# Headless Chromium's default /dev/shm (64MB) is too small in Docker
|
|
# and causes renderer crashes — this is the standard mitigation.
|
|
shm_size: "1gb"
|
|
ports:
|
|
- "${HOST_PORT:-5057}:5000"
|
|
volumes:
|
|
# Schedules, run history, the rule-name cache, and the saved
|
|
# MassPrice login session must outlive `up -d --build`, which
|
|
# recreates the container and discards its filesystem.
|
|
- ./data:/data
|
|
environment:
|
|
- LOGIN_PASSWORD=${LOGIN_PASSWORD}
|
|
- SECRET_KEY=${SECRET_KEY}
|
|
- TZ=${TZ:-America/Phoenix}
|
|
- VERIFY_DELAY_MINUTES=${VERIFY_DELAY_MINUTES:-10}
|
|
- GMAIL_USER=${GMAIL_USER:-}
|
|
- GMAIL_APP_PASSWORD=${GMAIL_APP_PASSWORD:-}
|
|
- ALERT_EMAIL=${ALERT_EMAIL:-}
|
|
restart: unless-stopped
|