chore: add hourly INC ingest cron wrapper + schedule docs

run_ingest.sh loads .env and runs `import_tickets.py --from-bucket --apply`.
Documented crontab: `15 7-19 * * *` in Africa/Nairobi (ingest at :15, 07:00–19:00).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
david kiania 2026-06-15 19:40:50 +03:00
parent df054c92be
commit 4532643247
2 changed files with 41 additions and 2 deletions

View file

@ -62,8 +62,20 @@ python import_tickets.py --inc-csv 2026-06-15T17-00-00.csv --apply
``` ```
Dry-run is the default (omit `--apply`). `import_tickets.py --from-bucket` shells out to Dry-run is the default (omit `--apply`). `import_tickets.py --from-bucket` shells out to
the `aws` CLI using the `RUSTFS_*` env (no boto3 dependency). Hourly on the instance via the `aws` CLI using the `RUSTFS_*` env (no boto3 dependency).
cron `5 * * * *` (a few minutes after each export).
## Schedule (cron)
On the instance, ingest at **:15 past every hour, 07:0019:00 EAT** via
[`run_ingest.sh`](run_ingest.sh) (loads `.env`, runs `--from-bucket --apply`):
```cron
CRON_TZ=Africa/Nairobi
15 7-19 * * * /opt/fleettickets/run_ingest.sh >> /var/log/fleettickets-inc.log 2>&1
```
`CRON_TZ` matters — the export filenames and this schedule are in `Africa/Nairobi`.
Skip-if-unchanged means a run on an already-ingested snapshot is a cheap no-op.
## Notes ## Notes

27
run_ingest.sh Executable file
View file

@ -0,0 +1,27 @@
#!/usr/bin/env bash
# run_ingest.sh — fleettickets · hourly INC ingest wrapper for cron.
#
# Loads env from the local .env (DATABASE_URL + RUSTFS_* + GEOCODER_*) and runs the
# newest-INC-CSV ingest with --apply (skip-if-unchanged + archive are built in).
#
# Install on the instance (ingest at :15, 07:0019:00 EAT):
# 15 7-19 * * * /opt/fleettickets/run_ingest.sh >> /var/log/fleettickets-inc.log 2>&1
# Ensure the crontab runs in the Africa/Nairobi timezone (CRON_TZ=Africa/Nairobi or
# the host/container TZ), since the export filenames and the schedule are EAT.
set -euo pipefail
cd "$(dirname "$0")"
# Load .env if present (KEY=VALUE lines); never commit the real .env.
if [ -f .env ]; then
set -a
# shellcheck disable=SC1091
. ./.env
set +a
fi
# Prefer the project venv if it exists, else the python on PATH (e.g. in-container).
PY="python"
[ -x ".venv/bin/python" ] && PY=".venv/bin/python"
exec "$PY" import_tickets.py --from-bucket --apply