Files
SDI 12e4f17b62
CI / typecheck (push) Successful in 1m8s
CI / format (push) Failing after 1m6s
CI / lint (push) Failing after 49s
CI / test (push) Failing after 1m8s
first commit
2026-07-15 18:05:12 +09:00

5.0 KiB

erDiagram
    software_apps ||--o{ workspaces : defines
    service_types ||--o{ workspaces : defines
    workspaces ||--o{ user_workspace_access : accessed_by
    workspaces ||--o{ support_tickets : contains
    workspaces ||--o{ attachments : stores
    workspaces ||--o{ faqs : provides
    support_tickets ||--o{ ticket_comments : has
    support_tickets ||--o{ attachments : has
    support_tickets ||--o{ request_approvals : needs
    support_tickets ||--o{ asset_allocations : requests
    support_tickets ||--o{ vehicle_schedules : schedules
    support_tickets ||--o{ remote_support : needs
    support_tickets ||--o{ notification_logs : notifies
    assets ||--o{ asset_allocations : allocated
    assets ||--o{ vehicle_schedules : scheduled
    support_status_codes ||--o{ support_tickets : statuses
    support_category_codes ||--o{ support_tickets : categorizes
    remote_support_status_codes ||--o{ remote_support : statuses

    software_apps {
        int id PK
        string app_code UK
        string app_name UK
        string description
        boolean is_active
        datetime created_at
    }

    service_types {
        int id PK
        string service_code UK
        string service_name UK
        string description
        boolean is_active
        datetime created_at
    }

    workspaces {
        int id PK
        string workspace_type
        int software_app_id FK
        int service_type_id FK
        string workspace_code UK
        string workspace_name
        boolean is_active
        datetime created_at
    }

    user_workspace_access {
        int id PK
        string user_id
        string tenant_id
        int workspace_id FK
        string workspace_role
        boolean can_read
        boolean can_write
        boolean can_manage
        boolean can_approve
        string page_scope
        datetime created_at
    }

    user_notification_profiles {
        int id PK
        string user_id
        string tenant_id
        string user_type
        string phone_number
        string naverworks_user_key
        boolean sms_opt_in
        datetime created_at
    }

    support_status_codes {
        string code PK
        string name
        int sort_order
    }

    support_category_codes {
        string code PK
        string name
        int sort_order
    }

    support_tickets {
        int id PK
        int workspace_id FK
        string requester_id
        string requester_tenant_id
        string ticket_type
        string title
        string content
        string category_code FK
        string status_code FK
        boolean is_secret
        datetime requested_start_at
        datetime requested_end_at
        string priority
        datetime created_at
        datetime updated_at
    }

    ticket_comments {
        int id PK
        int ticket_id FK
        string author_id
        string author_tenant_id
        string content
        datetime created_at
    }

    attachments {
        int id PK
        string parent_type
        int parent_id
        int workspace_id FK
        string file_name
        string file_path
        int file_size
        datetime created_at
    }

    request_approvals {
        int id PK
        int ticket_id FK
        string approver_id
        string approver_tenant_id
        string approval_status
        string comment
        datetime approved_at
        datetime created_at
    }

    assets {
        int id PK
        string asset_code UK
        string asset_name
        string asset_type
        int quantity
        boolean is_active
        string location
        datetime created_at
    }

    asset_allocations {
        int id PK
        int ticket_id FK
        int asset_id FK
        string assignee_id
        string assignee_tenant_id
        string allocation_status
        datetime loaned_at
        datetime due_at
        datetime returned_at
        datetime created_at
    }

    vehicle_schedules {
        int id PK
        int ticket_id FK
        int asset_id FK
        datetime departure_at
        datetime arrival_at
        string destination
        string driver_name
        datetime created_at
    }

    remote_support_status_codes {
        string code PK
        string name
        int sort_order
    }

    remote_support {
        int id PK
        int ticket_id FK
        string status_code FK
        string support_engineer_id
        string support_engineer_tenant_id
        datetime scheduled_time
        datetime created_at
    }

    faqs {
        int id PK
        int workspace_id FK
        string title
        string content
        boolean is_active
        datetime created_at
    }

    notification_logs {
        int id PK
        int ticket_id FK
        string recipient_id
        string recipient_tenant_id
        string channel
        string target_address
        string delivery_status
        string fallback_channel
        string error_message
        datetime sent_at
    }

    user_notification_profiles ||..o{ notification_logs : receives