Upload And Track User Story¶
This page describes the current user workflow for upload, analysis, tracking, and retracking.
Upload¶
User opens
/upload.User enters title, description, research-use choice, attribution choice, and selects a movie file.
Browser computes SHA-256 and calls
POST /api/new-movie.Flask creates a movie row and returns a presigned S3 POST.
Browser uploads the movie directly to S3/MinIO.
Browser loads frame 0 from
GET /resize-api/v1/first-frameand offers an Analyze link.
Analyze¶
User opens
/analyze?movie_id=....Browser gets metadata and frame 0.
User positions markers on the frame.
Browser saves marker trackpoints through
POST /api/put-frame-trackpoints.
Track Movie¶
User clicks Trace movie.
Browser posts to
POST /resize-api/v1/trace-moviewith:x-api-keyheadermovie_idframe_start
lambda-resize validates access, preserves the edited source frame, clears later trackpoints, marks the movie
tracing, and queues tracking.Local mode uses the in-process local queue. Deployed mode uses SQS.
Worker writes trackpoints, frame ZIP, traced MP4, and final movie status.
Browser polls
POST /api/get-movie-metadatauntil status istracing completed.
Retrack¶
User navigates to the frame where tracking diverged.
User moves markers to the correct positions.
Browser saves that frame’s trackpoints.
Browser posts
frame_startfor the edited frame to lambda-resize.Tracking resumes at the following frame.
Download¶
When tracking is complete, the user can download CSV trackpoints through
POST /api/get-movie-trackpoints.
Open Questions¶
Whether future UI should support direct “go to frame N” controls.
Whether variable-frame-rate movies need explicit timestamp support in addition to frame numbers.
Whether the movie list should become server-rendered or stay browser-rendered.