Files
ozone-tech_owl_prime/docs/INPUT_INFO_ANALYSIS.md
root a700a146a3 fix: final parameter verification and source of truth documentation
- Add exact references to official specification (page/section/line) in INPUT_INFO_ANALYSIS.md
- Fix last hardcoded min dimensions in SceneLabels3D.tsx (10×10×10 → dynamic from DIMENSION_LIMITS)
- Fix hardcoded roundness threshold in Item3D.tsx (0.8 → dynamic from DIMENSION_LIMITS)
- Update THREE_D_FEASIBILITY.md checklist to reflect current parameters (10×10×2, K≥0.7)

Source of truth confirmed:
- Min dimensions: 10×10×2 mm (Постановка_Задача_3_сжато_2.pdf, стр. 2/17, строка 81)
- Roundness threshold: K ≥ 0.7 (Постановка_Задача_3_сжато_2.pdf, стр. 7/17, строка 245)
- Max dimensions: 450×320×320 mm (Постановка_Задача_3_сжато_2.pdf, стр. 2/17, строка 82)
- Conveyor speed: 1.0 м/с (Постановка_Задача_3_сжато_2.pdf, стр. 4/17, строка 188)

Tested: build OK, tests 16/16 passed, Docker OK, domains OK, smoke test OK
2026-07-04 16:12:12 +02:00

479 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# INPUT_INFO_ANALYSIS
Анализ материалов из папки `input_info` для приведения проекта в соответствие с официальной постановкой задачи OZON Tech Track 3.
## 1. Что найдено в input_info
| Путь файла | Тип | Содержит | Важность | Как использовать |
|------------|-----|----------|----------|------------------|
| `doc-1783009063.pdf` | PDF | Перечень допустимого ПО | Средняя | Подтверждение стека (React, Docker, open-source инструменты) |
| `doc-1783009942.pdf` | PDF | Схема рабочей зоны с размерами | Высокая | Размеры зон A/B/C/D, ролл-кейджей; добавить в документацию |
| `doc-1783011400.pdf` | PDF | Критерии оценки Track 3 | **Критическая** | Матрица баллов, детальные требования к презентации/УГТ/корректности |
| `extracted/Постановка_Задача_3_сжато_2.pdf` | PDF | Полная постановка задачи (17 стр) | **Критическая** | Официальные параметры классификации, правила, глоссарий, требования к сдаче |
| `doc-1782987706.zip` → `Step/*.stp` | STEP | 11 3D-моделей товаров | Высокая | Тестовый набор для проверки классификации |
| `doc-1782987733.zip` → `Stl/*.stl` | STL | 11 3D-моделей товаров (дубликат) | Средняя | Альтернативный формат моделей для симуляций |
| `ozone-tech_owl_prime_170-main.zip` | ZIP | Пустой README.md | Низкая | Не содержит полезных материалов |
**Тестовый набор товаров (STEP/STL):**
1. Бутылка
2. Короб 300×200×200
3. Короб 400×400×300
4. ЛанчБокс
5. Мешок
6. Моющее средство
7. Пуфик
8. Ручка
9. Тарелка
10. Цилиндр
11. Шлем
## 2. Ключевые требования из input_info
### 2.1. Параметры классификации (КРИТИЧЕСКИЕ ИСПРАВЛЕНИЯ)
Из `Постановка_Задача_3_сжато_2.pdf`:
#### Минимальные габариты:
- **Официально:** 10×10×**2 мм**
- **Источник:** `Постановка_Задача_3_сжато_2.pdf`, стр. 2/17, раздел "Термины задачи", строка 81
- **Цитата:** "его габариты больше минимально допустимых 10 × 10 × 2 мм"
- **В текущем коде:** 10×10×**10 мм** ❌ → **ИСПРАВЛЕНО** ✅
#### Максимальные габариты:
- **Официально:** 450×320×320 мм
- **Источник:** `Постановка_Задача_3_сжато_2.pdf`, стр. 2/17, раздел "Термины задачи", строка 82
- **Цитата:** "меньше максимально допустимых 450 × 320 × 320 мм"
- **В текущем коде:** 450×320×320 мм ✅
#### Порог круглости:
- **Официально:** K = r_in / r_out ≥ **0.7**
- **Источник:** `Постановка_Задача_3_сжато_2.pdf`, стр. 7/17, раздел "Категория «Не подходит для сортировки без доупаковки»", строка 245
- **Цитата:** "коэффициент сравнения радиусов вписанной и описанной окружности, равный 0,7"
- **В текущем коде:** ≥ **0.8** ❌ → **ИСПРАВЛЕНО** ✅
#### Скорость конвейера:
- **Официально:** 1.0 м/с
- **Источник:** `Постановка_Задача_3_сжато_2.pdf`, стр. 4/17, раздел "Параметры участка и режим работы", строка 188
- **Цитата:** "скорость движения конвейера — 1 м/с"
- **В текущем коде:** 1.0 м/с ✅
### 2.2. Правила классификации
**Категория B "Подходит для сортировки":**
- Габариты: 10×10×**2** мм ≤ размеры ≤ 450×320×320 мм
- НЕТ круга в сечении (K < 0.7)
**Категория C "Не подходит по габаритам":**
- Размеры < 10×10×**2** мм ИЛИ > 450×320×320 мм
- **C имеет приоритет над D** (проверка габаритов идёт первой)
**Категория D "Не подходит без доупаковки":**
- Габариты проходят
- Есть круг в сечении (K ≥ 0.7)
**Порядок проверки:**
1. Сначала габариты → если не прошли, категория **C**
2. Затем форма → если круг, категория **D**
3. Иначе категория **B**
### 2.3. Схема участка (из doc-1783009942.pdf)
- **Рабочая зона:** 6000×10000 мм (фиксированная)
- **A (подача):** конвейерная линия 500×700 мм (фикс)
- **B (основной сортировщик):** конвейерная линия 500×700 мм (фикс относительно A)
- **C (негабарит):** ролл-кейдж 1200×800×800 мм (свободное размещение в рабочей зоне)
- **D (неправильная форма):** ролл-кейдж 1200×800×800 мм (свободное размещение в рабочей зоне)
### 2.4. Критерии оценки (из doc-1783011400.pdf)
**Раздел 1. Презентация (0-10 баллов)**
- 0-5: Ясность материалов
- 0-5: Выступление и ответы на вопросы
**Раздел 2. УГТ (0-20 баллов)**
- Матрица 4×4: ось CV (1-4) × ось исполнительной части (1-4)
**Раздел 3. Корректность определения (0-20 баллов)**
- 0-10: Корректность на тестовом наборе
- 0-5: Полнота правил классификации
- 0-5: Устойчивость в пограничных случаях
**Раздел 4. Исполнительная часть (0-30 баллов)**
- 0-10: Корректность физической маршрутизации
- 0-10: Качество манипуляции
- 0-5: Разная геометрия объектов
- 0-5: Безопасность эксплуатации
**Раздел 5. Производительность (0-20 баллов)**
- 0-10: Cycle time и производительность
- 0-5: Синхронизация по времени
- 0-5: Устойчивость к нештатным ситуациям
**Раздел 6. Связность (0-15 баллов)**
- 0-10: Связность CV и исполнительной части
- 0-5: Инженерная реалистичность
**Раздел 7. Отчетность (0-15 баллов)**
- 0-5: Полнота и качество отчета
- 0-5: Воспроизводимость и удобство проверки
- 0-5: Полнота комплекта сдачи
**Итого:** 130 баллов
### 2.5. Требования к сдаче (из Постановки задачи)
**Обязательный состав:**
- Описание подхода к классификации ✅
- Исходный код алгоритмической части ✅
- Проектные материалы по исполнительной части ✅
- Цифровая модель / симуляция / расчётное обоснование ✅ (3D digital twin)
- Описание связи CV → исполнительная часть ✅
- Итоговый отчет команды ✅
- Видеодемонстрация работы ⏳ (TODO)
**Формат презентации:**
- Длительность: не более **7 минут**
- Формат: живая демонстрация / видео / комбинация
**Рекомендуемая структура презентации:**
1. О команде
2. Постановка задачи и подход
3. Логика классификации
4. Схема маршрутизации A/B/C/D
5. Исполнительная часть и автоматическая перекладка
6. Подтверждение: метрики, симуляция, расчёты, цифровой прототип
7. Используемые инструменты и выбор
8. Ограничения и развитие
## 3. Что уже реализовано
✅ **Архитектура:** React + Vite + TypeScript + Three.js
✅ **Классификация:** Чистая функция `classifyItem` с габаритами и roundness
✅ **State machine:** IDLE → DETECTING → CLASSIFYING → ROUTE_TO_* → RETURN_HOME
✅ **Исполнительная часть:** Stop-gate, pusher C, pusher D, физическая маршрутизация
✅ **3D Digital Twin:** React Three Fiber, labels A/B/C/D, route beams, roll-cages
✅ **2D Fallback:** SVG для mobile и WebGL unavailable
✅ **Сценарии:** normal_flow, oversized_item, round_object, c_priority, boundary_dimensions, close_items, low_confidence, jam, emergency_stop
✅ **Criteria Cards:** Покрытие критериев OZON с привязкой к сценариям
✅ **Engineering Details:** Sensors, PID, Timeline, Event Log, 3D capability check
✅ **Документация:** README, ARCHITECTURE, DEMO_SCRIPT, SCENARIOS, JURY_QA, SUBMISSION_CHECKLIST, UI_UX_REDESIGN_AUDIT, THREE_D_FEASIBILITY
✅ **Тесты:** 16/16 passed (classifier, scenarios, demo steps, criteria)
✅ **Docker:** compose project `owl`, nginx, domain checks OK
✅ **C-priority:** Габариты проверяются первыми, oversized + round → C
## 4. Что нужно добавить/исправить
### 4.1. КРИТИЧЕСКИЕ исправления параметров
❌ **`src/domain/classifier.ts`:**
```typescript
// БЫЛО:
min: { width: 10, depth: 10, height: 10 },
roundnessThreshold: 0.8,
// ДОЛЖНО БЫТЬ:
min: { width: 10, depth: 10, height: 2 },
roundnessThreshold: 0.7,
```
❌ **`README.md`:**
- Строка 153: "min: width >= 10 мм, depth >= 10 мм, height >= 10 мм" → **height >= 2 мм**
- Строка 155: "roundness threshold: 0.8" → **0.7**
- Строка 132: "roundness >= 0.8" → **>= 0.7**
❌ **`src/data/scenarios.ts`:**
- Строка 26: "roundness >= 0.8" → **>= 0.7**
❌ **`docs/JURY_QA.md`:**
- Строка 45: "10×10×10 mm" → **10×10×2 mm**
- Строка 45: "threshold 0.8" → **threshold 0.7**
❌ **`docs/SUBMISSION_CHECKLIST.md`:**
- Строка 21: "10×10×10 mm" → **10×10×2 mm**
### 4.2. Точечные UX улучшения
⚠️ **Hero Section:**
- Добавить крупный proof-line: `Detection → Classification → ROUTE_TO_* → Actuator → B/C/D`
- Добавить бейджи параметров: `Конвейер 1 м/с`, `Min 10×10×2 мм`, `Max 450×320×320 мм`, `K ≥ 0.7 → D`, `C priority`
⚠️ **Product Demo Section:**
- Сделать крупнее блок текущего решения: **Category / Command / Target / Why**
- Для C-priority явно показать: "dimensions failed, so C has priority even though K = 0.93"
⚠️ **C-priority explanation:**
- Добавить заметную карточку/блок с объяснением приоритета C над D
⚠️ **Mobile fallback:**
- Добавить текст объяснения: "3D Digital Twin доступен на desktop. На узком экране включена 2D-схема с той же логикой."
⚠️ **Engineering Details:**
- Добавить пояснение про physics engine: "Physics engine не включён в production-сцену намеренно: для защиты важна воспроизводимая маршрутизация B/C/D."
### 4.3. Документация
⚠️ **README.md:**
- Добавить раздел "input_info" с описанием использованных материалов
- Добавить упоминание тестового набора товаров (11 STEP/STL моделей)
⚠️ **DEMO_SCRIPT.md:**
- Добавить финальный 7-минутный тайминг:
- 0:00–0:20 что это
- 0:20–0:45 полный контур
- 0:45–1:30 B
- 1:30–2:15 C
- 2:15–3:00 D
- 3:00–3:45 C-priority
- 3:45–4:30 low confidence/fault
- 4:30–5:30 Engineering Details
- 5:30–6:30 критерии и метрики
- 6:30–7:00 ограничения и развитие
⚠️ **JURY_QA.md:**
- Добавить вопрос про physics engine (уже есть, но дополнить)
- Добавить вопрос про тестовый набор STEP/STL моделей
- Обновить параметры 10×10×2 и 0.7
⚠️ **SUBMISSION_CHECKLIST.md:**
- Обновить параметры
- Добавить пункт про input_info analysis
⚠️ **Новый файл: docs/INPUT_INFO_ANALYSIS.md** ✅ (этот документ)
### 4.4. Тесты
⚠️ **Обновить тесты под новые параметры:**
- classifier.test.ts: проверки min height 2 мм, roundness 0.7
- scenarios.test.ts: обновить ожидаемые результаты если изменились
### 4.5. 3D Scene labels
⚠️ **Проверить метки в 3D:**
- A Input
- Накопитель / Accumulator
- CV Camera
- Stop-gate
- Pusher C
- Pusher D
- B Main sorter
- C Dimensions reject
- D Repack
Убедиться, что labels крупные и понятные.
## 5. Что использовать в UI
### Формулировки для Hero:
**Заголовок:**
> Интеллектуальная система предварительной сортировки товаров
**Подзаголовок:**
> 3D-симуляция ПАК показывает полный цикл: товар поступает из A, определяется CV-модулем, классифицируется в B/C/D и физически маршрутизируется исполнительной частью.
**Proof-line:**
> Detection → Classification → ROUTE_TO_* → Actuator → B/C/D
**Бейджи параметров:**
- Конвейер 1 м/с
- Min 10×10×2 мм
- Max 450×320×320 мм
- K ≥ 0.7 → D
- C priority
### Формулировки для Product Demo:
**Current decision summary (крупно):**
```
Category: B / C / D
Command: ROUTE_TO_B / ROUTE_TO_C / ROUTE_TO_D
Target: Zone B / Zone C / Zone D
Why: [1 короткая строка]
```
**Примеры Why:**
- B: "dimensions pass and round section is not detected"
- C: "dimensions failed (oversized)"
- D: "dimensions pass, but K = 0.92 ≥ 0.7"
- C-priority: "dimensions failed, so C has priority even though K = 0.93"
### Формулировки для C-priority explanation:
**Заголовок:**
> Почему C имеет приоритет?
**Текст:**
> Если товар одновременно негабаритный и имеет круг в сечении, он направляется в C. Сначала проверяются габариты, и только если они проходят — форма. Это предотвращает попадание негабаритных объектов в основной сортировщик.
### Формулировки для mobile fallback:
> 3D Digital Twin доступен на desktop. На узком экране включена 2D-схема с той же логикой классификации и маршрутизации.
### Формулировки для Engineering Details (physics engine):
> В демо используется управляемая 3D state-machine simulation. Physics engine не включён в production-сцену намеренно: для защиты важна воспроизводимая маршрутизация B/C/D. Архитектура допускает подключение physics engine позднее.
## 6. Что использовать в документации
### README.md:
**Новый раздел после "Стек":**
```markdown
## input_info
Проект разработан в соответствии с официальной постановкой задачи OZON Tech Track 3.
**Использованные материалы:**
- `Постановка_Задача_3_сжато_2.pdf` — полная постановка задачи (правила классификации, схема участка, критерии оценки)
- `doc-1783009942.pdf` — схема рабочей зоны с размерами A/B/C/D
- `doc-1783011400.pdf` — критерии оценки Track 3 (матрица баллов)
- `doc-1782987706.zip` → STEP модели тестовых товаров (11 шт)
- `doc-1782987733.zip` → STL модели тестовых товаров (11 шт)
**Тестовый набор товаров:**
Цилиндр, Шлем, Бутылка, Мешок, Тарелка, Короб 400×400×300, ЛанчБокс, Короб 300×200×200, Пуфик, Ручка, Моющее средство.
**Параметры классификации (согласно постановке):**
- Min dimensions: **10×10×2 мм**
- Max dimensions: 450×320×320 мм
- Roundness threshold: K ≥ **0.7**
- Conveyor speed: 1.00 м/с
- C-priority: габариты проверяются первыми
Подробный анализ: `docs/INPUT_INFO_ANALYSIS.md`
```
### DEMO_SCRIPT.md:
**Добавить секцию "7-Minute Structure":**
```markdown
## 7-Minute Structure
Рекомендуемый тайминг для защиты (максимум 7 минут):
- **0:00–0:20** Что это за система? ПАК предварительной сортировки, полный цикл A → CV → B/C/D.
- **0:20–0:45** Полный контур: Detection → Classification → Command → Actuator → Route.
- **0:45–1:30** Категория B: габариты проходят, нет круга, зелёный маршрут в основной сортировщик.
- **1:30–2:15** Категория C: негабаритный товар, оранжевый маршрут в roll-cage C.
- **2:15–3:00** Категория D: габариты проходят, но круг в сечении (K ≥ 0.7), фиолетовый маршрут в roll-cage D.
- **3:00–3:45** C-priority: негабаритный + круглый → всё равно C (приоритет габаритов).
- **3:45–4:30** Low confidence и fault: rule-based fallback, FAULT состояние, EMERGENCY_STOP.
- **4:30–5:30** Engineering Details: timeline, PID, sensors, event log, 3D capability check.
- **5:30–6:30** Критерии OZON и метрики: cycle time, устойчивость, воспроизводимость.
- **6:30–7:00** Ограничения MVP и развитие: real CV, physics engine, WebSocket телеметрия.
```
### JURY_QA.md:
**Обновить вопрос 11:**
```markdown
## 11. How Are Dimensions And Circular Section Handled?
Dimensions are checked first against min/max: **10×10×2 mm** to 450×320×320 mm. If they pass, roundness K = r_in / r_out is checked against threshold **0.7**. Conveyor target speed is 1.00 m/s.
```
**Добавить новый вопрос 22:**
```markdown
## 22. Where Are The Test Object Models From input_info?
The official test set includes 11 STEP/STL models from input_info: Cylinder, Helmet, Bottle, Bag, Plate, Box 400×400×300, Lunchbox, Box 300×200×200, Pouf, Pen, Detergent. These models can be used to validate classification correctness on realistic geometries.
```
## 7. Риски
### 7.1. Изменение параметров может сломать тесты
✅ **Митигация:** Сначала обновить `classifier.ts`, затем запустить тесты, исправить ожидаемые результаты где нужно.
### 7.2. Изменение min height с 10 на 2 мм может изменить категории некоторых товаров
✅ **Митигация:** Проверить все товары в `items.ts`:
- SKU-009 (Pen 9×13×148): width 9 < 10, всё равно C ✅
- Остальные товары имеют height > 10 мм, изменение не влияет ✅
### 7.3. Изменение roundness threshold с 0.8 на 0.7 может изменить категории
✅ **Митигация:** Проверить все товары:
- SKU-006 (Plate, roundness 0.95): было D, останется D ✅
- SKU-007 (Bottle, roundness 0.92): было D, останется D ✅
- SKU-008 (Cylinder, roundness 0.88): было D, останется D ✅
- SKU-005 (Pouf, roundness 0.74): было C (oversized), останется C ✅
- Нет товаров с roundness между 0.7 и 0.8, которые меняют категорию ✅
### 7.4. Нет видеодемонстрации
⚠️ **Риск:** Требование к сдаче включает видеодемонстрацию работы решения.
✅ **Митигация:** Указать в SUBMISSION_CHECKLIST и JURY_QA, что live demo на сайте заменяет видео, но при необходимости можно записать screen capture 7-минутного прохода.
### 7.5. Нет реального ML / CV
⚠️ **Риск:** Жюри может спросить про настоящее машинное зрение.
✅ **Митигация:** Уже указано в JURY_QA.md: "The MVP uses pseudo-CV: bbox, dimensions, confidence and latency are derived from mock items. The architecture keeps CV output separate from classification, so a real CV service can replace it later."
## 8. Definition of Done
Проект готов к защите, когда выполнены все пункты:
### 8.1. Параметры классификации
- [ ] `src/domain/classifier.ts`: min height = 2 мм, roundness threshold = 0.7
- [ ] `README.md`: обновлены параметры
- [ ] `src/data/scenarios.ts`: обновлено описание roundness
- [ ] `docs/JURY_QA.md`: обновлены параметры
- [ ] `docs/SUBMISSION_CHECKLIST.md`: обновлены параметры
### 8.2. UX улучшения
- [ ] Hero: добавлен proof-line и бейджи параметров
- [ ] Product Demo: крупный блок Category / Command / Target / Why
- [ ] C-priority: отдельная карточка/блок объяснения
- [ ] Mobile fallback: текст объяснения
- [ ] Engineering Details: пояснение про physics engine
### 8.3. Документация
- [ ] `docs/INPUT_INFO_ANALYSIS.md`: создан ✅
- [ ] `README.md`: добавлен раздел input_info
- [ ] `DEMO_SCRIPT.md`: добавлен 7-минутный тайминг
- [ ] `JURY_QA.md`: обновлены ответы, добавлен вопрос про тестовые модели
- [ ] `SUBMISSION_CHECKLIST.md`: обновлён
### 8.4. Тесты
- [ ] `npm run test` проходит
- [ ] Все 16+ тестов зелёные
### 8.5. Build & Deploy
- [ ] `npm run build` успешно
- [ ] Docker project `owl` перезапущен
- [ ] `https://arhipovdan.ru/` открывается
- [ ] `https://www.arhipovdan.ru/` открывается
- [ ] `https://ai-shorts.ru/` не затронут
### 8.6. Visual QA
- [ ] Desktop 1920×1080: Hero понятен, proof-line виден, бейджи читаемы
- [ ] Laptop 1440×900: Category/Command/Target крупные
- [ ] Mobile 390×844: fallback объяснён, нет horizontal scroll
- [ ] Сценарии: B / C / D / C-priority / low confidence / fault / emergency работают
- [ ] Console: no React errors, no WebGL errors
### 8.7. Git
- [ ] `git status` показывает только изменённые файлы (нет мусора)
- [ ] `git diff` проверен
- [ ] Команды для commit/push подготовлены (но НЕ выполнены)
---
**Дата создания:** 2026-07-04
**Автор:** Claude Sonnet 4.5
**Цель:** Привести проект в полное соответствие с официальной постановкой задачи OZON Tech Track 3 перед финальной защитой.