Private Teacher A Movie | Subtitles English Download Upd

Table: subtitle_previews - id (PK) - subtitle_file_id (FK) - video_clip_url (public preview video) - start_timestamp (int, seconds) - end_timestamp (int, seconds) - created_at All timestamps stored in UTC. | Method | Path | Description | Auth | |--------|------|-------------|------| | GET | /api/movies?search=private+teacher+a | Search movies (autocomplete). | Public | | GET | /api/movies/movie_id | Movie details + list of subtitle versions. | Public | | GET | /api/subtitles/subtitle_id | Metadata (download URL, preview URL, stats). | Public | | GET | /api/subtitles/subtitle_id/download?format=srt | Redirect to CDN‑hosted file. | Public (rate‑limited) | | POST | /api/subtitles/movie_id/upload | Upload new subtitle version. | Auth (registered) | | POST | /api/subtitles/subtitle_id/review | Approve/Reject with comment. | Auth (moderator) | | GET | /api/subtitles/subtitle_id/history | List all previous versions. | Public | | GET | /api/subtitles/subtitle_id/preview | Returns JSON with preview video URL and timestamps. | Public |

[File selector] (accept .srt,.vtt,.ass) [Terms checkbox] (I certify I authored this subtitle) [Submit] (disabled until file selected) | # | Test Scenario | Expected Result | |---|---------------|-----------------| | AC‑1 | Search “Private Teacher A” → results show at least one EN subtitle entry. | Pass | | AC‑2 | Click Preview → modal opens, video plays, subtitle overlay visible, can be toggled off. | Pass | | AC‑3 | Click Download → file starts downloading, download_count increments by 1. | Pass | | AC‑4 | Upload a new .srt file → entry appears in “Pending” list for moderator. | Pass | | AC‑5 | Moderator approves → file moves to “Approved” and appears on public page with updated timestamp. | Pass | | AC‑6 | SEO crawler fetches the page → JSON‑LD contains correct @type , inLanguage , encodingFormat , dateModified . | Pass | | AC‑7 | Anonymous user exceeds 5 downloads/hour → receives HTTP 429 with friendly message. | Pass | | AC‑8 | Mobile device loads page → layout collapses to single column, download button remains tappable. | Pass | | AC‑9 | Accessibility audit (axe) → no violations of WCAG 2.1 AA for core interactions. | Pass | | AC‑10 | Uploaded file contains malicious payload → upload is rejected by virus scanner, error shown. | Pass | 9. Implementation Checklist | Phase | Tasks | |-------|-------| | Planning | • Confirm subtitle source/license. • Create JIRA epic & sub‑tasks. | | Design | • UI mockups (Figma/Sketch). • Review accessibility checklist. | | Backend | • Add subtitle_files & subtitle_previews tables. • Implement file validation & virus scan. • Build API endpoints + rate‑limiting middleware. | | Frontend | • Search component (React/Vue). • Result card & preview modal. • Download page with format selector & QR generator. | | Moderation | • Role‑based access (moderator). • Email notification on new uploads. | | Testing | • Unit tests for validation logic. • Integration tests for upload‑review‑publish flow. • End‑to‑end Cypress tests for UI. | | Deployment | • Store subtitle files on S3 (or equivalent) with private Private Teacher A Movie Subtitles English Download UPD

Table: subtitle_files - id (PK) - movie_id (FK → movies.id) - language (e.g., 'en') - format (enum: srt, vtt, ass) - version (varchar, e.g., 'v1.0') - file_path (storage location) - license (varchar) - attribution (text) - uploader_id (FK → users.id, nullable) - status (enum: pending, approved, rejected) - download_count (int, default 0) - created_at - updated_at - last_reviewed_at - reviewer_id (FK → users.id, nullable) Table: subtitle_previews - id (PK) - subtitle_file_id (FK)

All POST bodies are multipart/form-data for the file + JSON fields for metadata. 7.1 Search Page +---------------------------------------------------------------+ | Search bar (placeholder: “Search movies, subtitles …”) | +---------------------------------------------------------------+ | Public | | GET | /api/subtitles/subtitle_id |

[Download Button] (large, primary) [Copy Direct Link] (clipboard) [QR Code] (mobile scan) Movie: Private Teacher A (auto‑filled) Language: English (fixed) Subtitle Format: [SRT ▼] Version: auto‑generated (v1.2) License: [CC‑BY‑SA] [All‑Rights‑Reserved] [Custom]