@company-manager/docs

Intervention Workflow

Service intervention dispatch, execution, and completion diagrams

Intervention Workflow

This page covers the complete intervention workflow from service request through completion.

Intervention Creation Flow

flowchart TD
    subgraph "Request Sources"
        CALL[Customer Call]
        PORTAL[Customer Portal]
        CONTRACT[Contract Schedule]
        ALERT[Equipment Alert]
    end

    subgraph "Request Processing"
        CALL --> CREATE[Create Request]
        PORTAL --> CREATE
        CONTRACT --> AUTO[Auto-Generate]
        ALERT --> AUTO

        CREATE --> VALIDATE[Validate Request]
        AUTO --> VALIDATE

        VALIDATE --> CHECK{Contract Check}
        CHECK -->|Covered| APPROVE[Auto-Approve]
        CHECK -->|Not Covered| QUOTE[Generate Quote]

        QUOTE --> ACCEPT{Customer Accepts?}
        ACCEPT -->|Yes| APPROVE
        ACCEPT -->|No| CANCEL[Cancel Request]

        APPROVE --> SCHEDULE[Schedule Intervention]
    end

    style SCHEDULE fill:#e8f5e9

Dispatch Sequence

sequenceDiagram
    participant Dispatcher
    participant System as Dispatch System
    participant DB as Database
    participant Tech as Technician App
    participant Customer

    Dispatcher->>System: View pending interventions
    System->>DB: Query unassigned interventions
    DB-->>System: Intervention list

    Dispatcher->>System: Select intervention
    System->>System: Calculate requirements
    Note over System: Skills, parts, travel time

    System->>DB: Find matching technicians
    DB-->>System: Available technicians

    Dispatcher->>System: Assign technician
    System->>DB: Update intervention (SCHEDULED)
    System->>DB: Block technician calendar

    System->>Tech: Push notification
    Tech-->>Tech: Accept assignment

    System->>Customer: Send appointment confirmation
    Customer-->>System: Confirmation received

Technician Execution Flow

flowchart TD
    START[Start of Day] --> CHECK[Check Assignments]
    CHECK --> ROUTE[View Route]

    ROUTE --> TRAVEL[Travel to Site]
    TRAVEL --> ARRIVE[Mark Arrival]

    ARRIVE --> ASSESS[Assess Situation]
    ASSESS --> WORK{Can Complete?}

    WORK -->|Yes| EXECUTE[Perform Service]
    WORK -->|No - Parts| ORDER[Order Parts]
    WORK -->|No - Skills| ESCALATE[Escalate]

    ORDER --> RESCHEDULE[Reschedule]
    ESCALATE --> ASSIGN_SENIOR[Assign Senior Tech]

    EXECUTE --> DOCUMENT[Document Work]
    DOCUMENT --> PARTS_USED[Record Parts Used]
    PARTS_USED --> PHOTOS[Take Photos]

    PHOTOS --> COMPLETE[Mark Complete]
    COMPLETE --> SIGNATURE[Get Customer Signature]
    SIGNATURE --> SUBMIT[Submit Report]

    style COMPLETE fill:#e8f5e9

Mobile App Sequence

sequenceDiagram
    participant Tech as Technician
    participant App as Mobile App
    participant API as Backend API
    participant DB as Database
    participant Notify as Notification Service

    Tech->>App: Open app
    App->>API: Sync interventions
    API->>DB: Get today's schedule
    DB-->>API: Interventions
    API-->>App: Display schedule

    Tech->>App: Start navigation
    App->>App: Launch maps

    Tech->>App: Mark arrived
    App->>API: updateStatus(ON_SITE)
    API->>DB: Update intervention
    API->>Notify: Alert customer

    Tech->>App: Start work
    App->>API: updateStatus(IN_PROGRESS)
    App->>App: Start timer

    loop During work
        Tech->>App: Add notes/photos
        App->>API: Upload media
    end

    Tech->>App: Complete intervention
    App->>API: submitCompletion(data)
    API->>DB: Update intervention
    API->>DB: Record parts used
    API->>DB: Update inventory

    App->>App: Generate report
    Tech->>App: Get signature
    App->>API: uploadSignature()

    API-->>App: Completion confirmed

Parts Management

flowchart TD
    subgraph "Before Intervention"
        CHECK_PARTS[Check Required Parts]
        CHECK_PARTS --> INVENTORY{In Stock?}
        INVENTORY -->|Yes| RESERVE[Reserve Parts]
        INVENTORY -->|No| ORDER[Order Parts]
        ORDER --> WAIT[Reschedule When Available]
    end

    subgraph "During Intervention"
        RESERVE --> LOAD[Load in Vehicle]
        LOAD --> USE[Use Parts]
        USE --> RECORD[Record Usage]
    end

    subgraph "After Intervention"
        RECORD --> INVOICE[Add to Invoice]
        INVOICE --> RESTOCK[Trigger Restock]
        RESTOCK --> UPDATE[Update Inventory]
    end

SLA Monitoring

flowchart TD
    INTERVENTION[Intervention Created] --> SLA[Check Contract SLA]

    SLA --> RESPONSE[Response Time SLA]
    SLA --> RESOLUTION[Resolution Time SLA]

    RESPONSE --> TIMER1[Start Response Timer]
    RESOLUTION --> TIMER2[Start Resolution Timer]

    TIMER1 --> CHECK1{Approaching?}
    CHECK1 -->|< 25%| ALERT1[Warning Alert]
    CHECK1 -->|> 25%| MONITOR1[Continue Monitoring]

    TIMER2 --> CHECK2{Approaching?}
    CHECK2 -->|< 25%| ALERT2[Warning Alert]
    CHECK2 -->|> 25%| MONITOR2[Continue Monitoring]

    ALERT1 --> ESCALATE1[Escalate to Manager]
    ALERT2 --> ESCALATE2[Escalate to Manager]

    subgraph "SLA Breach"
        BREACH[SLA Breached]
        BREACH --> LOG[Log Breach]
        BREACH --> NOTIFY[Notify Stakeholders]
        BREACH --> COMPENSATION[Check Compensation]
    end

    style BREACH fill:#ffebee

Completion & Invoicing

sequenceDiagram
    participant Tech as Technician
    participant System as System
    participant Finance as Finance System
    participant Customer

    Tech->>System: Submit completion report
    System->>System: Validate report

    System->>System: Calculate charges
    Note over System: Labor + Parts + Travel

    alt Contract Covered
        System->>System: Check contract coverage
        System->>Finance: Record under contract
    else Billable
        System->>Finance: Generate invoice
        Finance->>Customer: Send invoice
    end

    System->>Customer: Send completion summary
    System->>System: Update asset service history
    System->>System: Schedule next maintenance

Intervention Report

erDiagram
    INTERVENTION ||--|| INTERVENTION_REPORT : generates

    INTERVENTION_REPORT {
        string id PK
        string interventionId FK
        timestamp arrivalTime
        timestamp departureTime
        int laborMinutes
        text workPerformed
        text customerFeedback
        json partsUsed
        json photos
        string signatureUrl
        enum status
    }

    INTERVENTION_REPORT ||--o{ REPORT_PHOTO : contains
    INTERVENTION_REPORT ||--o{ PART_USAGE : records

    PART_USAGE {
        string id PK
        string reportId FK
        string partId FK
        int quantity
        decimal unitPrice
        decimal totalPrice
    }