feat: align 3D digital twin with OZON Track 3 requirements
This commit is contained in:
@@ -14,7 +14,7 @@ export const OZON_CRITERIA: OzonCriterion[] = [
|
||||
title: 'Classification rules: dimensions, roundness, priority',
|
||||
status: 'covered',
|
||||
evidence: 'ClassificationPanel shows thresholds, actual values, PASS/FAIL and C priority.',
|
||||
relatedScenarioIds: ['oversized_item', 'round_object', 'boundary_dimensions'],
|
||||
relatedScenarioIds: ['oversized_item', 'round_object', 'c_priority', 'boundary_dimensions'],
|
||||
relatedDoc: 'docs/ARCHITECTURE.md',
|
||||
},
|
||||
{
|
||||
|
||||
@@ -49,10 +49,23 @@ export const DEMO_STEPS: DemoStep[] = [
|
||||
relatedCriteria: ['classification-rules', 'geometry-variety', 'physical-routing'],
|
||||
presenterPhrase: 'The dimensions fit, but roundness is high, so the system sends it to D for do-upakovka.',
|
||||
},
|
||||
{
|
||||
id: 'c-priority-oversized-round',
|
||||
title: 'C priority oversized + round',
|
||||
scenarioId: 'c_priority',
|
||||
preferredAction: 'step',
|
||||
focusArea: 'classification',
|
||||
explanation: 'Item is both oversized and round; dimensions are checked first so category is C, not D.',
|
||||
whatToWatch: 'DIM FAIL, K high, category C, ROUTE_TO_C active, route D inactive.',
|
||||
juryValue: 'Proves C-priority rule for Track 3.',
|
||||
relatedCriteria: ['classification-rules', 'boundary-cases', 'physical-routing'],
|
||||
presenterPhrase: 'Even though the item is round, dimensions fail first, so we route only to C.',
|
||||
},
|
||||
{
|
||||
id: 'boundary-dimensions',
|
||||
title: 'Boundary dimensions',
|
||||
scenarioId: 'boundary_dimensions',
|
||||
|
||||
preferredAction: 'step',
|
||||
focusArea: 'classification',
|
||||
explanation: 'Items at the edge of the allowed envelope prove the rule implementation is stable.',
|
||||
|
||||
@@ -91,6 +91,15 @@ export const ITEMS: Item[] = [
|
||||
shape: 'boundary box',
|
||||
expectedCategory: 'B',
|
||||
},
|
||||
{
|
||||
id: 'SKU-011',
|
||||
name: 'Oversized round 500x300x300',
|
||||
dimensionsMm: { width: 500, depth: 300, height: 300 },
|
||||
roundness: 0.93,
|
||||
confidence: 0.88,
|
||||
shape: 'oversized round cylinder',
|
||||
expectedCategory: 'C',
|
||||
},
|
||||
];
|
||||
|
||||
export function getItem(id: string): Item {
|
||||
|
||||
@@ -6,6 +6,7 @@ const expectedIds: ScenarioId[] = [
|
||||
'normal_flow',
|
||||
'oversized_item',
|
||||
'round_object',
|
||||
'c_priority',
|
||||
'boundary_dimensions',
|
||||
'close_items',
|
||||
'low_confidence',
|
||||
|
||||
@@ -29,6 +29,15 @@ export const SCENARIOS: Scenario[] = [
|
||||
demonstrates: 'Rule-based shape issue routing без реального ML на MVP-этапе.',
|
||||
items: ['SKU-006', 'SKU-007', 'SKU-008'].map(getItem),
|
||||
},
|
||||
{
|
||||
id: 'c_priority',
|
||||
name: 'C priority (oversized + round)',
|
||||
description: 'Товар одновременно негабаритный и круглый — приоритет габаритов, маршрут только в C.',
|
||||
goal: 'Доказать, что dimensions check идёт раньше roundness: категория C, не D.',
|
||||
expectedCategorySummary: 'C only (D not activated)',
|
||||
demonstrates: 'C-priority: oversized + round → ROUTE_TO_C, route D остаётся неактивным.',
|
||||
items: ['SKU-011'].map(getItem),
|
||||
},
|
||||
{
|
||||
id: 'boundary_dimensions',
|
||||
name: 'Boundary dimensions',
|
||||
|
||||
Reference in New Issue
Block a user