Automatically keep the real dated dividend ledger fresh inside the app's own
refresh loop (this app runs on its own server, independent of Hermes):
- backend/app/scheduler.py: AppDataScheduler gained a cooldown-gated
_maybe_refresh_dated_dividends() that fetches real dated dividend history
(siamchart /stock-info) into data/dividends/ledger.json at most once per
dividend_cooldown_seconds (default 6h) — dividend history changes only a
few times a year, so we never hammer the source every refresh tick. The
fetch is non-fatal: a network failure leaves the previous ledger intact.
- backend/app/__init__.py: passes DIVIDEND_REFRESH_COOLDOWN_SECONDS to the
scheduler (default 21600s).
- tests: cooldown fires once then skips, and refetches after it elapses (2)
— full backend 294 passed.