feat: async clip jobs, Siap-unduh state, cross-page ready toast
ci / smoke (push) Canceled after 0s

This commit is contained in:
andrew committed 2026-09-29 09:28:51 +07:00
1 parent 14f5ed4aac
commit 12f921f81c
6 files changed
+878 -66

No files matched your search

+11 -3
View File
@@ -29,9 +29,17 @@ version tags are cut in this repo — POC stage, `main` is the release line).
`None (Manual)` + require-plate controls; history/export plate, DO,
expected, net columns.
- `ERD.md` (Mermaid ERD, repo root; superseded `docs/do-erd.md`); tests `tests/test_do_batch.py`.
- History `Klip` button → office-only `GET /api/batch-clip/<date>/<batch_number>`
trims+concatenates motionEye recordings to the batch window (`src/clip.py`),
download `b<n>-<date>-<HH-MM-SS>.mp4`.
- History `Klip` button → office-only batch clip endpoints
(`POST /api/batch-clip/<date>/<batch_number>` + `/status`, `/file`,
`/pending`) trims+concatenates motionEye recordings to the batch window
(`src/clip.py`), download `b<n>-<date>-<HH-MM-SS>.mp4`.
- Async job processing: `Klip` → `Memproses…` (elapsed ticks, status polled
every 1.5 s) → `Siap — unduh` (manual trigger, file already rendered) →
`Unduh lagi` after the first download / `Gagal` (shows the job error).
State restored from `/pending` on load, so it survives navigation/reload.
- Non-blocking **`Klip siap`** / **`Klip gagal`** toast on all office pages
(`templates/base.html` polls `/pending` every 3 s, sessionStorage dedupe,
auto-dismiss 8 s, click → `/history`).
- `MOTIONEYE_CLIP_PAD` (default ±3 s window padding) + OSD-clock alignment via
single-frame OCR at each cut point (`MOTIONEYE_OSD_ALIGN`, default on).