Skip to content

Domain Model

fouad elian edited this page Sep 4, 2026 · 3 revisions

5.5 Domain Model

classDiagram
    direction TB

    class User {
        email
        role
    }
    class Site {
        name
        address
    }
    class Robot {
        serialNumber
        status
    }
    class Session {
        mode
        status
        startedAt
        endedAt
    }
    class Mesh {
        <<3D Map>>
        visibility
        version
        objectStorageKey
    }
    class Annotation {
        label
        severity
        position
    }
    class InspectionReport {
        title
        generatedAt
    }
    class ScheduledInspection {
        runAt
        status
    }

    User "1" --> "*" Session : operates
    Site "1" --> "*" Session : hosts
    Site "1" --> "0..1" Robot : assigned
    Robot "1" --> "*" Session : performs
    Session "1" --> "0..1" Mesh : produces
    Mesh "1" --> "0..*" Mesh : previousVersion
    Session "1" --> "*" Annotation : has
    User "1" --> "*" Annotation : authors
    Session "1" --> "0..1" InspectionReport : generates
    Site "1" --> "*" ScheduledInspection : schedules
    Robot "1" --> "*" ScheduledInspection : target
Loading

Core entities

User — Signs in to the RoamView application. Roles are User and On-Site Admin.

Site — Physical location the robot inspects.

Robot — On-site unit that runs autonomous or live walkthroughs. At most one active robot per site.

Session — One walkthrough: autonomous inspection or live remote control. Status moves from recording through processing to ready.

Mesh (3D map) — Navigable 3D reconstruction produced by a session. Stored in object storage; Postgres keeps metadata and a storage key. Public vs private visibility, and a version chain for compare-mesh-version.

Annotation — Pin or note placed on a generated mesh.

Inspection report — Summary of a session (annotations and measurements). The PDF file is in object storage.

Scheduled inspection — On-site admin books an autonomous run; that creates a job the robot is notified to execute.

Clone this wiki locally