Public dashboard for 12-hour ap30 geomagnetic index forecasts. 공개 대시보드: 12시간 ap30 지자기 지수 예측.
- Deployed site: https://www.eunsu.me/ap-prediction/ (also at https://eunsu-park.github.io/ap-prediction/)
- Forecast model: eunsu-park/realtime-regression-sw
- Update cadence: every 30 min (cron
8,38 * * * *) - Architecture details / 상세 설계: docs/architecture.md
.github/workflows/forecast.ymlruns on a 30-min cron.- It checks out this repo (with
realtime-regression-swpinned as a submodule), downloads the model checkpoint + normalization stats from therealtime-regression-swGitHub Release, and runsscripts/run_realtime.py. scripts/update_site_data.pycopies the newest forecast JSON intosite/data/latest.jsonand refreshessite/data/status.json.- The
site/directory is published as a GitHub Pages artifact. site/index.htmlfetchesdata/latest.jsonon load and renders a Chart.js line plot of the 24-step (12-hour) ap30 forecast.
ap-prediction/
├── .github/workflows/forecast.yml cron-triggered pipeline
├── vendor/realtime-regression-sw/ git submodule, inference code
├── configs/realtime.ci.yaml CI path overrides
├── scripts/update_site_data.py post-process inference output
├── site/
│ ├── index.html page shell
│ ├── main.js Chart.js render + metadata
│ └── data/
│ ├── latest.json most recent forecast (committed each run)
│ └── status.json pipeline status for the banner
└── README.md
The workflow downloads model_best.pth and table_stats.pkl from a GitHub
Release on eunsu-park/realtime-regression-sw. Create the release once:
- Open https://github.com/eunsu-park/realtime-regression-sw/releases/new
- Tag:
v0.1.0-assets(new) - Target:
main - Title:
v0.1.0 runtime assets - Attach both files:
model_best.pth(~4.5 MB)table_stats.pkl(<100 KB)
- Publish.
Matched-pair invariant: the two files must come from the same training run.
When the model is retrained, create a new release (e.g. v0.2.0-assets) with
both files and update env.ASSETS_TAG in forecast.yml.
Settings → Pages → Build and deployment → Source: GitHub Actions.
cd vendor/realtime-regression-sw
git checkout <tag-or-sha>
cd ../..
git add vendor/realtime-regression-sw
git commit -m "Pin realtime-regression-sw to <tag-or-sha>"
Actions tab → "Forecast" workflow → "Run workflow".
Optionally provide an ISO8601 now to replay a specific anchor.
run_realtime.py exit codes mapped by scripts/update_site_data.py:
0→status.json.status = "ok",latest.jsonupdated2→status.json.status = "warn"(InsufficientDataError — upstream data gap),latest.jsonpreserved- other →
status.json.status = "error",latest.jsonpreserved
The workflow itself always succeeds (the Actions badge stays green); the page banner is the true health indicator.