video-accessibility/backend/app/api/v1
michael 83e4752327 feat: add server-side zip download for bulk job downloads
Replace sequential browser-based bulk download with server-side zip
generation. When users select "Download All Files" from bulk actions,
the system now creates a single organized .zip file containing all
job assets.

Changes:
- Add POST /jobs/bulk/download endpoint that streams zip to client
- Add BulkDownloadRequest schema for the new endpoint
- Create zip_download.py service with streaming zip generation
- Update frontend to call new endpoint and download single zip file
- Organize files in zip by job title and language subdirectories

Zip structure:
accessible_video_YYYYMMDD_HHMMSS.zip
└── {job_title}/
    ├── source.mp4
    └── {lang}/
        ├── captions.vtt
        ├── ad.vtt
        ├── ad.mp3
        ├── accessible_video.mp4
        └── accessible_captions.vtt

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 15:57:57 -06:00
..
__pycache__ more fixes for refresh token - this time maintaining the username and role properly across refresh 2025-10-08 23:09:29 -05:00
routes_admin.py added production user role and made it default for new MSAL users - production can access everything EXCEPT user management - that's only for admin 2025-10-10 10:07:30 -05:00
routes_auth.py added production user role and made it default for new MSAL users - production can access everything EXCEPT user management - that's only for admin 2025-10-10 10:07:30 -05:00
routes_files.py initial commit 2025-08-24 16:28:33 -05:00
routes_jobs.py feat: add server-side zip download for bulk job downloads 2026-01-04 15:57:57 -06:00
routes_review_notes.py feat: add video review with timestamped notes to Final Review 2025-12-26 15:30:00 -06:00
routes_tts.py feat: add TTS settings panel with model, speed, and style options 2025-12-22 15:22:14 -06:00
routes_websockets.py wrote docker files and deployment instructions 2025-10-08 16:00:12 -05:00