90 lines
No EOL
4.1 KiB
Markdown
90 lines
No EOL
4.1 KiB
Markdown
---
|
||
title: Video Accessibility — Next Session Prompt
|
||
date: 2026-04-29
|
||
tags:
|
||
- video-accessibility
|
||
- prompt
|
||
- handover
|
||
---
|
||
|
||
# Next Session Start Prompt
|
||
|
||
> Copy the block below and paste as the first message in the new Claude Code session.
|
||
|
||
---
|
||
|
||
```
|
||
Продолжаем работу над video-accessibility проектом.
|
||
|
||
## Контекст
|
||
|
||
Платформа — AI SaaS для генерации accessibility-материалов (CC, AD, SDH) из видео.
|
||
Рабочая директория: /Users/ai_leed/Documents/Projects/Oliver/video-accessibility
|
||
Текущая ветка: feat/pm-productivity (от main)
|
||
Последний коммит: 08fcb4d
|
||
|
||
## Полный план
|
||
|
||
Хендовер с историей что сделано и что осталось:
|
||
/Users/ai_leed/Library/Mobile Documents/iCloud~md~obsidian/Documents/VadymSamoilenko/01 Projects/video-accessibility/Multi-Tenant Audit — Handover.md
|
||
|
||
## Что уже сделано (не трогать)
|
||
|
||
### PR-1 (merged): Multi-tenancy foundations
|
||
- org-изоляция во всех эндпоинтах (assert_job_in_user_org)
|
||
- WebSocket membership check
|
||
- organization_id в моделях
|
||
- миграция 2026_05_add_organization_id.py
|
||
|
||
### PR-2 (pushed feat/workflow-blockers, commit c7a6f13):
|
||
- PM dashboard + Production dashboard
|
||
- role-based login redirect (linguist/reviewer → /qc/queue)
|
||
- sidebar badges (live QC count)
|
||
- two-stage QC enforcement (_assert_can_approve)
|
||
- email notifications enabled
|
||
- PM в complete_job, Final Review, Audit Log
|
||
|
||
### PR-3+4+5 (pushed feat/pm-productivity, commit 1bf0fb9):
|
||
- W-5: project defaults autofill в NewJob
|
||
- PM-9: quick filter presets в JobsList
|
||
- PM-10: PM в canManageJobs / New Job button / Final Review action
|
||
- PM-12: server pagination (size:50, page state, pagination controls)
|
||
- PM-1: deadline field в Job model + JobsList column + overdue red + NewJob date picker
|
||
- PM-2: POST /jobs/{id}/clone + useCloneJob hook + Clone button
|
||
- R-4: reject categories (pill-select) в QCDetail reject modal
|
||
- R-2: reviewed_cues/total_cues + progress bar + 80% approve gate + /mark-cue-reviewed
|
||
- L-9: Cmd+S saves full VTT, Escape closes modals
|
||
- T-1: JOB_STATUS_LABELS / getJobStatusLabel unified in jobStatusMessages.ts
|
||
- T-14: settings.upload_max_video_bytes + settings.upload_signed_url_ttl_hours
|
||
|
||
### PR-6 (pushed feat/pm-productivity, commit 08fcb4d):
|
||
- W-4: Job stores initial_linguist_id/reviewer_id; auto-assigned on first GET /language-qc
|
||
NewJob shows team-assignment grid when project selected
|
||
- L-3 WS: GET /vtt → broadcast_to_job(language_editing_started)
|
||
QCDetail shows "User X is editing [lang]" banner (auto-clears 5s)
|
||
- R-5 WS: add_comment() → broadcast_to_job(language_qc_comment)
|
||
QCDetail live-invalidates comments cache
|
||
- L-15: language_qc_assigned WS → QCDetail refetches lang-qc + toast
|
||
- R-7: VttEditor gets onCuePlay prop; AD cues get ▶ play button (seeks accessible video)
|
||
- T-15: beforeunload guard in NewJob while upload is in progress
|
||
- BUGFIX: broadcast_to_job() + broadcast_to_user() added to ConnectionManager (were missing)
|
||
|
||
## Что осталось
|
||
|
||
### W-12/13/14 — Job Brief / client intake form
|
||
- ОТЛОЖЕНО: требует новый EntityJobBrief, новые состояния стейт-машины
|
||
- Слишком большой скоуп для текущей итерации
|
||
|
||
### Открытые риски перед деплоем
|
||
1. Запустить миграцию 2026_05_add_organization_id.py
|
||
2. Проверить что у существующих staff есть memberships/teams
|
||
3. MT-12 (_assert_client_access legacy bypass для PM) ещё не закрыт
|
||
4. MT-16 (JWT без org_ids) — каждый запрос ходит в Mongo для memberships; 60s cache есть
|
||
|
||
## Инструкции
|
||
|
||
1. Перед началом прочти хендовер в Obsidian (ссылка выше)
|
||
2. Работаем на ветке feat/pm-productivity
|
||
3. Ветка готова к код-ревью и мержу в main
|
||
4. После деплоя запустить миграцию
|
||
``` |