Wire live classifyItem into continuous playback, add jam/E-stop cases, presenter controls (seek/speed/hotkeys), quality modes, demo scripts, audit docs, and a verify-only autonomous agent CLI with hard safety limits. Co-authored-by: Cursor <cursoragent@cursor.com>
8.1 KiB
8.1 KiB
План максимизации демонстрации
Проект: OZON Tech Sorter Simulation
Ветка реализации: feature/maximum-demo-realism
Дата: 2026-07-15
Документ фиксирует целевое состояние демо, этапы и критерии приёмки. Статус этапов: Done = реализовано в этой итерации; Open = остаётся.
1. Текущее состояние (as-is)
| Аспект | Состояние | Тип |
|---|---|---|
| Движки | Continuous / + FSM /details |
Измерено |
Классификация на / |
classifyItem wired (live) |
Измерено (код) |
| Playlist | 10 кейсов вкл. jam + e-stop | Измерено |
| Proof | HUD DIM/K/reason + CV RULE | Измерено |
| Управление | seek, 0.5–2×, hotkeys, presentation | Измерено |
| Quality | low/medium/high/demo | Измерено |
| Physics | Детерминированная кинематика + jitter | Измерено |
| CV | Pseudo | Измерено |
Twin parity / vs /details |
Расходятся визуально | Измерено |
| Prod sync | :3100 может быть старым | Измерено (риск) |
| Tests | 153 / 16 files | Измерено |
| Agent | MVP verify-only | Измерено |
2. Целевое состояние (to-be)
Демонстрация должна за 5–10 секунд отвечать зрителю:
- Что это за система (промышленная сортировка OZON Tech).
- Откуда берётся решение (измерения → правила → B/C/D).
- Что делают механизмы (gate/pusher/маршрут).
- Что происходит при аварии (jam / e-stop + recover).
- Что это не «мультфильм»: proof HUD, журнал, метрики.
Целевые свойства:
- визуально реалистичный industrial twin;
- физически правдоподобное (хотя бы кинематически согласованное) движение;
- стабильные 30–60 FPS в режиме demo;
- one-command start + health;
- откат через git tag;
- production = тот же билд, что прошёл тесты.
3. Этапы
| # | Этап | Приоритет | Сложность | Статус | Ожидаемый эффект |
|---|---|---|---|---|---|
| E1 | Wire classifyItem в continuous |
P0 | Низкая | Done | Доверие к алгоритму |
| E2 | Measurement + DIMENSION_LIMITS + confidence | P0 | Средняя | Done | Корректные min dims, reason |
| E3 | Playlist 8→10 + fault timelines | P0 | Средняя | Done | Safety story для жюри |
| E4 | Fault freeze/recover + seeded jitter | P1 | Средняя | Done | Правдоподобие / воспроизводимость |
| E5 | Demo controls + presentation + journal | P0 | Средняя | Done | Управление показом |
| E6 | Quality modes | P1 | Низкая | Done | FPS на слабых клиентах |
| E7 | Proof HUD + CV RULE overlay | P0 | Средняя | Done | «Видно почему» |
| E8 | simulation tests jam/estop/c_priority | P1 | Низкая | Done | Регрессионная защита |
| E9 | Agent MVP + scripts | P1 | Средняя | Done | Ops / future autonomy |
| E10 | resolveItem SKU-*-LC | P2 | Низкая | Done | Стабильность данных |
| E11 | Унификация визуала / и /details |
P1 | Высокая | Open | Единый образ системы |
| E12 | Redeploy prod dist на :3100 | P0 | Низкая (ops) | Open | Публичная демо актуальна |
| E13 | Playwright в CI (1 worker) | P2 | Средняя | Open | Авто-регрессия UI |
| E14 | Опциональный physics (Rapier lite) | P3 | Высокая | Open | Доп. fidelity (не блокер) |
| E15 | Agent auto-patch за human gate | P3 | Высокая | Open | Автономия уровня 2 |
4. Приоритет (матрица)
| Приоритет | Фокус |
|---|---|
| P0 | То, без чего живой показ врёт или ломается: классификация, proof, faults, controls, prod sync |
| P1 | Убедительность и стабильность: quality, tests, twin unify, agent ops |
| P2 | Удобство и покрытие: e2e CI, data edge cases |
| P3 | Исследования: real physics, full autonomous implementer |
5. Ожидаемый эффект по направлениям
| Направление | Эффект Done-этапов | Остаточный разрыв |
|---|---|---|
| Demo clarity | Высокий — seek/hotkeys/presentation | — |
| Algorithm proof | Высокий — live classify + HUD | Pseudo-CV всё ещё |
| Fault story | Высокий — jam/e-stop в playlist | — |
| Visual realism | Средний+ | Dual twin, нет AO/heavy PBR |
| Physics fidelity | Средний | Нет rigid body |
| Ops | Высокий — scripts + agent | Redeploy path вне docker CLI |
6. Сложность оставшихся работ
| Работа | Сложность | Зависимости | Риск |
|---|---|---|---|
| Unify twins | Высокая | Общий scene kit, не ломая оба маршрута | Регрессия /details |
| Prod redeploy | Низкая | Доступ к docker/host вне среды | Забыть обновить tunnel cache |
| e2e CI | Средняя | 1 worker, артефакты | Flaky screenshots |
| Rapier | Высокая | Performance budget | FPS падение |
| Agent patcher | Высокая | Safety limits, staging | Порча ветки |
7. Риски плана
| Риск | Митигация |
|---|---|
| Погоня за «настоящей физикой» убивает FPS | Держать кинематику; physics только opt-in |
| Унификация twin ломает details UX | Feature flag / поэтапный shared module |
| Агент без лимитов | Kill switch + forbid deploy |
| Показ со старым prod | demo:health + явный checklist redeploy |
8. Зависимости
E12 (redeploy) зависит от зелёных tests/build на feature-ветке
E11 (unify) зависит от стабильного continuous twin (E1–E7 Done)
E13 (e2e CI) зависит от ёмкости (1 worker) и стабильных селекторов
E15 (agent patch) зависит от E9 + AI_AGENT_SAFETY_LIMITS
9. Критерии приёмки
Must (для «максимальной демо» итерации)
- Continuous использует
classifyItem(не только playlist label). - Playlist ≥10 с jam и emergency_stop.
- Proof HUD показывает DIM, K, reason.
- Hotkeys + speed + seek + presentation работают.
- Quality modes существуют и покрыты тестами.
- Vitest зелёный (≥153).
- Build OK.
- Backup tag существует.
- Production https://arhipovdan.ru/ отдаёт новый dist (Open).
Should
- Визуальный parity ключевых элементов
/и/details. - Playwright smoke в CI (1 worker).
Could
- Лёгкий physics layer.
- Agent auto-patch с обязательным human merge.
10. Рекомендуемый порядок дожима
- Redeploy production (E12) — максимальный ROI для жюри.
- Visual unify twin (E11) — доверие «одной системы».
- e2e smoke (E13).
- Остальное — по необходимости.