feat: per-class autolabel params + frame-scoped class clear (REQ-180, REQ-181)
- REQ-181: class_params {name: {threshold?, iou_threshold?, min_box_frac?}}
on /preview and /autolabel, per-class override table in both modals;
empty overrides take the unchanged global path
- REQ-180: x button on each review sidebar class row clears that class on
the current frame only via bulk-delete, no confirmation
- includes REQ-178 empty date-folder cycle fix (archive_index.py)
This commit is contained in:
1 parent
c244ab9795
commit
1a99f2ffe4
16 files changed
+372
-45
No files matched your search
@@ -1216,6 +1216,19 @@ failure modes to the counting path. The saving was always on the browser side.
|
||||
`vite build` passes (66 modules). Browser click-test of copy buttons/upload dialog is NOT
|
||||
automated — manual click-test pending.
|
||||
|
||||
## Task — Empty date folder visible in cycle list (REQ-178) `[DONE]`
|
||||
|
||||
1. `archive_index.cycles()` must return a bucket for a date folder with no videos →
|
||||
verify: **[DONE]** `POST .../library/dates?date=2099-01-01` → 200; then
|
||||
`GET .../archive/cycles` contains `2099-01-01` with `video_count: 0` (and the
|
||||
pre-existing empty folder `2026-08-31`, previously invisible, also appears);
|
||||
`GET .../archive/cycles/2099-01-01` returns `videos: []`; the same JSON arrives
|
||||
through the dev proxy on 5173; folder removed after verification → cycle gone from
|
||||
the list again; `uvx ruff check` output identical to HEAD (13 pre-existing, 0 new);
|
||||
`vite build` passes. Browser click-test is NOT automated — manual click-test pending.
|
||||
Docker backend rebuilt after the fix: `:9010/.../archive/cycles` now returns the
|
||||
empty folders `2026-08-29` and `2026-08-31` with `video_count: 0`.
|
||||
|
||||
## Task — Copy-path buttons (REQ-179) `[DONE]`
|
||||
|
||||
1. Copy-path buttons → verify: **[DONE]** project payload carries
|
||||
@@ -1229,6 +1242,32 @@ failure modes to the counting path. The saving was always on the browser side.
|
||||
nginx `client_max_body_size 20g` verified (600MB upload → 200); `/api/health` 200, `/docs`
|
||||
200, frontend `http://localhost:9000` 200 after rebuild.
|
||||
|
||||
## Task — Frame-scoped per-class clear in review editor (REQ-180) `[DONE]`
|
||||
|
||||
1. `×` button on each sidebar class row clears that class's shapes on the **current frame
|
||||
only**, no confirmation, batch-wide trash (REQ-046) unchanged →
|
||||
verify: **[DONE]** `ReviewPage.clearClassInFrame` filters the current frame's annotations
|
||||
and posts only those ids to `POST /annotations/bulk-delete`; round-trip on `:9010` —
|
||||
created 2 shapes on frame 23827, bulk-delete returned `{"deleted":2}`, frame back to
|
||||
`annotations: []`, DB clean after test; optimistic update + rollback wired the same way as
|
||||
`removeMarked`; `vite build` passes (68 modules), rebuilt image on `:9000` serves the new
|
||||
bundle (`index-wBeBdXus.js`). Browser click-test of the `×` button is NOT automated —
|
||||
manual click-test pending.
|
||||
|
||||
## Task — Per-class auto-annotate params (REQ-181) `[DONE]`
|
||||
|
||||
1. `class_params` through preview + job on both modals → verify: **[DONE]** ruff on the 5
|
||||
changed backend files vs HEAD: +17, all `UP006`/`UP035`/`UP045` (the files' existing
|
||||
style), 0 new real findings; on rebuilt backend `:9010` — `/preview` baseline (absent and
|
||||
`null` `class_params`) → 18 shapes, `class_params: {sack: {threshold: 0.99}}` → 0 shapes,
|
||||
`threshold: "high"` → 422 `float_parsing`; `/autolabel` accepted
|
||||
`{class_params: {sack: {threshold: 0.9, min_box_frac: 0.01}}}`, job 106's stored params
|
||||
carry it, `iou_threshold: "x"` → 422, job cancelled and test data reset
|
||||
(`reset-auto-annotations`, batch 21 back to 0 annotations); omitted `class_params` takes
|
||||
the unchanged global path; `vite build` passes, `:9000` serves the new bundle (marker
|
||||
strings present). Browser click-test of the override tables is NOT automated — manual
|
||||
click-test pending.
|
||||
|
||||
## Known open points
|
||||
|
||||
- *Not closed by any task, by choice:* **any rebuild kills the running job.** Task 14's resume
|
||||
|
||||
Reference in new issue
Block a user