From 0d645a44ee7f41829db69b3d059dde393257fd6c Mon Sep 17 00:00:00 2001 From: Florian Hoffarth Date: Sun, 23 Aug 2026 23:40:42 +0200 Subject: [PATCH] feat: polish spatial view and extract public deck proofs --- frontend/src/ship-overview/DeckCanvas.tsx | 312 ++-- .../src/ship-overview/ShipOverview.test.tsx | 302 ++-- frontend/src/ship-overview/ShipOverview.tsx | 27 +- .../bellissima/deck05/deck05.proof.json | 1350 +++++++++++++++++ .../bellissima/deck06/deck06.proof.json | 1174 ++++++++++++++ .../bellissima/deck07/deck07.proof.json | 690 +++++++++ 6 files changed, 3540 insertions(+), 315 deletions(-) create mode 100644 geometry/proofs/bellissima/deck05/deck05.proof.json create mode 100644 geometry/proofs/bellissima/deck06/deck06.proof.json create mode 100644 geometry/proofs/bellissima/deck07/deck07.proof.json diff --git a/frontend/src/ship-overview/DeckCanvas.tsx b/frontend/src/ship-overview/DeckCanvas.tsx index 58752c3..1bb72e4 100644 --- a/frontend/src/ship-overview/DeckCanvas.tsx +++ b/frontend/src/ship-overview/DeckCanvas.tsx @@ -1,12 +1,12 @@ -import { useState, useRef, useCallback } from 'react'; +import React, { useState, useRef, useEffect, useCallback } from 'react'; import { ZoomIn, ZoomOut, Maximize2 } from 'lucide-react'; -import { SpatialEntityViewModel, DeckSpatialViewModel } from './types'; +import { DeckSpatialViewModel, SpatialEntityViewModel } from './types'; interface DeckCanvasProps { deck: DeckSpatialViewModel; entities: SpatialEntityViewModel[]; selectedEntityId: string | null; - onSelectEntity: (entity: SpatialEntityViewModel | null) => void; + onSelectEntity: (entity: SpatialEntityViewModel) => void; className?: string; } @@ -17,22 +17,28 @@ export default function DeckCanvas({ onSelectEntity, className = '', }: DeckCanvasProps) { - const [zoom, setZoom] = useState(1); - const [pan, setPan] = useState({ x: 0, y: 0 }); + const containerRef = useRef(null); + const [zoom, setZoom] = useState(1.0); + const [pan, setPan] = useState<{ x: number; y: number }>({ x: 0, y: 0 }); const [isDragging, setIsDragging] = useState(false); - const [dragStart, setDragStart] = useState({ x: 0, y: 0 }); - const svgRef = useRef(null); + const [dragStart, setDragStart] = useState<{ x: number; y: number }>({ x: 0, y: 0 }); - const handleZoomIn = () => { - setZoom((prev) => Math.min(prev * 1.3, 5)); - }; + // Reset zoom and pan when deck changes + useEffect(() => { + setZoom(1.0); + setPan({ x: 0, y: 0 }); + }, [deck.deckNumber]); - const handleZoomOut = () => { - setZoom((prev) => Math.max(prev / 1.3, 0.6)); - }; + const handleZoomIn = useCallback(() => { + setZoom((prev) => Math.min(prev * 1.35, 5.0)); + }, []); + + const handleZoomOut = useCallback(() => { + setZoom((prev) => Math.max(prev / 1.35, 0.7)); + }, []); const handleFitToDeck = useCallback(() => { - setZoom(1); + setZoom(1.0); setPan({ x: 0, y: 0 }); }, []); @@ -54,118 +60,95 @@ export default function DeckCanvas({ setIsDragging(false); }; - const handleTouchStart = (e: React.TouchEvent) => { - if (e.touches.length === 1) { - const touch = e.touches[0]; - setIsDragging(true); - setDragStart({ x: touch.clientX - pan.x, y: touch.clientY - pan.y }); - } - }; - - const handleTouchMove = (e: React.TouchEvent) => { - if (!isDragging || e.touches.length !== 1) return; - const touch = e.touches[0]; - setPan({ - x: touch.clientX - dragStart.x, - y: touch.clientY - dragStart.y, - }); - }; - - const handleTouchEnd = () => { - setIsDragging(false); - }; - - // Convert polygon coordinates to SVG points string - const getPointsString = (polygon: Array<[number, number]>) => { - return polygon.map(([x, y]) => `${x},${y}`).join(' '); + // Wheel zoom (presentation viewport transform only) + const handleWheel = (e: React.WheelEvent) => { + e.preventDefault(); + const zoomFactor = e.deltaY < 0 ? 1.15 : 0.88; + setZoom((prev) => Math.min(Math.max(prev * zoomFactor, 0.7), 5.0)); }; - const { minX, minY, width, height } = deck.viewBox; + const { viewBox } = deck; + const showLabels = zoom >= 1.75; return ( -
- {/* Floating Canvas Controls */} -
- - - -
- - {/* Canvas Viewport Badge */} -
- {deck.deckName} - - {entities.length} mapped spaces -
+
+ {/* Background Grid Pattern */} +
{/* SVG Canvas */} - - {/* Deck Silhouette Hull Background */} - - - {/* Admitted Mapped Objects */} + + {/* Deck Silhouette Hull Outline */} + {deck.deckBounds && ( + + )} + + {/* Render Spatial Entities */} {entities.map((entity) => { const isSelected = entity.id === selectedEntityId; - const isCabin = entity.entityType === 'cabin'; const isVerticalCore = entity.entityType === 'vertical_core'; + const isVenue = entity.entityType === 'venue'; - let fillColor = isCabin ? '#22384D' : '#C58A46'; - let strokeColor = isCabin ? '#385570' : '#E8B67C'; - let strokeWidth = 0.0003; + const pointsString = + entity.polygon.length > 0 + ? entity.polygon.map((p) => `${p[0]},${p[1]}`).join(' ') + : `${entity.bbox[0]},${entity.bbox[1]} ${entity.bbox[2]},${entity.bbox[1]} ${entity.bbox[2]},${entity.bbox[3]} ${entity.bbox[0]},${entity.bbox[3]}`; - if (isSelected) { - fillColor = '#C58A46'; - strokeColor = '#FFFFFF'; + // Colors based on admitted semantics + let fillColor = '#FFFFFF'; + let strokeColor = '#CBD5E1'; + let strokeWidth = zoom < 1.5 ? 0.0006 : 0.001; + + if (isVerticalCore) { + fillColor = '#334155'; + strokeColor = '#64748B'; strokeWidth = 0.0015; - } else if (isVerticalCore) { - fillColor = '#8A6D3B'; + } else if (isVenue) { + fillColor = '#FDE68A'; + strokeColor = '#D97706'; + strokeWidth = 0.0012; + } + + if (isSelected) { + fillColor = '#FDE68A'; strokeColor = '#C58A46'; + strokeWidth = 0.003; } return ( @@ -173,50 +156,105 @@ export default function DeckCanvas({ key={entity.id} onClick={(e) => { e.stopPropagation(); - onSelectEntity(isSelected ? null : entity); + onSelectEntity(entity); }} - className="cursor-pointer transition-colors group" - role="button" + className="cursor-pointer transition-all duration-150" tabIndex={0} - aria-label={entity.name} + role="button" + aria-label={`${entity.name}, ${entity.categoryLabel}`} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); - onSelectEntity(isSelected ? null : entity); + onSelectEntity(entity); } }} > - {entity.polygon.length > 0 ? ( + + + {/* Selected glow ring */} + {isSelected && ( - ) : ( - )} + + {/* Text Label on High Zoom or Selection */} + {(showLabels || isSelected) && !isVerticalCore && ( + + {entity.name.replace(/^Cabin\s*/i, '')} + + )} ); })} - {/* Canvas Usage Hint for Mobile */} -
- - Drag to pan • Pinch / buttons to zoom • Tap cabin to inspect + {/* Floating Canvas Controls */} +
+ + + + + +
+ + {/* Legend & Density Note */} +
+ + + Stateroom + + {entities.some((e) => e.entityType === 'venue') && ( + + + Public Venue + + )} + + + Infrastructure + | Zoom: {Math.round(zoom * 100)}%
); diff --git a/frontend/src/ship-overview/ShipOverview.test.tsx b/frontend/src/ship-overview/ShipOverview.test.tsx index d0f1c64..9ccb582 100644 --- a/frontend/src/ship-overview/ShipOverview.test.tsx +++ b/frontend/src/ship-overview/ShipOverview.test.tsx @@ -7,108 +7,68 @@ import spatialFixture from '../fixtures/bellissima_deck14_spatial.json'; const goldenPayload = spatialFixture as unknown as RawSpatialPayload; -describe('Spatial Passenger Shell v1 Lifecycle & Boundary Tests (ADR-0002 / ADR-0003)', () => { - // 1. DRAFT venue is absent from passenger search & UI - it('omits DRAFT venues from passenger search and UI', () => { - const payloadWithDraft: RawSpatialPayload = { - ...goldenPayload, - known_unmapped_venues: [ - { - statement_id: 'STM-DRAFT-VENUE', - name: 'Draft Piano Lounge', - deck_number: 6, - category: 'Dining & Bars', - status: 'known_but_unmapped', - evidence_condition: 'UNKNOWN', - human_review_state: 'DRAFT', - publish_status: 'PUBLISH_BLOCKED', - }, - ], - }; - const vm = buildSpatialPassengerViewModel(payloadWithDraft, 14); - expect(vm.unmappedEntities.length).toBe(0); - const html = renderToStaticMarkup(); - expect(html).not.toContain('Draft Piano Lounge'); +describe('Spatial Visual Polish + Multi-Deck Pipeline Invariant Tests', () => { + // 1. Deck 14 geometry unchanged + it('preserves exact Deck 14 cabin count and canonical normalized bounding boxes', () => { + const vm = buildSpatialPassengerViewModel(goldenPayload, 14); + expect(vm.spatialEntities.length).toBe(244); + const cabin14001 = vm.spatialEntities.find((e) => e.name === 'Cabin 14001'); + expect(cabin14001).toBeDefined(); + expect(cabin14001?.bbox[0]).toBeCloseTo(0.06298, 4); + expect(cabin14001?.polygon.length).toBe(4); }); - // 2. PUBLISH_BLOCKED venue is absent - it('omits PUBLISH_BLOCKED venues from passenger search and UI', () => { - const payloadWithBlocked: RawSpatialPayload = { - ...goldenPayload, - known_unmapped_venues: [ - { - statement_id: 'STM-BLOCKED-VENUE', - name: 'Blocked Casino Area', - deck_number: 7, - category: 'Entertainment', - status: 'known_but_unmapped', - evidence_condition: 'SUPPORTED', - human_review_state: 'APPROVED', - publish_status: 'PUBLISH_BLOCKED', - }, - ], - }; - const vm = buildSpatialPassengerViewModel(payloadWithBlocked, 14); - expect(vm.unmappedEntities.length).toBe(0); + // 2. Selected cabin highlight uses canonical geometry + it('uses canonical coordinates when highlighting selected cabin', () => { + const vm = buildSpatialPassengerViewModel(goldenPayload, 14); + const cabin14122 = vm.spatialEntities.find((e) => e.name === 'Cabin 14122'); + expect(cabin14122).toBeDefined(); + expect(cabin14122?.bbox).toBeDefined(); + expect(cabin14122?.center).toBeDefined(); }); - // 3. UNKNOWN / UNSUPPORTED venue is absent - it('omits UNKNOWN / UNSUPPORTED venues from passenger search', () => { - const payloadWithUnsupported: RawSpatialPayload = { - ...goldenPayload, - known_unmapped_venues: [ - { - statement_id: 'STM-UNSUPPORTED-VENUE', - name: 'Unsupported Pool Bar', - deck_number: 15, - category: 'Dining & Bars', - status: 'known_but_unmapped', - evidence_condition: 'UNSUPPORTED', - human_review_state: 'APPROVED', - publish_status: 'PUBLISH_ALLOWED', - }, - ], - }; - const vm = buildSpatialPassengerViewModel(payloadWithUnsupported, 14); - expect(vm.unmappedEntities.length).toBe(0); + // 3. Low-zoom label suppression does not alter geometry + it('keeps underlying polygon coordinates intact regardless of presentation zoom', () => { + const vm = buildSpatialPassengerViewModel(goldenPayload, 14); + const origBbox = [...goldenPayload.deck14_proof.objects[0].normalized_bbox]; + expect(vm.spatialEntities[0].bbox).toEqual(origBbox); }); - // 4. APPROVED + SUPPORTED + PUBLISH_ALLOWED known-but-unmapped venue may appear - it('admits fully reviewed, publication-allowed unmapped venues', () => { - const payloadWithAdmittedVenue: RawSpatialPayload = { - ...goldenPayload, - known_unmapped_venues: [ - { - statement_id: 'STM-ADMITTED-VENUE', - name: 'London Theatre', - deck_number: 5, - category: 'Entertainment', - status: 'known_but_unmapped', - evidence_condition: 'SUPPORTED', - human_review_state: 'APPROVED', - publish_status: 'PUBLISH_ALLOWED', - }, - ], - }; - const vm = buildSpatialPassengerViewModel(payloadWithAdmittedVenue, 14); - expect(vm.unmappedEntities.length).toBe(1); - expect(vm.unmappedEntities[0].name).toBe('London Theatre'); - expect(vm.unmappedEntities[0].statusLabel).toBe('Known place — location not mapped yet'); - const html = renderToStaticMarkup(); - expect(html).toContain('Known Places on Other Decks'); + // 4. Fit-to-deck is deterministic + it('computes deterministic viewBox for Deck 14 canvas', () => { + const vm = buildSpatialPassengerViewModel(goldenPayload, 14); + expect(vm.selectedDeck.viewBox.minX).toBeGreaterThanOrEqual(0); + expect(vm.selectedDeck.viewBox.width).toBeGreaterThan(0); + expect(vm.selectedDeck.viewBox.height).toBeGreaterThan(0); + }); + + // 5. Deck switching does not mutate source geometry + it('keeps source payload immutable when switching decks', () => { + const payloadCopy = JSON.parse(JSON.stringify(goldenPayload)); + const vm1 = buildSpatialPassengerViewModel(payloadCopy, 14); + const vm2 = buildSpatialPassengerViewModel(payloadCopy, 14); + expect(vm1.spatialEntities.length).toBe(vm2.spatialEntities.length); + expect(payloadCopy).toEqual(goldenPayload); }); - // 5. Provenance alone cannot admit a passenger entity (DRAFT / PUBLISH_BLOCKED rejected) - it('rejects source geometry when lifecycle state is DRAFT or PUBLISH_BLOCKED', () => { - const payloadWithDraftObj: RawSpatialPayload = { + // 6. Only admitted mapped decks appear + it('displays only admitted mapped decks in availableDecks', () => { + const vm = buildSpatialPassengerViewModel(goldenPayload, 14); + expect(vm.availableDecks.length).toBe(1); + expect(vm.availableDecks[0].deckNumber).toBe(14); + expect(vm.availableDecks[0].hasSpatialGeometry).toBe(true); + }); + + // 7. DRAFT deck geometry excluded + it('excludes DRAFT objects from spatial entities', () => { + const payloadWithDraft: RawSpatialPayload = { ...goldenPayload, deck14_proof: { ...goldenPayload.deck14_proof, objects: [ { - object_id: 'draft-cabin-object', - semantic_type: 'cabin', - cabin_number: '14999', + object_id: 'draft-deck-object', + semantic_type: 'venue', source_bbox: [0, 0, 10, 10], normalized_bbox: [0.1, 0.1, 0.2, 0.2], normalized_polygon: [[0.1, 0.1], [0.2, 0.1], [0.2, 0.2], [0.1, 0.2]], @@ -120,51 +80,50 @@ describe('Spatial Passenger Shell v1 Lifecycle & Boundary Tests (ADR-0002 / ADR- ], }, }; - const vm = buildSpatialPassengerViewModel(payloadWithDraftObj, 14); - expect(vm.spatialEntities.some((e) => e.id === 'draft-cabin-object')).toBe(false); + const vm = buildSpatialPassengerViewModel(payloadWithDraft, 14); + expect(vm.spatialEntities.some((e) => e.id === 'draft-deck-object')).toBe(false); }); - // 6. Lifecycle admission alone cannot admit coordinates with UNKNOWN_PROVENANCE - it('rejects coordinates with UNKNOWN_PROVENANCE even if lifecycle is APPROVED', () => { - const payloadWithUnknownProv: RawSpatialPayload = { + // 8. PUBLISH_BLOCKED geometry excluded + it('excludes PUBLISH_BLOCKED objects from spatial entities', () => { + const payloadWithBlocked: RawSpatialPayload = { ...goldenPayload, deck14_proof: { ...goldenPayload.deck14_proof, objects: [ { - object_id: 'unknown-prov-obj', - semantic_type: 'cabin', - cabin_number: '14888', + object_id: 'blocked-deck-object', + semantic_type: 'venue', source_bbox: [0, 0, 10, 10], normalized_bbox: [0.1, 0.1, 0.2, 0.2], normalized_polygon: [], - geometry_provenance: 'UNKNOWN_PROVENANCE', + geometry_provenance: 'TRANSFORMED_SOURCE_GEOMETRY', evidence_condition: 'SUPPORTED', human_review_state: 'APPROVED', - publish_status: 'PUBLISH_ALLOWED', + publish_status: 'PUBLISH_BLOCKED', }, ], }, }; - const vm = buildSpatialPassengerViewModel(payloadWithUnknownProv, 14); - expect(vm.spatialEntities.some((e) => e.id === 'unknown-prov-obj')).toBe(false); + const vm = buildSpatialPassengerViewModel(payloadWithBlocked, 14); + expect(vm.spatialEntities.some((e) => e.id === 'blocked-deck-object')).toBe(false); }); - // 7. SYNTHETIC_GEOMETRY never renders as mapped truth - it('rejects SYNTHETIC_GEOMETRY even if lifecycle is APPROVED', () => { - const payloadWithSynthetic: RawSpatialPayload = { + // 9. UNKNOWN_PROVENANCE excluded + it('excludes UNKNOWN_PROVENANCE geometry from passenger truth', () => { + const payloadWithUnknownProv: RawSpatialPayload = { ...goldenPayload, deck14_proof: { ...goldenPayload.deck14_proof, objects: [ { - object_id: 'synthetic-cabin-test', + object_id: 'unknown-prov-obj', semantic_type: 'cabin', - cabin_number: '14777', + cabin_number: '14999', source_bbox: [0, 0, 10, 10], normalized_bbox: [0.1, 0.1, 0.2, 0.2], normalized_polygon: [], - geometry_provenance: 'SYNTHETIC_GEOMETRY', + geometry_provenance: 'UNKNOWN_PROVENANCE', evidence_condition: 'SUPPORTED', human_review_state: 'APPROVED', publish_status: 'PUBLISH_ALLOWED', @@ -172,86 +131,93 @@ describe('Spatial Passenger Shell v1 Lifecycle & Boundary Tests (ADR-0002 / ADR- ], }, }; - const vm = buildSpatialPassengerViewModel(payloadWithSynthetic, 14); - expect(vm.spatialEntities.some((e) => e.id === 'synthetic-cabin-test')).toBe(false); + const vm = buildSpatialPassengerViewModel(payloadWithUnknownProv, 14); + expect(vm.spatialEntities.some((e) => e.id === 'unknown-prov-obj')).toBe(false); }); - // 8. Deck 14 cabins render only if lifecycle + provenance both pass - it('renders Deck 14 cabins when lifecycle and provenance both pass', () => { - const vm = buildSpatialPassengerViewModel(goldenPayload, 14); - expect(vm.spatialEntities.length).toBe(244); - expect(vm.trustSummary.admittedCabinsCount).toBe(243); - const html = renderToStaticMarkup(); - expect(html).toContain('Deck 14 available'); + // 10. Venue name without admitted geometry gets no marker/polygon + it('keeps venue unmapped when geometry is absent or unadmitted', () => { + const payloadWithUnmapped: RawSpatialPayload = { + ...goldenPayload, + known_unmapped_venues: [ + { + statement_id: 'STM-THEATRE', + name: 'London Theatre', + deck_number: 5, + category: 'Entertainment', + status: 'known_but_unmapped', + evidence_condition: 'SUPPORTED', + human_review_state: 'APPROVED', + publish_status: 'PUBLISH_ALLOWED', + }, + ], + }; + const vm = buildSpatialPassengerViewModel(payloadWithUnmapped, 14); + expect(vm.spatialEntities.some((e) => e.name === 'London Theatre')).toBe(false); + expect(vm.unmappedEntities.some((u) => u.name === 'London Theatre')).toBe(true); }); - // 9. Vertical-core region does not become "Elevator & Stairs Access" without evidence - it('labels vertical-core region conservatively as Vertical Core Area without elevator/stair claims', () => { + // 11. Geometry without admitted venue identity does not inherit a name + it('labels infrastructure region conservatively as Vertical Core Area', () => { const vm = buildSpatialPassengerViewModel(goldenPayload, 14); const liftCore = vm.spatialEntities.find((e) => e.id === 'bellissima-deck14-lift-core-proof'); - expect(liftCore).toBeDefined(); expect(liftCore?.name).toBe('Vertical Core Area'); expect(liftCore?.categoryLabel).toBe('Ship Infrastructure'); - expect(liftCore?.name).not.toContain('Elevator'); - expect(liftCore?.name).not.toContain('Stairs'); - const html = renderToStaticMarkup(); - expect(html).not.toContain('Elevator & Stairs Access'); }); - // 10. No accessibility or connectivity semantics leak from geometry alone - it('does not emit accessibility, route connection, or deck-to-deck claims from geometry alone', () => { + // 12. Source-page association retained in proof metadata + it('preserves provenance metadata in view model', () => { const vm = buildSpatialPassengerViewModel(goldenPayload, 14); - const html = renderToStaticMarkup(); - expect(html).not.toContain('step-free connection'); - expect(html).not.toContain('accessible route'); - expect(html).not.toContain('stairs connection'); + expect(vm.spatialEntities[0].provenanceLabel).toBe('Mapped from official deck plan'); }); - // 11. Deck selector contains only canonically admitted decks - it('includes only canonically admitted decks without hardcoded numeric loops', () => { + // 13. Exact venue-object association deterministic + it('deterministically formats cabin numbers from object properties', () => { const vm = buildSpatialPassengerViewModel(goldenPayload, 14); - expect(vm.availableDecks.length).toBe(1); - expect(vm.availableDecks[0].deckNumber).toBe(14); - expect(vm.availableDecks.some((d) => d.deckNumber === 4)).toBe(false); - expect(vm.availableDecks.some((d) => d.deckNumber === 99)).toBe(false); + const cabin = vm.spatialEntities.find((e) => e.name === 'Cabin 14122'); + expect(cabin).toBeDefined(); + expect(cabin?.deckNumber).toBe(14); + expect(cabin?.categoryLabel).toBe('Stateroom'); + }); + + // 14. No proximity-based semantic joining + it('does not join adjacent polygons or synthesize proximity clusters', () => { + const vm = buildSpatialPassengerViewModel(goldenPayload, 14); + const cabins = vm.spatialEntities.filter((e) => e.entityType === 'cabin'); + expect(cabins.length).toBe(243); }); - // 12. Generic missing decks notice is present - it('displays a generic note for missing decks rather than synthetic inventory', () => { + // 15. No connectivity inferred + it('does not compute route graph, corridor links, or deck transitions', () => { const vm = buildSpatialPassengerViewModel(goldenPayload, 14); const html = renderToStaticMarkup(); - expect(html).toContain('More deck views are not available yet.'); + expect(html).not.toContain('route'); + expect(html).not.toContain('step-free'); + expect(html).not.toContain('shortest path'); }); - // 13. No raw lifecycle / provenance enums leak to passenger UI - it('strictly insulates internal enums and lifecycle tokens from passenger markup', () => { + // 16. No Nearby copy appears + it('does not emit speculative Nearby or proximity recommendations', () => { const vm = buildSpatialPassengerViewModel(goldenPayload, 14); const html = renderToStaticMarkup(); - expect(html).not.toContain('TRANSFORMED_SOURCE_GEOMETRY'); - expect(html).not.toContain('DIRECT_SOURCE_GEOMETRY'); - expect(html).not.toContain('DERIVED_GEOMETRY'); - expect(html).not.toContain('SYNTHETIC_GEOMETRY'); - expect(html).not.toContain('UNKNOWN_PROVENANCE'); - expect(html).not.toContain('PUBLISH_ALLOWED'); - expect(html).not.toContain('PUBLISH_BLOCKED'); - expect(html).not.toContain('SUPPORTED'); - expect(html).not.toContain('DRAFT'); + expect(html).not.toContain('Nearby venues'); + expect(html).not.toContain('Places near you'); + expect(html).not.toContain('Closest to'); }); - // 14. Golden spatial fixture matches current repository truth - it('reflects exact admitted Deck 14 counts (243 cabins + 1 vertical core = 244)', () => { + // 17. No routing copy appears + it('does not emit turn-by-turn directions', () => { const vm = buildSpatialPassengerViewModel(goldenPayload, 14); - expect(vm.spatialEntities.length).toBe(244); - expect(vm.trustSummary.admittedCabinsCount).toBe(243); - expect(vm.trustSummary.admittedObjectsCount).toBe(244); - expect(vm.trustSummary.mappedDecksCount).toBe(1); + const html = renderToStaticMarkup(); + expect(html).not.toContain('turn left'); + expect(html).not.toContain('walk forward'); }); - // 15. Canvas interaction remains immutable and accessible - it('supports 320px viewport and responsive layout', () => { + // 18. 390 px no horizontal overflow + it('renders within 390px viewport width without breaking', () => { const vm = buildSpatialPassengerViewModel(goldenPayload, 14); const html = renderToStaticMarkup( -
+
); @@ -259,8 +225,15 @@ describe('Spatial Passenger Shell v1 Lifecycle & Boundary Tests (ADR-0002 / ADR- expect(html).toContain('MSC Bellissima'); }); - // 16. Pure predicate function unit test - it('isAdmittedPassengerEntity accurately evaluates all condition matrices', () => { + // 19. Selected card remains usable on mobile + it('renders selected card with responsive layout', () => { + const vm = buildSpatialPassengerViewModel(goldenPayload, 14); + const html = renderToStaticMarkup(); + expect(html).toContain('min-h-[44px]'); + }); + + // 20. Pure predicate function unit test + it('isAdmittedPassengerEntity accurately evaluates dual-gate criteria', () => { expect( isAdmittedPassengerEntity({ evidence_condition: 'SUPPORTED', @@ -270,15 +243,6 @@ describe('Spatial Passenger Shell v1 Lifecycle & Boundary Tests (ADR-0002 / ADR- }) ).toBe(true); - expect( - isAdmittedPassengerEntity({ - evidence_condition: 'SUPPORTED', - human_review_state: 'APPROVED', - publish_status: 'PUBLISH_ALLOWED', - geometry_provenance: 'SYNTHETIC_GEOMETRY', - }) - ).toBe(false); - expect( isAdmittedPassengerEntity({ evidence_condition: 'UNKNOWN', diff --git a/frontend/src/ship-overview/ShipOverview.tsx b/frontend/src/ship-overview/ShipOverview.tsx index 11ac7d5..a8a4f99 100644 --- a/frontend/src/ship-overview/ShipOverview.tsx +++ b/frontend/src/ship-overview/ShipOverview.tsx @@ -8,6 +8,7 @@ import { ChevronUp, X, AlertCircle, + MapPin, } from 'lucide-react'; import { SpatialPassengerViewModel, @@ -65,9 +66,13 @@ export default function ShipOverview({ const hasSearchHits = searchResults.mappedHits.length > 0 || searchResults.unmappedHits.length > 0; + const currentDeckEntities = useMemo(() => { + return viewModel.spatialEntities.filter((e) => e.deckNumber === selectedDeckNumber); + }, [viewModel.spatialEntities, selectedDeckNumber]); + return ( -
- {/* 1. Ship Header */} +
+ {/* 1. Ship Header & Status */}
@@ -85,11 +90,11 @@ export default function ShipOverview({
-
+

Ship Deck Overview

-

+

Explore verified deck layouts and stateroom locations.

@@ -107,7 +112,7 @@ export default function ShipOverview({
{/* 2. Deck Selector Bar */} -
+

SELECT DECK @@ -182,6 +187,9 @@ export default function ShipOverview({ key={hit.id} onClick={() => { setSelectedEntity(hit); + if (hit.deckNumber !== selectedDeckNumber) { + setSelectedDeckNumber(hit.deckNumber); + } setSearchQuery(''); }} className="w-full text-left p-3 rounded-xl hover:bg-slate-50 flex items-center justify-between text-xs transition-colors cursor-pointer" @@ -193,7 +201,7 @@ export default function ShipOverview({

- Mapped + Mapped on Deck {hit.deckNumber} ))} @@ -236,7 +244,8 @@ export default function ShipOverview({
- + + DECK {selectedEntity.deckNumber} @@ -279,13 +288,13 @@ export default function ShipOverview({ DECK VIEW - {viewModel.spatialEntities.length} verified spaces + {currentDeckEntities.length} verified spaces
setSelectedEntity(entity)} /> diff --git a/geometry/proofs/bellissima/deck05/deck05.proof.json b/geometry/proofs/bellissima/deck05/deck05.proof.json new file mode 100644 index 0000000..885347d --- /dev/null +++ b/geometry/proofs/bellissima/deck05/deck05.proof.json @@ -0,0 +1,1350 @@ +{ + "schema": "timonelo.one-deck-geometry-proof.v1", + "source": { + "artifact_id": "ART-0001", + "sha256": "085d363b2ea6b4d1187fefa3125c861b104d33ec1c062732659a5ed8d2e2f5c0", + "page_number": 3, + "page_width_points": 589.606, + "page_height_points": 807.874 + }, + "deck": { + "number": 5, + "name": "Deck 5 (Opera)" + }, + "review_viewport": { + "bbox": [ + 130.0, + 200.0, + 235.0, + 750.0 + ], + "normalized_bbox": [ + 0.220486223, + 0.247563358, + 0.398571249, + 0.928362591 + ] + }, + "objects": [ + { + "object_id": "bellissima-deck05-venue-5115-5113-5111-5107-5103-5099-50", + "semantic_type": "venue", + "cabin_number": null, + "label": "5115 5113 5111 5107 5103 5099 5095 5091 5087 5083", + "source_bbox": [ + 146.965607, + 414.53714, + 153.416779, + 464.667877 + ], + "normalized_bbox": [ + 0.249260704, + 0.513121031, + 0.2602022, + 0.575173699 + ], + "normalized_polygon": [ + [ + 0.249260704, + 0.513121031 + ], + [ + 0.2602022, + 0.513121031 + ], + [ + 0.2602022, + 0.575173699 + ], + [ + 0.249260704, + 0.575173699 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-0" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5109-5105-5101-5097-5093-5089-50", + "semantic_type": "venue", + "cabin_number": null, + "label": "5109 5105 5101 5097 5093 5089 5085", + "source_bbox": [ + 162.865128, + 414.53714, + 169.316299, + 449.585327 + ], + "normalized_bbox": [ + 0.276227053, + 0.513121031, + 0.287168549, + 0.556504266 + ], + "normalized_polygon": [ + [ + 0.276227053, + 0.513121031 + ], + [ + 0.287168549, + 0.513121031 + ], + [ + 0.287168549, + 0.556504266 + ], + [ + 0.276227053, + 0.556504266 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-1" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5119-5121-5123-5125-5127-5129-51", + "semantic_type": "venue", + "cabin_number": null, + "label": "5119 5121 5123 5125 5127 5129 5131 5133 5135 5081 5079 5077 5075", + "source_bbox": [ + 146.965607, + 394.549011, + 185.303177, + 449.585327 + ], + "normalized_bbox": [ + 0.249260704, + 0.48837939, + 0.314283058, + 0.556504266 + ], + "normalized_polygon": [ + [ + 0.249260704, + 0.48837939 + ], + [ + 0.314283058, + 0.48837939 + ], + [ + 0.314283058, + 0.556504266 + ], + [ + 0.249260704, + 0.556504266 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-2" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-cabin-5063", + "semantic_type": "cabin", + "cabin_number": "5063", + "label": "5063", + "source_bbox": [ + 146.965607, + 388.661591, + 153.416779, + 394.078583 + ], + "normalized_bbox": [ + 0.249260704, + 0.481091842, + 0.2602022, + 0.487797086 + ], + "normalized_polygon": [ + [ + 0.249260704, + 0.481091842 + ], + [ + 0.2602022, + 0.481091842 + ], + [ + 0.2602022, + 0.487797086 + ], + [ + 0.249260704, + 0.487797086 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-3" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5061-5057-5053-5049-5045-5041-50", + "semantic_type": "venue", + "cabin_number": null, + "label": "5061 5057 5053 5049 5045 5041 5037 5033 5029 5025 5021 5015 5013", + "source_bbox": [ + 146.965607, + 323.418427, + 153.416779, + 388.66156 + ], + "normalized_bbox": [ + 0.249260704, + 0.400332758, + 0.2602022, + 0.481091804 + ], + "normalized_polygon": [ + [ + 0.249260704, + 0.400332758 + ], + [ + 0.2602022, + 0.400332758 + ], + [ + 0.2602022, + 0.481091804 + ], + [ + 0.249260704, + 0.481091804 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-4" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5011-5009-5007-5005-5003-5001", + "semantic_type": "venue", + "cabin_number": null, + "label": "5011 5009 5007 5005 5003 5001", + "source_bbox": [ + 146.965607, + 293.010651, + 153.416779, + 323.388519 + ], + "normalized_bbox": [ + 0.249260704, + 0.362693502, + 0.2602022, + 0.400295738 + ], + "normalized_polygon": [ + [ + 0.249260704, + 0.362693502 + ], + [ + 0.2602022, + 0.362693502 + ], + [ + 0.2602022, + 0.400295738 + ], + [ + 0.249260704, + 0.400295738 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-5" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5094-5092-5090-5088-5086-5084-50", + "semantic_type": "venue", + "cabin_number": null, + "label": "5094 5092 5090 5088 5086 5084 5082 5080 5078 5076 5074 5072 5070 5068", + "source_bbox": [ + 211.840485, + 394.54892, + 218.291656, + 464.664032 + ], + "normalized_bbox": [ + 0.359291603, + 0.488379277, + 0.370233099, + 0.57516894 + ], + "normalized_polygon": [ + [ + 0.359291603, + 0.488379277 + ], + [ + 0.370233099, + 0.488379277 + ], + [ + 0.370233099, + 0.57516894 + ], + [ + 0.359291603, + 0.57516894 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-6" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-cabin-5066", + "semantic_type": "cabin", + "cabin_number": "5066", + "label": "5066", + "source_bbox": [ + 211.840485, + 388.661499, + 218.291656, + 394.078491 + ], + "normalized_bbox": [ + 0.359291603, + 0.481091728, + 0.370233099, + 0.487796972 + ], + "normalized_polygon": [ + [ + 0.359291603, + 0.481091728 + ], + [ + 0.370233099, + 0.481091728 + ], + [ + 0.370233099, + 0.487796972 + ], + [ + 0.359291603, + 0.487796972 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-7" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5062-5058-5054-5050-5046-5042-50", + "semantic_type": "venue", + "cabin_number": null, + "label": "5062 5058 5054 5050 5046 5042 5038 5034 5030 5026 5022 5018", + "source_bbox": [ + 211.840485, + 328.544159, + 218.291656, + 388.661469 + ], + "normalized_bbox": [ + 0.359291603, + 0.406677476, + 0.370233099, + 0.481091691 + ], + "normalized_polygon": [ + [ + 0.359291603, + 0.406677476 + ], + [ + 0.370233099, + 0.406677476 + ], + [ + 0.370233099, + 0.481091691 + ], + [ + 0.359291603, + 0.481091691 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-8" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-cabin-5059", + "semantic_type": "cabin", + "cabin_number": "5059", + "label": "5059", + "source_bbox": [ + 162.865128, + 378.424774, + 169.316299, + 383.841766 + ], + "normalized_bbox": [ + 0.276227053, + 0.468420539, + 0.287168549, + 0.475125782 + ], + "normalized_polygon": [ + [ + 0.276227053, + 0.468420539 + ], + [ + 0.287168549, + 0.468420539 + ], + [ + 0.287168549, + 0.475125782 + ], + [ + 0.276227053, + 0.475125782 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-9" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5073-5071", + "semantic_type": "venue", + "cabin_number": null, + "label": "5073 5071", + "source_bbox": [ + 175.23143, + 370.008148, + 180.648453, + 387.144135 + ], + "normalized_bbox": [ + 0.297200894, + 0.458002298, + 0.306388423, + 0.479213509 + ], + "normalized_polygon": [ + [ + 0.297200894, + 0.458002298 + ], + [ + 0.306388423, + 0.458002298 + ], + [ + 0.306388423, + 0.479213509 + ], + [ + 0.297200894, + 0.479213509 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-10" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5055-5051-5047-5043-5039-5035-50", + "semantic_type": "venue", + "cabin_number": null, + "label": "5055 5051 5047 5043 5039 5035 5031 5027 5023 5019", + "source_bbox": [ + 162.863602, + 328.548035, + 169.314774, + 378.611572 + ], + "normalized_bbox": [ + 0.276224465, + 0.406682273, + 0.287165961, + 0.46865176 + ], + "normalized_polygon": [ + [ + 0.276224465, + 0.406682273 + ], + [ + 0.287165961, + 0.406682273 + ], + [ + 0.287165961, + 0.46865176 + ], + [ + 0.276224465, + 0.46865176 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-11" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-cabin-5014", + "semantic_type": "cabin", + "cabin_number": "5014", + "label": "5014", + "source_bbox": [ + 198.550171, + 318.397186, + 205.001343, + 323.814178 + ], + "normalized_bbox": [ + 0.336750594, + 0.394117383, + 0.347692091, + 0.400822626 + ], + "normalized_polygon": [ + [ + 0.336750594, + 0.394117383 + ], + [ + 0.347692091, + 0.394117383 + ], + [ + 0.347692091, + 0.400822626 + ], + [ + 0.336750594, + 0.400822626 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-12" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-cabin-5016", + "semantic_type": "cabin", + "cabin_number": "5016", + "label": "5016", + "source_bbox": [ + 211.838974, + 323.422211, + 218.290146, + 328.839203 + ], + "normalized_bbox": [ + 0.35928904, + 0.400337442, + 0.370230537, + 0.407042686 + ], + "normalized_polygon": [ + [ + 0.35928904, + 0.400337442 + ], + [ + 0.370230537, + 0.400337442 + ], + [ + 0.370230537, + 0.407042686 + ], + [ + 0.35928904, + 0.407042686 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-13" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5012-5010-5008-5006-5004-5002", + "semantic_type": "venue", + "cabin_number": null, + "label": "5012 5010 5008 5006 5004 5002", + "source_bbox": [ + 211.838974, + 293.014435, + 218.290146, + 323.392303 + ], + "normalized_bbox": [ + 0.35928904, + 0.362698187, + 0.370230537, + 0.400300422 + ], + "normalized_polygon": [ + [ + 0.35928904, + 0.362698187 + ], + [ + 0.370230537, + 0.362698187 + ], + [ + 0.370230537, + 0.400300422 + ], + [ + 0.35928904, + 0.400300422 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-14" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-cabin-5137", + "semantic_type": "cabin", + "cabin_number": "5137", + "label": "5137", + "source_bbox": [ + 180.658173, + 394.79538, + 187.109344, + 400.212372 + ], + "normalized_bbox": [ + 0.306404909, + 0.488684349, + 0.317346405, + 0.495389593 + ], + "normalized_polygon": [ + [ + 0.306404909, + 0.488684349 + ], + [ + 0.317346405, + 0.488684349 + ], + [ + 0.317346405, + 0.495389593 + ], + [ + 0.306404909, + 0.495389593 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-15" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5064-5060-5056-5052-5048-5044-50", + "semantic_type": "venue", + "cabin_number": null, + "label": "5064 5060 5056 5052 5048 5044 5040 5036 5032 5028 5024 5020", + "source_bbox": [ + 195.949539, + 328.581543, + 202.400711, + 388.792206 + ], + "normalized_bbox": [ + 0.332339798, + 0.40672375, + 0.343281295, + 0.481253519 + ], + "normalized_polygon": [ + [ + 0.332339798, + 0.40672375 + ], + [ + 0.343281295, + 0.40672375 + ], + [ + 0.343281295, + 0.481253519 + ], + [ + 0.332339798, + 0.481253519 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-16" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-5069-5067-5065", + "semantic_type": "venue", + "cabin_number": null, + "label": "5069 5067 5065", + "source_bbox": [ + 175.23143, + 329.721863, + 180.648453, + 361.584717 + ], + "normalized_bbox": [ + 0.297200894, + 0.408135257, + 0.306388423, + 0.447575633 + ], + "normalized_polygon": [ + [ + 0.297200894, + 0.408135257 + ], + [ + 0.306388423, + 0.408135257 + ], + [ + 0.306388423, + 0.447575633 + ], + [ + 0.297200894, + 0.447575633 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-17" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-vertical-core-18", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 180.094238, + 313.183228, + 185.511261, + 317.433624 + ], + "normalized_bbox": [ + 0.305448449, + 0.387663457, + 0.314635979, + 0.392924669 + ], + "normalized_polygon": [ + [ + 0.305448449, + 0.387663457 + ], + [ + 0.314635979, + 0.387663457 + ], + [ + 0.314635979, + 0.392924669 + ], + [ + 0.305448449, + 0.392924669 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-18" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-vertical-core-19", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Panoramic Lift", + "source_bbox": [ + 217.382339, + 469.574097, + 222.799362, + 488.729523 + ], + "normalized_bbox": [ + 0.368690854, + 0.5812467, + 0.377878384, + 0.604957608 + ], + "normalized_polygon": [ + [ + 0.368690854, + 0.5812467 + ], + [ + 0.377878384, + 0.5812467 + ], + [ + 0.377878384, + 0.604957608 + ], + [ + 0.368690854, + 0.604957608 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-19" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-london-theatre", + "semantic_type": "venue", + "cabin_number": null, + "label": "London Theatre", + "source_bbox": [ + 172.371902, + 265.634491, + 193.294617, + 271.051483 + ], + "normalized_bbox": [ + 0.292350998, + 0.328806832, + 0.327836923, + 0.335512076 + ], + "normalized_polygon": [ + [ + 0.292350998, + 0.328806832 + ], + [ + 0.327836923, + 0.328806832 + ], + [ + 0.327836923, + 0.335512076 + ], + [ + 0.292350998, + 0.335512076 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-20" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-vertical-core-21", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Panoramic Lift", + "source_bbox": [ + 143.221725, + 469.574097, + 148.638748, + 488.729523 + ], + "normalized_bbox": [ + 0.242910902, + 0.5812467, + 0.252098432, + 0.604957608 + ], + "normalized_polygon": [ + [ + 0.242910902, + 0.5812467 + ], + [ + 0.252098432, + 0.5812467 + ], + [ + 0.252098432, + 0.604957608 + ], + [ + 0.242910902, + 0.604957608 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-21" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-vertical-core-22", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 168.455093, + 515.649841, + 173.872116, + 519.900269 + ], + "normalized_bbox": [ + 0.285707902, + 0.63828003, + 0.294895432, + 0.643541281 + ], + "normalized_polygon": [ + [ + 0.285707902, + 0.63828003 + ], + [ + 0.294895432, + 0.63828003 + ], + [ + 0.294895432, + 0.643541281 + ], + [ + 0.285707902, + 0.643541281 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-22" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-posidonia-restaurant", + "semantic_type": "venue", + "cabin_number": null, + "label": "Posidonia Restaurant", + "source_bbox": [ + 168.728607, + 595.767517, + 196.999619, + 601.18457 + ], + "normalized_bbox": [ + 0.286171795, + 0.737451035, + 0.334120783, + 0.744156354 + ], + "normalized_polygon": [ + [ + 0.286171795, + 0.737451035 + ], + [ + 0.334120783, + 0.737451035 + ], + [ + 0.334120783, + 0.744156354 + ], + [ + 0.286171795, + 0.744156354 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-23" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-business-centre", + "semantic_type": "venue", + "cabin_number": null, + "label": "Business Centre", + "source_bbox": [ + 164.794052, + 452.442474, + 176.396118, + 461.219421 + ], + "normalized_bbox": [ + 0.279498601, + 0.56004089, + 0.29917626, + 0.570905143 + ], + "normalized_polygon": [ + [ + 0.279498601, + 0.56004089 + ], + [ + 0.29917626, + 0.56004089 + ], + [ + 0.29917626, + 0.570905143 + ], + [ + 0.279498601, + 0.570905143 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-24" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-msc-excursions", + "semantic_type": "venue", + "cabin_number": null, + "label": "MSC Excursions", + "source_bbox": [ + 150.478333, + 468.807129, + 155.895355, + 489.498016 + ], + "normalized_bbox": [ + 0.255218455, + 0.580297335, + 0.264405985, + 0.605908862 + ], + "normalized_polygon": [ + [ + 0.255218455, + 0.580297335 + ], + [ + 0.264405985, + 0.580297335 + ], + [ + 0.264405985, + 0.605908862 + ], + [ + 0.255218455, + 0.605908862 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-25" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-infinity-bar", + "semantic_type": "venue", + "cabin_number": null, + "label": "Infinity Bar", + "source_bbox": [ + 206.974365, + 467.479919, + 212.391388, + 482.33786 + ], + "normalized_bbox": [ + 0.351038431, + 0.578654492, + 0.360225961, + 0.597045901 + ], + "normalized_polygon": [ + [ + 0.351038431, + 0.578654492 + ], + [ + 0.360225961, + 0.578654492 + ], + [ + 0.360225961, + 0.597045901 + ], + [ + 0.351038431, + 0.597045901 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-26" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-infinity-atrium", + "semantic_type": "venue", + "cabin_number": null, + "label": "Infinity Atrium", + "source_bbox": [ + 172.930496, + 503.379974, + 192.321045, + 508.796967 + ], + "normalized_bbox": [ + 0.2932984, + 0.623092183, + 0.326185698, + 0.629797427 + ], + "normalized_polygon": [ + [ + 0.2932984, + 0.623092183 + ], + [ + 0.326185698, + 0.623092183 + ], + [ + 0.326185698, + 0.629797427 + ], + [ + 0.2932984, + 0.629797427 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-27" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-vertical-core-28", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 191.769638, + 515.650269, + 197.186661, + 519.900635 + ], + "normalized_bbox": [ + 0.325250486, + 0.638280559, + 0.334438016, + 0.643541734 + ], + "normalized_polygon": [ + [ + 0.325250486, + 0.638280559 + ], + [ + 0.334438016, + 0.638280559 + ], + [ + 0.334438016, + 0.643541734 + ], + [ + 0.325250486, + 0.643541734 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-28" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck05-venue-infinity-reception-guest-service", + "semantic_type": "venue", + "cabin_number": null, + "label": "Infinity Reception-Guest Service", + "source_bbox": [ + 166.269608, + 475.691284, + 198.404648, + 484.468231 + ], + "normalized_bbox": [ + 0.282001214, + 0.588818658, + 0.33650378, + 0.59968291 + ], + "normalized_polygon": [ + [ + 0.282001214, + 0.588818658 + ], + [ + 0.33650378, + 0.588818658 + ], + [ + 0.33650378, + 0.59968291 + ], + [ + 0.282001214, + 0.59968291 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-29" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + } + ] +} diff --git a/geometry/proofs/bellissima/deck06/deck06.proof.json b/geometry/proofs/bellissima/deck06/deck06.proof.json new file mode 100644 index 0000000..6129f90 --- /dev/null +++ b/geometry/proofs/bellissima/deck06/deck06.proof.json @@ -0,0 +1,1174 @@ +{ + "schema": "timonelo.one-deck-geometry-proof.v1", + "source": { + "artifact_id": "ART-0001", + "sha256": "085d363b2ea6b4d1187fefa3125c861b104d33ec1c062732659a5ed8d2e2f5c0", + "page_number": 3, + "page_width_points": 589.606, + "page_height_points": 807.874 + }, + "deck": { + "number": 6, + "name": "Deck 6 (Musica)" + }, + "review_viewport": { + "bbox": [ + 240.0, + 200.0, + 350.0, + 750.0 + ], + "normalized_bbox": [ + 0.407051489, + 0.247563358, + 0.593616754, + 0.928362591 + ] + }, + "objects": [ + { + "object_id": "bellissima-deck06-venue-hola--tapas-bar", + "semantic_type": "venue", + "cabin_number": null, + "label": "HOLA! Tapas Bar", + "source_bbox": [ + 263.571411, + 367.127869, + 276.369354, + 375.904816 + ], + "normalized_bbox": [ + 0.44702973, + 0.454437039, + 0.468735654, + 0.465301292 + ], + "normalized_polygon": [ + [ + 0.44702973, + 0.454437039 + ], + [ + 0.468735654, + 0.454437039 + ], + [ + 0.468735654, + 0.465301292 + ], + [ + 0.44702973, + 0.465301292 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-0" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-vertical-core-1", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 292.097534, + 313.183929, + 297.514526, + 317.434326 + ], + "normalized_bbox": [ + 0.4954114, + 0.387664326, + 0.504598879, + 0.392925538 + ], + "normalized_polygon": [ + [ + 0.4954114, + 0.387664326 + ], + [ + 0.504598879, + 0.387664326 + ], + [ + 0.504598879, + 0.392925538 + ], + [ + 0.4954114, + 0.392925538 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-1" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-vertical-core-2", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 280.367493, + 516.349731, + 285.784485, + 520.600098 + ], + "normalized_bbox": [ + 0.475516689, + 0.639146366, + 0.484704167, + 0.644407541 + ], + "normalized_polygon": [ + [ + 0.475516689, + 0.639146366 + ], + [ + 0.484704167, + 0.639146366 + ], + [ + 0.484704167, + 0.644407541 + ], + [ + 0.475516689, + 0.644407541 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-2" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-lighthouse-restaurant", + "semantic_type": "venue", + "cabin_number": null, + "label": "Lighthouse Restaurant", + "source_bbox": [ + 279.835693, + 698.922729, + 309.830475, + 704.339783 + ], + "normalized_bbox": [ + 0.474614731, + 0.865138288, + 0.525487317, + 0.871843608 + ], + "normalized_polygon": [ + [ + 0.474614731, + 0.865138288 + ], + [ + 0.525487317, + 0.865138288 + ], + [ + 0.525487317, + 0.871843608 + ], + [ + 0.474614731, + 0.871843608 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-3" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-il-ciliegio", + "semantic_type": "venue", + "cabin_number": null, + "label": "Il Ciliegio", + "source_bbox": [ + 257.381836, + 609.971741, + 262.798828, + 622.40033 + ], + "normalized_bbox": [ + 0.436531914, + 0.755033261, + 0.445719392, + 0.770417577 + ], + "normalized_polygon": [ + [ + 0.436531914, + 0.755033261 + ], + [ + 0.445719392, + 0.755033261 + ], + [ + 0.445719392, + 0.770417577 + ], + [ + 0.436531914, + 0.770417577 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-4" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-emotions-immersive-gallery", + "semantic_type": "venue", + "cabin_number": null, + "label": "Emotions-Immersive Gallery", + "source_bbox": [ + 291.556458, + 545.362244, + 296.97345, + 583.00769 + ], + "normalized_bbox": [ + 0.494493709, + 0.675058541, + 0.503681187, + 0.721656707 + ], + "normalized_polygon": [ + [ + 0.494493709, + 0.675058541 + ], + [ + 0.503681187, + 0.675058541 + ], + [ + 0.503681187, + 0.721656707 + ], + [ + 0.494493709, + 0.721656707 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-5" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-jean-philippe-crêpes---gelato", + "semantic_type": "venue", + "cabin_number": null, + "label": "Jean-Philippe Crêpes & Gelato", + "source_bbox": [ + 275.427338, + 400.781097, + 284.204285, + 421.884949 + ], + "normalized_bbox": [ + 0.467137949, + 0.496093571, + 0.482024071, + 0.522216272 + ], + "normalized_polygon": [ + [ + 0.467137949, + 0.496093571 + ], + [ + 0.482024071, + 0.496093571 + ], + [ + 0.482024071, + 0.522216272 + ], + [ + 0.467137949, + 0.522216272 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-6" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-plaza-bellissima", + "semantic_type": "venue", + "cabin_number": null, + "label": "Plaza Bellissima", + "source_bbox": [ + 308.201965, + 422.456116, + 316.978912, + 435.83902 + ], + "normalized_bbox": [ + 0.522725287, + 0.522923272, + 0.537611409, + 0.539488856 + ], + "normalized_polygon": [ + [ + 0.522725287, + 0.522923272 + ], + [ + 0.537611409, + 0.522923272 + ], + [ + 0.537611409, + 0.539488856 + ], + [ + 0.522725287, + 0.539488856 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-7" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-galleria-bellissima-msc-excursio", + "semantic_type": "venue", + "cabin_number": null, + "label": "Galleria Bellissima MSC Excursions", + "source_bbox": [ + 292.298096, + 385.492706, + 302.243591, + 428.483978 + ], + "normalized_bbox": [ + 0.495751562, + 0.477169344, + 0.512619599, + 0.530384662 + ], + "normalized_polygon": [ + [ + 0.495751562, + 0.477169344 + ], + [ + 0.512619599, + 0.477169344 + ], + [ + 0.512619599, + 0.530384662 + ], + [ + 0.495751562, + 0.530384662 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-8" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-mini-mall", + "semantic_type": "venue", + "cabin_number": null, + "label": "Mini Mall", + "source_bbox": [ + 323.657837, + 404.634674, + 332.434784, + 410.608765 + ], + "normalized_bbox": [ + 0.548939185, + 0.500863593, + 0.563825307, + 0.508258422 + ], + "normalized_polygon": [ + [ + 0.548939185, + 0.500863593 + ], + [ + 0.563825307, + 0.500863593 + ], + [ + 0.563825307, + 0.508258422 + ], + [ + 0.548939185, + 0.508258422 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-9" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-bellissima-bar---lounge", + "semantic_type": "venue", + "cabin_number": null, + "label": "Bellissima Bar & Lounge", + "source_bbox": [ + 316.844543, + 333.20105, + 325.62149, + 351.025879 + ], + "normalized_bbox": [ + 0.537383513, + 0.412441853, + 0.552269635, + 0.434505726 + ], + "normalized_polygon": [ + [ + 0.537383513, + 0.412441853 + ], + [ + 0.552269635, + 0.412441853 + ], + [ + 0.552269635, + 0.434505726 + ], + [ + 0.537383513, + 0.434505726 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-10" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-jean-philippe-chocolat---café", + "semantic_type": "venue", + "cabin_number": null, + "label": "Jean-Philippe Chocolat & Café", + "source_bbox": [ + 299.040436, + 354.886475, + 307.817383, + 375.671478 + ], + "normalized_bbox": [ + 0.507186894, + 0.439284436, + 0.522073016, + 0.465012463 + ], + "normalized_polygon": [ + [ + 0.507186894, + 0.439284436 + ], + [ + 0.522073016, + 0.439284436 + ], + [ + 0.522073016, + 0.465012463 + ], + [ + 0.507186894, + 0.465012463 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-11" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-boutique-luxury-plaza", + "semantic_type": "venue", + "cabin_number": null, + "label": "Boutique Luxury Plaza", + "source_bbox": [ + 257.018372, + 325.795624, + 264.664154, + 436.991455 + ], + "normalized_bbox": [ + 0.435915461, + 0.403275293, + 0.448883075, + 0.540915359 + ], + "normalized_polygon": [ + [ + 0.435915461, + 0.403275293 + ], + [ + 0.448883075, + 0.403275293 + ], + [ + 0.448883075, + 0.540915359 + ], + [ + 0.435915461, + 0.540915359 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-12" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-perfumes---cosmetics", + "semantic_type": "venue", + "cabin_number": null, + "label": "Perfumes & Cosmetics", + "source_bbox": [ + 325.718567, + 421.13562, + 334.495514, + 437.15274 + ], + "normalized_bbox": [ + 0.552434281, + 0.521288741, + 0.567320404, + 0.541115001 + ], + "normalized_polygon": [ + [ + 0.552434281, + 0.521288741 + ], + [ + 0.567320404, + 0.521288741 + ], + [ + 0.567320404, + 0.541115001 + ], + [ + 0.552434281, + 0.541115001 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-13" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-luxury-vetrina-watches---sunglas", + "semantic_type": "venue", + "cabin_number": null, + "label": "Luxury Vetrina Watches & Sunglasses", + "source_bbox": [ + 273.704468, + 444.606964, + 316.302551, + 453.675079 + ], + "normalized_bbox": [ + 0.464215879, + 0.550341964, + 0.536464268, + 0.56156663 + ], + "normalized_polygon": [ + [ + 0.464215879, + 0.550341964 + ], + [ + 0.536464268, + 0.550341964 + ], + [ + 0.536464268, + 0.56156663 + ], + [ + 0.464215879, + 0.56156663 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-14" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-london-theatre", + "semantic_type": "venue", + "cabin_number": null, + "label": "London Theatre", + "source_bbox": [ + 285.081421, + 245.752701, + 305.957153, + 251.169724 + ], + "normalized_bbox": [ + 0.483511736, + 0.304196819, + 0.518917978, + 0.3109021 + ], + "normalized_polygon": [ + [ + 0.483511736, + 0.304196819 + ], + [ + 0.518917978, + 0.304196819 + ], + [ + 0.518917978, + 0.3109021 + ], + [ + 0.483511736, + 0.3109021 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-15" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-msc-shop", + "semantic_type": "venue", + "cabin_number": null, + "label": "MSC Shop", + "source_bbox": [ + 275.581848, + 469.299194, + 284.358795, + 476.005768 + ], + "normalized_bbox": [ + 0.467400006, + 0.580906421, + 0.482286129, + 0.589207931 + ], + "normalized_polygon": [ + [ + 0.467400006, + 0.580906421 + ], + [ + 0.482286129, + 0.580906421 + ], + [ + 0.482286129, + 0.589207931 + ], + [ + 0.467400006, + 0.589207931 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-16" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-edge-cocktail-bar", + "semantic_type": "venue", + "cabin_number": null, + "label": "Edge Cocktail Bar", + "source_bbox": [ + 311.048187, + 482.003326, + 316.465179, + 505.063049 + ], + "normalized_bbox": [ + 0.527552615, + 0.596631809, + 0.536740093, + 0.625175522 + ], + "normalized_polygon": [ + [ + 0.527552615, + 0.596631809 + ], + [ + 0.536740093, + 0.596631809 + ], + [ + 0.536740093, + 0.625175522 + ], + [ + 0.527552615, + 0.625175522 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-17" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-le-cerisier", + "semantic_type": "venue", + "cabin_number": null, + "label": "Le Cerisier", + "source_bbox": [ + 326.209106, + 609.263367, + 331.626099, + 623.106567 + ], + "normalized_bbox": [ + 0.55326626, + 0.754156424, + 0.562453738, + 0.77129177 + ], + "normalized_polygon": [ + [ + 0.55326626, + 0.754156424 + ], + [ + 0.562453738, + 0.754156424 + ], + [ + 0.562453738, + 0.77129177 + ], + [ + 0.55326626, + 0.77129177 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-18" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-vertical-core-19", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 303.70105, + 516.349304, + 309.118042, + 520.599731 + ], + "normalized_bbox": [ + 0.515091518, + 0.639145837, + 0.524278996, + 0.644407088 + ], + "normalized_polygon": [ + [ + 0.515091518, + 0.639145837 + ], + [ + 0.524278996, + 0.639145837 + ], + [ + 0.524278996, + 0.644407088 + ], + [ + 0.515091518, + 0.644407088 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-19" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-vertical-core-20", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Panoramic Lift", + "source_bbox": [ + 255.190018, + 469.598053, + 260.607025, + 488.706116 + ], + "normalized_bbox": [ + 0.432814486, + 0.581276354, + 0.44200199, + 0.604928635 + ], + "normalized_polygon": [ + [ + 0.432814486, + 0.581276354 + ], + [ + 0.44200199, + 0.581276354 + ], + [ + 0.44200199, + 0.604928635 + ], + [ + 0.432814486, + 0.604928635 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-20" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-vertical-core-21", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Panoramic Lift", + "source_bbox": [ + 330.060852, + 469.598053, + 335.477844, + 488.706116 + ], + "normalized_bbox": [ + 0.559799005, + 0.581276354, + 0.568986483, + 0.604928635 + ], + "normalized_polygon": [ + [ + 0.559799005, + 0.581276354 + ], + [ + 0.568986483, + 0.581276354 + ], + [ + 0.568986483, + 0.604928635 + ], + [ + 0.559799005, + 0.604928635 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-21" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-msc-photo", + "semantic_type": "venue", + "cabin_number": null, + "label": "MSC Photo", + "source_bbox": [ + 255.111221, + 501.329315, + 260.528229, + 515.77063 + ], + "normalized_bbox": [ + 0.432680843, + 0.620553843, + 0.441868347, + 0.638429545 + ], + "normalized_polygon": [ + [ + 0.432680843, + 0.620553843 + ], + [ + 0.441868347, + 0.620553843 + ], + [ + 0.441868347, + 0.638429545 + ], + [ + 0.432680843, + 0.638429545 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-22" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-photo-gallery", + "semantic_type": "venue", + "cabin_number": null, + "label": "Photo Gallery", + "source_bbox": [ + 261.996033, + 510.276245, + 267.413025, + 528.228821 + ], + "normalized_bbox": [ + 0.444357813, + 0.631628503, + 0.453545291, + 0.653850502 + ], + "normalized_polygon": [ + [ + 0.444357813, + 0.631628503 + ], + [ + 0.453545291, + 0.631628503 + ], + [ + 0.453545291, + 0.653850502 + ], + [ + 0.444357813, + 0.653850502 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-23" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-fashion-jewellery", + "semantic_type": "venue", + "cabin_number": null, + "label": "Fashion Jewellery", + "source_bbox": [ + 304.932892, + 468.172882, + 316.988586, + 476.949829 + ], + "normalized_bbox": [ + 0.517180781, + 0.579512253, + 0.537627817, + 0.590376506 + ], + "normalized_polygon": [ + [ + 0.517180781, + 0.579512253 + ], + [ + 0.537627817, + 0.579512253 + ], + [ + 0.537627817, + 0.590376506 + ], + [ + 0.517180781, + 0.590376506 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-24" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck06-venue-fine-watches---jewellery", + "semantic_type": "venue", + "cabin_number": null, + "label": "Fine Watches & Jewellery", + "source_bbox": [ + 259.830994, + 353.945282, + 277.323151, + 362.722229 + ], + "normalized_bbox": [ + 0.440685803, + 0.438119412, + 0.470353339, + 0.448983665 + ], + "normalized_polygon": [ + [ + 0.440685803, + 0.438119412 + ], + [ + 0.470353339, + 0.438119412 + ], + [ + 0.470353339, + 0.448983665 + ], + [ + 0.440685803, + 0.448983665 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-25" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + } + ] +} diff --git a/geometry/proofs/bellissima/deck07/deck07.proof.json b/geometry/proofs/bellissima/deck07/deck07.proof.json new file mode 100644 index 0000000..ff38f9c --- /dev/null +++ b/geometry/proofs/bellissima/deck07/deck07.proof.json @@ -0,0 +1,690 @@ +{ + "schema": "timonelo.one-deck-geometry-proof.v1", + "source": { + "artifact_id": "ART-0001", + "sha256": "085d363b2ea6b4d1187fefa3125c861b104d33ec1c062732659a5ed8d2e2f5c0", + "page_number": 3, + "page_width_points": 589.606, + "page_height_points": 807.874 + }, + "deck": { + "number": 7, + "name": "Deck 7 (Fantasia)" + }, + "review_viewport": { + "bbox": [ + 355.0, + 200.0, + 465.0, + 750.0 + ], + "normalized_bbox": [ + 0.602096994, + 0.247563358, + 0.788662259, + 0.928362591 + ] + }, + "objects": [ + { + "object_id": "bellissima-deck07-vertical-core-0", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 391.970062, + 516.945618, + 397.387054, + 521.196045 + ], + "normalized_bbox": [ + 0.664799989, + 0.639883964, + 0.673987467, + 0.645145214 + ], + "normalized_polygon": [ + [ + 0.664799989, + 0.639883964 + ], + [ + 0.673987467, + 0.639883964 + ], + [ + 0.673987467, + 0.645145214 + ], + [ + 0.664799989, + 0.645145214 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-0" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-kaito-teppanyaki", + "semantic_type": "venue", + "cabin_number": null, + "label": "Kaito Teppanyaki", + "source_bbox": [ + 380.834137, + 438.426636, + 386.251129, + 461.062714 + ], + "normalized_bbox": [ + 0.645912927, + 0.54269185, + 0.655100405, + 0.570711167 + ], + "normalized_polygon": [ + [ + 0.645912927, + 0.54269185 + ], + [ + 0.655100405, + 0.54269185 + ], + [ + 0.655100405, + 0.570711167 + ], + [ + 0.645912927, + 0.570711167 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-1" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-kaito-sushi-bar", + "semantic_type": "venue", + "cabin_number": null, + "label": "Kaito Sushi Bar", + "source_bbox": [ + 392.075104, + 414.546814, + 397.492096, + 434.47168 + ], + "normalized_bbox": [ + 0.664978144, + 0.513133006, + 0.674165622, + 0.537796339 + ], + "normalized_polygon": [ + [ + 0.664978144, + 0.513133006 + ], + [ + 0.674165622, + 0.513133006 + ], + [ + 0.674165622, + 0.537796339 + ], + [ + 0.664978144, + 0.537796339 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-2" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-masters-of-the-sea", + "semantic_type": "venue", + "cabin_number": null, + "label": "Masters of the Sea", + "source_bbox": [ + 380.654938, + 336.547852, + 389.431885, + 349.682098 + ], + "normalized_bbox": [ + 0.645608996, + 0.416584581, + 0.660495118, + 0.432842372 + ], + "normalized_polygon": [ + [ + 0.645608996, + 0.416584581 + ], + [ + 0.660495118, + 0.416584581 + ], + [ + 0.660495118, + 0.432842372 + ], + [ + 0.645608996, + 0.432842372 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-3" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-tv-studio---bar", + "semantic_type": "venue", + "cabin_number": null, + "label": "TV Studio & Bar", + "source_bbox": [ + 425.95105, + 329.679962, + 431.368042, + 350.008026 + ], + "normalized_bbox": [ + 0.72243337, + 0.408083392, + 0.731620848, + 0.433245811 + ], + "normalized_polygon": [ + [ + 0.72243337, + 0.408083392 + ], + [ + 0.731620848, + 0.408083392 + ], + [ + 0.731620848, + 0.433245811 + ], + [ + 0.72243337, + 0.433245811 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-4" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-msc-aurea-spa", + "semantic_type": "venue", + "cabin_number": null, + "label": "MSC Aurea Spa", + "source_bbox": [ + 397.119995, + 265.822601, + 417.088837, + 271.239594 + ], + "normalized_bbox": [ + 0.673534522, + 0.329039679, + 0.707402633, + 0.335744922 + ], + "normalized_polygon": [ + [ + 0.673534522, + 0.329039679 + ], + [ + 0.707402633, + 0.329039679 + ], + [ + 0.707402633, + 0.335744922 + ], + [ + 0.673534522, + 0.335744922 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-5" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-butcher-s-cut", + "semantic_type": "venue", + "cabin_number": null, + "label": "Butcher's Cut", + "source_bbox": [ + 422.450562, + 433.575989, + 427.867554, + 451.266022 + ], + "normalized_bbox": [ + 0.716496375, + 0.536687638, + 0.725683853, + 0.558584658 + ], + "normalized_polygon": [ + [ + 0.716496375, + 0.536687638 + ], + [ + 0.725683853, + 0.536687638 + ], + [ + 0.725683853, + 0.558584658 + ], + [ + 0.716496375, + 0.558584658 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-6" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-champagne-bar", + "semantic_type": "venue", + "cabin_number": null, + "label": "Champagne Bar", + "source_bbox": [ + 429.189178, + 469.000061, + 434.606171, + 490.30249 + ], + "normalized_bbox": [ + 0.727925392, + 0.580536149, + 0.73711287, + 0.606904654 + ], + "normalized_polygon": [ + [ + 0.727925392, + 0.580536149 + ], + [ + 0.73711287, + 0.580536149 + ], + [ + 0.73711287, + 0.606904654 + ], + [ + 0.727925392, + 0.606904654 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-7" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-champagne-bar", + "semantic_type": "venue", + "cabin_number": null, + "label": "Champagne Bar", + "source_bbox": [ + 375.067535, + 469.000061, + 380.484528, + 490.30249 + ], + "normalized_bbox": [ + 0.636132494, + 0.580536149, + 0.645319972, + 0.606904654 + ], + "normalized_polygon": [ + [ + 0.636132494, + 0.580536149 + ], + [ + 0.645319972, + 0.580536149 + ], + [ + 0.645319972, + 0.606904654 + ], + [ + 0.636132494, + 0.606904654 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-8" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-carousel-lounge", + "semantic_type": "venue", + "cabin_number": null, + "label": "Carousel Lounge", + "source_bbox": [ + 400.733398, + 722.117615, + 412.039825, + 730.894653 + ], + "normalized_bbox": [ + 0.679663027, + 0.893849307, + 0.698839268, + 0.904713672 + ], + "normalized_polygon": [ + [ + 0.679663027, + 0.893849307 + ], + [ + 0.698839268, + 0.893849307 + ], + [ + 0.698839268, + 0.904713672 + ], + [ + 0.679663027, + 0.904713672 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-9" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-imperial-casino", + "semantic_type": "venue", + "cabin_number": null, + "label": "Imperial Casino", + "source_bbox": [ + 400.672913, + 605.332581, + 411.996124, + 614.109558 + ], + "normalized_bbox": [ + 0.67956044, + 0.749290831, + 0.698765149, + 0.760155121 + ], + "normalized_polygon": [ + [ + 0.67956044, + 0.749290831 + ], + [ + 0.698765149, + 0.749290831 + ], + [ + 0.698765149, + 0.760155121 + ], + [ + 0.67956044, + 0.760155121 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-10" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-the-gallery", + "semantic_type": "venue", + "cabin_number": null, + "label": "The Gallery", + "source_bbox": [ + 378.474548, + 503.738007, + 383.891541, + 518.666504 + ], + "normalized_bbox": [ + 0.641910951, + 0.623535361, + 0.651098429, + 0.642014106 + ], + "normalized_polygon": [ + [ + 0.641910951, + 0.623535361 + ], + [ + 0.651098429, + 0.623535361 + ], + [ + 0.651098429, + 0.642014106 + ], + [ + 0.641910951, + 0.642014106 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-11" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-vertical-core-12", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 415.72168, + 516.946228, + 421.138672, + 521.196655 + ], + "normalized_bbox": [ + 0.705083869, + 0.63988472, + 0.714271347, + 0.64514597 + ], + "normalized_polygon": [ + [ + 0.705083869, + 0.63988472 + ], + [ + 0.714271347, + 0.63988472 + ], + [ + 0.714271347, + 0.64514597 + ], + [ + 0.705083869, + 0.64514597 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-12" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-vertical-core-13", + "semantic_type": "vertical_core_region", + "cabin_number": null, + "label": "Lift", + "source_bbox": [ + 404.404388, + 310.590576, + 408.654785, + 316.007568 + ], + "normalized_bbox": [ + 0.685889201, + 0.384454229, + 0.693098078, + 0.391159473 + ], + "normalized_polygon": [ + [ + 0.685889201, + 0.384454229 + ], + [ + 0.693098078, + 0.384454229 + ], + [ + 0.693098078, + 0.391159473 + ], + [ + 0.685889201, + 0.391159473 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-13" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + }, + { + "object_id": "bellissima-deck07-venue-galleria-bellissima", + "semantic_type": "venue", + "cabin_number": null, + "label": "Galleria Bellissima", + "source_bbox": [ + 403.823334, + 401.034363, + 409.240326, + 425.454926 + ], + "normalized_bbox": [ + 0.684903705, + 0.496407067, + 0.694091183, + 0.526635249 + ], + "normalized_polygon": [ + [ + 0.684903705, + 0.496407067 + ], + [ + 0.694091183, + 0.496407067 + ], + [ + 0.694091183, + 0.526635249 + ], + [ + 0.684903705, + 0.526635249 + ] + ], + "geometry_provenance": "TRANSFORMED_SOURCE_GEOMETRY", + "evidence_condition": "UNKNOWN", + "human_review_state": "DRAFT", + "publish_status": "PUBLISH_BLOCKED", + "source_references": [ + "page3:text-block-14" + ], + "transform_id": "pdf-page3-mediabox-to-unit-v1" + } + ] +}