# Production Guide

> **You are a Production user.** You are the operational backbone — you upload videos on behalf of clients, monitor the AI pipeline, manage the QC workflow, handle failed jobs, and keep everything moving. You have access to everything except User Management and Admin-only settings.

---

## Your Sidebar

| Item | What it does |
|------|-------------|
| 🏠 Dashboard | Home — pipeline stats, failure count, queue depth |
| 📋 All Jobs | Full list of all jobs (with bulk actions) |
| 📤 Upload Video | Upload videos for any client |
| 📝 My QC Queue | Your personally assigned QC tasks (badge count) |
| 🔍 QC Review | Organisation-wide QC queue |
| ✅ Final Review | Final review queue (badge count) |
| 📄 Briefs | Brief management |
| 🔥 Failures | Failed jobs dashboard (badge count) |
| 📋 Audit Log | Full audit log of all platform actions |
| 📖 Help | This guide |

---

## 1. Your Dashboard

The Production dashboard gives you a real-time operational view.

![Production dashboard](/help-screenshots/production/01-dashboard.png)

### Dashboard widgets

| Widget | What it shows | Action |
|--------|--------------|--------|
| **KPI tiles** (top row) | Total, Processing, In QC Review, Completed | **Left-click** a tile to jump to filtered jobs |
| **AI Pipeline** | Count of jobs currently being processed by AI | **Left-click** to open All Jobs filtered to AI statuses |
| **Awaiting Upload** | Count of approved briefs waiting for a video upload | **Left-click** to open the briefs queue |
| **Pending QC Handoff** | Jobs that finished AI processing but have no QC assigned | **Left-click** to open filtered jobs list |
| **Failures** | Count of failed jobs (TTS/render/processing) | **Left-click** to open the Failures dashboard |
| **Celery Queue Depth** | Per-queue task counter (ingestion, AI, translation, TTS, render) — refreshes every 10 seconds | Monitor-only |

---

## 2. Uploading on Behalf of a Client

As Production, you can upload videos for any client in your organisation.

**Step 1.** In the sidebar, **left-click** **Upload Video** (📤).

**Step 2.** **Left-click** the drop zone or **drag** the video file onto it.

**Step 3.** Fill in the job title, requested outputs, voice settings, and target languages — same as a Client upload (see Client Guide §3 for full instructions).

**Step 4.** Under **Client**, **left-click** the dropdown and select the client this job belongs to.

**Step 5.** **Left-click** the **Project** dropdown to assign to an existing project, or **left-click** **+ Create new project…** to create one inline.

**Step 6.** Under **Team Assignment**, assign a **Linguist** and **Reviewer** for the job. These are pre-filled from project defaults but can be changed here.

**Step 7.** **Left-click** **Create Job** (or **Upload N Videos** for multi-upload).

---

## 3. All Jobs — Bulk Operations

The **All Jobs** page is more powerful for Production users — it supports bulk actions.

**Step 1.** In the sidebar, **left-click** **All Jobs** (📋).

![All Jobs with bulk actions bar](/help-screenshots/production/02-jobs-list-bulk.png)

### Quick filter presets

At the top, four quick filter buttons let you jump to common views:
- **Left-click** **Pending Final Review** → shows only jobs waiting for final sign-off.
- **Left-click** **In QC** → shows jobs in any QC stage.
- **Left-click** **TTS Failed** → shows TTS failure jobs.
- **Left-click** **Render Failed** → shows render failure jobs.

### Selecting jobs

- **Left-click** the **checkbox** at the start of a row to select that job.
- **Left-click** the **Select All** checkbox in the table header to select all jobs on the current page.

A **Bulk Actions bar** appears above the table when at least one job is selected, showing "X selected" and an **Action** dropdown.

### Available bulk actions

**Left-click** the **Action** dropdown → select an action:

| Action | What it does |
|--------|-------------|
| **Delete Selected** | Permanently deletes all selected jobs. **Irreversible.** |
| **Reprocess Selected** | Resets and restarts selected jobs from scratch. |
| **Download All Files** | Bulk downloads all completed files from selected jobs. |
| **Return to QC** | Returns selected jobs to the QC Review stage with a reason. |

**Left-click** the action-specific button that appears to apply it:
- **Delete** → confirmation modal with a checkbox you must tick before confirming.
- **Reprocess** → confirmation modal warning that progress will be lost.
- **Download** → shows a summary of eligible/ineligible jobs; **left-click** **Download** to proceed.
- **Return to QC** → text area to enter a reason (required); **left-click** **Apply**.

To deselect all: **left-click** **Clear** next to the action buttons.

---

## 4. Per-Job Actions

Each job row has action buttons (visible on hover or always visible for canManage users):

| Button | What it does |
|--------|-------------|
| **Review** (yellow) | Opens QC Review for that job (only on `pending_qc` jobs) |
| **Final Review** (green) | Opens Final Review (only on `pending_final_review` jobs) |
| **Download** (indigo) | Opens Downloads page (only on `completed` jobs) |
| **Edit** (pencil icon) | Opens rename modal — type new title, press Enter or left-click Save |
| **Clone** | Creates a duplicate job with the same settings |
| **Delete** | Opens delete confirmation modal |

---

## 5. Monitoring a Job — Job Detail

**Left-click** any job row in All Jobs to open **Job Detail**.

![Job Detail — Production view](/help-screenshots/production/03-job-detail.png)

As Production, you see additional controls on the job detail page:

### Processing status timeline

The top of the page shows a visual pipeline: each processing step as a node. Green = done, blue = in progress, grey = upcoming, red = failed.

### Error panel

If a job has failed, a red **Error** panel appears showing:
- The error type (processing_failed, tts_failed, render_failed)
- The error message
- Which languages or cue indexes caused the failure (if applicable)

**Left-click** **Retry** to restart the failed step.

### Stopping a job

**Left-click** the **Stop Process** button (red, in the Overview tab). A confirmation modal appears — **left-click** **Confirm** to stop or **left-click** **Cancel** to abort.

### Escalating

**Left-click** **Escalate** to open a pre-filled email to the platform support team with the job ID and error details.

### Inline title edit

**Left-click** the pencil icon next to the job title. The title becomes editable. Type the new name, then press **Enter** to save or **Esc** to cancel.

### Return to QC

If a job is in Final Review or Completed and needs to go back to QC:

**Step 1.** In the job detail, scroll to **Return to QC**.

**Step 2.** Type the reason in the textarea.

**Step 3.** **Left-click** **Return to QC** button.

---

## 6. EN-First Translation Pipeline

All translations are generated from the **approved English master VTT**, not from the original video. This guarantees that every target language has exactly the same number of cues and identical timestamps as the English source.

**The pipeline runs in this order:**

1. AI processes the video → English VTT is generated
2. Job enters **QC Review** with English content only
3. English is **approved** (by any reviewer or admin with QC access)
4. Translation is automatically dispatched for all target languages
5. Target-language cards become active for linguist review

> Until English is approved, target-language cards show an amber warning banner and all actions are disabled.

When uploading a job with target languages, the form shows a blue note confirming how translations work:

![Translation info banner on New Job form](/help-screenshots/production/08-new-job-translation-banner.png)

---

## 7. QC Review

You can view and manage the full QC queue.

**Step 1.** **Left-click** **QC Review** (🔍) in the sidebar.

![QC List](/help-screenshots/production/04-qc-list.png)

**Step 2.** **Left-click** any job row to open its **QC Detail** page.

From QC Detail you can:
- Assign linguists and reviewers (see Reviewer Guide §5)
- Edit VTT content (see Linguist Guide §4)
- Approve or reject languages (see Reviewer Guide §4)
- Generate share links

### Origin badges on language cards

Each target-language card header shows an **origin badge** indicating how its translation was generated:

| Badge | Meaning |
|-------|---------|
| (no badge) | EN-aligned — generated from the approved EN VTT, cue structure 1:1 |
| **⚠ video-native** (red) | Legacy translation generated directly from the video — cue count may differ from EN. Use **↺ Re-translate from EN** to fix. |

![QC Detail showing origin badge and EN-gate banner](/help-screenshots/production/07-qc-detail-en-first.png)

### Re-translating a language from the EN master

If a language card shows the red **⚠ video-native** badge (or if a linguist reports cue mismatches), you can regenerate the translation from the approved English master:

**Step 1.** Open the **QC Detail** page for the job.

**Step 2.** Expand the target-language card.

**Step 3.** **Left-click** **↺ Re-translate from EN** (indigo outline button).
> This button is disabled (greyed out) until English is approved.

**Step 4.** A confirmation modal appears. Optionally type a **Reason** (written to the audit log).

**Step 5.** **Left-click** **Re-translate** to confirm. The language QC status resets to Pending and a new cue-aligned translation is generated automatically.

---

## 8. Handling Failures

The **Failures** dashboard shows all jobs that have encountered processing errors.

**Step 1.** **Left-click** **Failures** (🔥) in the sidebar. The badge shows the count of failed jobs.

![Failures dashboard](/help-screenshots/production/05-failures.png)

### Browsing failures

Failures are grouped by **error type** in accordion sections. **Left-click** an error type header to expand that group and see the affected jobs.

Each row shows: job title, status badge, failed step, error message (2 lines), retry count, last updated date.

### Retrying a single job

**Left-click** **View** to open the job detail and inspect the error, then use the **Retry** button there.

### Bulk retry

**Step 1.** **Left-click** the **checkbox** on each failed job you want to retry. Or **left-click** **Select All**.

**Step 2.** In the **Strategy** dropdown, **left-click** to choose:
- **Auto** — retries from the failed step
- **From scratch** — re-ingests and restarts the whole job

**Step 3.** **Left-click** **Retry selected**.

### Uploading a final VTT manually

If AI processing has completely failed and you have a manually prepared VTT file, you can upload it directly:

**Step 1.** **Left-click** the **Upload VTT** button on the failed job row.

**Step 2.** In the modal:
- Type the **Language** code (e.g. `en-GB`)
- **Left-click** the **VTT Type** dropdown: Closed Captions or Audio Description
- **Left-click** the file upload area and select your `.vtt` file, or **drag** the file onto the upload area
- **Left-click** **Upload & Advance** to upload and push the job forward

---

## 9. Brief Management

You can manage job briefs from clients.

**Step 1.** **Left-click** **Briefs** (📄) in the sidebar. The badge count shows how many briefs are awaiting approval.

**Step 2.** **Left-click** a brief row to open its detail.

**Step 3.** For a **Submitted** brief:
- **Left-click** **Approve Brief** (green) to approve it — the client can now create a job from it.
- Or create the job yourself: **left-click** **Create Job from Brief** (if the brief is approved).

**Step 4.** To create a new brief on behalf of a client: **left-click** **New Brief** → fill in the form → **left-click** **Create Brief**.

---

## 10. Audit Log

The audit log records every action taken on the platform.

**Left-click** **Audit Log** (📋) in the sidebar.

![Audit Log page](/help-screenshots/production/06-audit-log.png)

### Tabs

| Tab | Shows |
|-----|-------|
| **All Events** | Every event, searchable and filterable |
| **Security Events** | Login attempts, permission denials, suspicious activity |
| **User Activity** | Activity by a specific user |

### Filtering All Events

- **Search** input — type keywords.
- **Action** dropdown — filter by event type (grouped by category).
- **Severity** dropdown — filter by Info, Warning, Error, Critical.
- **Success filter** dropdown — show Success+Failures, Success only, or Failures only.
- **Left-click** **Search** to apply, or **Left-click** **Clear** to reset.

### Expanding an event row

**Left-click** any row in the audit table to expand it and see full details: IP address, request ID, user agent, resource, error message (if failed), and raw detail JSON.

### Security tab

**Left-click** the **Security Events** tab. **Left-click** the **Last X hours** dropdown to filter by 1h, 6h, 24h, or 72h.

### User Activity tab

**Left-click** the **User Activity** tab. **Left-click** the **User** dropdown to select a specific user and see their activity timeline.

---

## 11. Timeline Preview & Rendering

After editing the AD script or adjusting pause points in the QC Detail page, the **Timeline Preview** bar shows the current accessible video structure.

### Reading the Timeline bar

| Colour | Meaning |
|--------|---------|
| Blue | Video segment — no narration |
| Orange | AD Audio segment — narration plays here |
| Light orange | TTS cue queued for regeneration |
| Red line | Pause Point — video pauses to insert narration |
| Red tick | Pause Point manually adjusted |

### Render Accessible Video Changes

The purple panel activates when there are changes pending:

| Message | What triggered it |
|---------|------------------|
| "N TTS cue(s) queued for regeneration" | Cues queued for TTS re-synthesis |
| "Pause points have been adjusted" | Pause points moved or added |
| "Audio Description script was replaced" | New AD VTT file uploaded |

**Run Whisper pause refinement** checkbox — tick when you changed the number or position of AD cues; leave unchecked if you only adjusted pause timing.

**Step 1.** Review the Timeline bar.

**Step 2.** **Left-click Render Changes** when it turns purple.

**Step 3.** Wait for the **Rendering…** spinner to finish — the page updates automatically.

---

## 12. Mouse Interactions Reference

| Action | Where | What happens |
|--------|-------|--------------|
| **Left-click** job checkbox | All Jobs table | Selects job for bulk action |
| **Left-click** Select All | Table header | Selects all jobs on page |
| **Left-click** Action dropdown | Bulk actions bar | Shows available bulk actions |
| **Left-click** bulk action button | Bulk actions bar | Applies bulk action to selection |
| **Left-click** Delete confirmation checkbox | Delete modal | Must be checked to confirm |
| **Left-click** **Edit** icon | Job row (on hover) | Opens inline title rename |
| **Left-click** **Clone** | Job row (on hover) | Duplicates the job |
| **Left-click** error type header | Failures dashboard | Expands accordion showing failed jobs |
| **Left-click** **Select All** | Failures dashboard | Selects all visible failed jobs |
| **Left-click** Strategy dropdown | Failures bulk bar | Selects retry strategy (Auto/From scratch) |
| **Left-click** **Retry selected** | Failures bulk bar | Queues all selected jobs for retry |
| **Left-click** **Upload VTT** | Failure row | Opens manual VTT upload modal |
| **Left-click** VTT file upload area | Upload VTT modal | Opens file picker for .vtt file |
| **Drag** .vtt file | Upload VTT modal | Drops file into uploader |
| **Left-click** row in Audit Log | Audit Log table | Expands event details |
| **Left-click** **Stop Process** | Job Detail | Opens stop confirmation modal |
| **Left-click** pencil icon | Job title | Enters inline title edit mode |
| **Hover** job row | All Jobs table | Reveals Edit, Clone, Delete action buttons |

---

## 13. Keyboard Shortcuts

| Key | Action |
|-----|--------|
| `A` | Approve current QC language (on QC Detail page) |
| `R` | Request changes (on QC Detail page) |
| `Cmd/Ctrl + S` | Save VTT file (on QC Detail page) |
| `1` / `2` / `3` | Switch view modes in QC Detail |
| `Esc` | Close modal |
| `Enter` | Save inline title edit (on Job Detail) |

---

## 14. Common Issues

| Issue | Cause | Fix |
|-------|-------|-----|
| Job stuck in AI Processing | Celery worker backlog or error | Check Celery Queue Depth widget; retry from Failures if it shows an error |
| High retry count on a job | Repeated processing failures | Open the job detail, read the error message, escalate if >3 retries |
| "Upload VTT" option not available | Job not in a failed state | Only shown for jobs in processing_failed, tts_failed, render_failed |
| Brief badge count not clearing | Brief not yet approved | Open the brief and approve it, or assign it to Production to action |
| Audit log shows 403 events | User attempted access to a restricted resource | Normal for permission denials — investigate if repeated for the same user |
