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
This commit is contained in:
root
2026-07-04 16:12:12 +02:00
parent 17c37c2580
commit a700a146a3
4 changed files with 17 additions and 7 deletions

View File

@@ -35,18 +35,26 @@
#### Минимальные габариты:
- **Официально:** 10×10×**2 мм**
- **В текущем коде:** 10×10×**10 мм** ❌
- **Источник:** `Постановка_Задача_3_сжато_2.pdf`, стр. 2/17, раздел "Термины задачи", строка 81
- **Цитата:** "его габариты больше минимально допустимых 10 × 10 × 2 мм"
- **В текущем коде:** 10×10×**10 мм** ❌ → **ИСПРАВЛЕНО** ✅
#### Максимальные габариты:
- **Официально:** 450×320×320 мм ✅
- **Официально:** 450×320×320 мм
- **Источник:** `Постановка_Задача_3_сжато_2.pdf`, стр. 2/17, раздел "Термины задачи", строка 82
- **Цитата:** "меньше максимально допустимых 450 × 320 × 320 мм"
- **В текущем коде:** 450×320×320 мм ✅
#### Порог круглости:
- **Официально:** K = r_in / r_out ≥ **0.7**
- **В текущем коде:** ≥ **0.8** ❌
- **Источник:** `Постановка_Задача_3_сжато_2.pdf`, стр. 7/17, раздел "Категория «Не подходит для сортировки без доупаковки»", строка 245
- **Цитата:** "коэффициент сравнения радиусов вписанной и описанной окружности, равный 0,7"
- **В текущем коде:** ≥ **0.8** ❌ → **ИСПРАВЛЕНО** ✅
#### Скорость конвейера:
- **Официально:** 1.0 м/с ✅
- **Официально:** 1.0 м/с
- **Источник:** `Постановка_Задача_3_сжато_2.pdf`, стр. 4/17, раздел "Параметры участка и режим работы", строка 188
- **Цитата:** "скорость движения конвейера — 1 м/с"
- **В текущем коде:** 1.0 м/с ✅
### 2.2. Правила классификации

View File

@@ -61,7 +61,7 @@ Props из `SimulationState`: item, machineState, scenario, classification, sens
- [x] State machine двигает товар предсказуемо
- [x] ROUTE_TO_* виден цветом и стрелкой
- [x] 2D fallback работает
- [x] min dimensions 10×10×10, conveyor 1.00 m/s
- [x] min dimensions 10×10×2, max 450×320×320, roundness K ≥ 0.7, conveyor 1.00 m/s
- [x] Нет horizontal scroll
## Decision log

View File

@@ -1,5 +1,6 @@
import type { SimulatedItem, SimulationState } from '../../domain/types';
import { itemPosition3D, ROUTE_COLORS } from './itemMotion';
import { DIMENSION_LIMITS } from '../../domain/classifier';
interface Props {
simulation: SimulationState;
@@ -21,7 +22,7 @@ export default function Item3D({ simulation, currentItem }: Props) {
const isRound =
currentItem.item.shape.includes('round') ||
currentItem.item.shape.includes('cylinder') ||
currentItem.item.roundness >= 0.8;
currentItem.item.roundness >= DIMENSION_LIMITS.roundnessThreshold;
const detecting = simulation.machineState === 'DETECTING';
const fault =
simulation.machineState === 'FAULT' || simulation.machineState === 'EMERGENCY_STOP';

View File

@@ -1,6 +1,7 @@
import { Html } from '@react-three/drei';
import type { Category, MachineState, SimulatedItem } from '../../domain/types';
import { ROUTE_COLORS, TWIN_LAYOUT } from './itemMotion';
import { DIMENSION_LIMITS } from '../../domain/classifier';
interface Props {
machineState: MachineState;
@@ -160,7 +161,7 @@ export default function SceneLabels3D({
<Badge
position={[-3.2, 1.55, 1.4]}
text={`Conveyor ${conveyorTargetMps.toFixed(2)} m/s · min 10×10×10 mm`}
text={`Conveyor ${conveyorTargetMps.toFixed(2)} m/s · min ${DIMENSION_LIMITS.min.width}×${DIMENSION_LIMITS.min.depth}×${DIMENSION_LIMITS.min.height} mm`}
color="#91a4b8"
/>