**Description:** The transform feature (Issue #27) requires a dedicated hook that reuses the SSE + polling fallback pattern. **Acceptance Criteria:** - [ ] `app/hooks/useTransformStatus.ts` mirrors `useProcessingStatus.ts` in structure - [ ] Accepts `jobId: string | null` and `enabled: boolean` - [ ] Updates `transformStore.jobs[jobId]` on each SSE event - [ ] Falls back to polling `GET /api/transform/[id]` every 3 seconds on SSE error - [ ] Cleans up SSE connection and polling interval on unmount - [ ] Unit tests covering SSE happy path, SSE fallback, completion, and cleanup ---
Description:
The transform feature (Issue #27) requires a dedicated hook that reuses the SSE + polling fallback pattern.
Acceptance Criteria:
app/hooks/useTransformStatus.tsmirrorsuseProcessingStatus.tsin structurejobId: string | nullandenabled: booleantransformStore.jobs[jobId]on each SSE eventGET /api/transform/[id]every 3 seconds on SSE error