docs: revise REQ-010/163 for archive upload, add REQ-178/179
This commit is contained in:
1 parent
92360660c7
commit
15cc9777b9
3 files changed
+32
-5
No files matched your search
+3
-1
@@ -155,7 +155,7 @@ GET /api/health REQ-073
|
||||
|
||||
GET /api/projects REQ-001
|
||||
POST /api/projects REQ-001,002,004,005
|
||||
GET /api/projects/{id} # includes label_type_locked: bool (REQ-002)
|
||||
GET /api/projects/{id} # includes label_type_locked: bool (REQ-002), video_root_linux/video_root_windows (REQ-179)
|
||||
DELETE /api/projects/{id}
|
||||
PATCH /api/projects/{id} # class prompts, val_every (REQ-005)
|
||||
POST /api/projects/{id}/classes # add new class {name, prompt} (REQ-008)
|
||||
@@ -166,6 +166,8 @@ GET /api/projects/{id}/dataset/download # zip (REQ-054)
|
||||
|
||||
GET /api/projects/{id}/library # list of dates (REQ-011)
|
||||
GET /api/projects/{id}/library/{date} # videos + duration/resolution (REQ-012)
|
||||
POST /api/projects/{id}/library/dates?date= # create YYYY-MM-DD folder, 409 if it exists (REQ-178)
|
||||
POST /api/projects/{id}/library/upload?date= # multipart `file`, streamed to disk (REQ-178)
|
||||
GET /api/projects/{id}/video?rel=… # Range streaming (REQ-013)
|
||||
|
||||
POST /api/projects/{id}/batches # {rel, start_sec, end_sec, fps} → extract job
|
||||
|
||||
+13
-4
@@ -62,8 +62,9 @@ changes.
|
||||
|
||||
## B. Video archive
|
||||
|
||||
- **REQ-010** — The video archive lives at a local path (disk or mount); videos are **not
|
||||
uploaded** through the browser.
|
||||
- **REQ-010** — The video archive lives at a local path (disk or mount). Videos may be
|
||||
copied in from disk **or uploaded through the browser** into an existing date folder
|
||||
(REQ-178).
|
||||
- **REQ-011** — Archive structure: `<video_root>/<date>/<batch>.<ext>`. The system lists the
|
||||
dates, and within each date the videos with their batch labels parsed from the filename.
|
||||
- **REQ-012** — Each video shows its duration, resolution, and whether it has already been
|
||||
@@ -71,6 +72,13 @@ changes.
|
||||
- **REQ-013** — Videos play in the browser with seeking (HTTP Range), without copying the
|
||||
file first.
|
||||
|
||||
- **REQ-178** — The Video Archive page can create a `YYYY-MM-DD` folder and upload videos
|
||||
into it. Uploads are streamed to disk, never overwrite an existing file, and only accept
|
||||
`video.VIDEO_EXTS`.
|
||||
- **REQ-179** — The Video Archive page shows a button that copies the archive's host path
|
||||
to the clipboard, as a Linux path and as a Windows (`\\wsl.localhost\<distro>\...`) path
|
||||
when known.
|
||||
|
||||
## C. Trim & frame extraction
|
||||
|
||||
- **REQ-020** — The user sets the in/out range with a timeline slider on the player, and can
|
||||
@@ -316,8 +324,9 @@ changes.
|
||||
Each clip carries a sidecar with the server's start time, which the app trusts over reading
|
||||
the burned-in overlay. Archive folder names remain calendar dates; the app derives cycles
|
||||
from the real start time, so the folder name is never read as a date.
|
||||
- **REQ-163** — Nothing in the archive is moved, renamed or written to; it is mounted
|
||||
read-only. The grouping lives in an index beside it. Timestamps that could not be read, or
|
||||
- **REQ-163** — Nothing existing in the archive is moved, renamed or deleted; only
|
||||
user-initiated uploads and folder creation append to it. The grouping lives in an index
|
||||
beside it. Timestamps that could not be read, or
|
||||
were read with low confidence, are flagged and can be hand-entered; a hand-entered time
|
||||
outranks any reading and is never overwritten by a rescan.
|
||||
|
||||
|
||||
@@ -1207,6 +1207,22 @@ rather than direct (`zerotier-cli peers` — a `RELAY` row explains both the los
|
||||
end to end, but the decode cost is identical to RTSP and it adds ICE and keyframe-loss
|
||||
failure modes to the counting path. The saving was always on the browser side.
|
||||
|
||||
## Task — Archive upload and date folders (REQ-178) `[TODO]`
|
||||
|
||||
1. Upload + date-folder API/UI → verify: mkdir returns 200/409/400, upload returns
|
||||
200/409/400, new file listed in cycle, no `.part` residue; folder+upload work from the
|
||||
Video Archive page.
|
||||
|
||||
## Task — Copy-path buttons (REQ-179) `[TODO]`
|
||||
|
||||
1. Copy-path buttons → verify: project payload carries `video_root_linux`/`video_root_windows`;
|
||||
both buttons copy the correct paths to the clipboard.
|
||||
|
||||
## Task — Infra: rw archive mount + nginx body size (REQ-178) `[TODO]`
|
||||
|
||||
1. rw mount + nginx body size → verify: compose archive mount is rw (no `RO`), nginx
|
||||
accepts bodies >512m, `/api/health` 200 after rebuild.
|
||||
|
||||
## 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