# M-TEER Core ERD (Mermaid)

```mermaid
erDiagram
    USERS {
        bigint id PK
        varchar email
        varchar password_hash
        varchar display_name
        datetime created_at
        datetime updated_at
    }

    ROLES {
        bigint id PK
        varchar name
        varchar description
        datetime created_at
    }

    PERMISSIONS {
        bigint id PK
        varchar name
        varchar description
    }

    USER_ROLES {
        bigint id PK
        bigint user_id FK
        bigint role_id FK
    }

    ROLE_PERMISSIONS {
        bigint id PK
        bigint role_id FK
        bigint permission_id FK
    }

    SECTIONS {
        bigint id PK
        varchar slug
        varchar title
        text description
        int `order`
        varchar status
        datetime created_at
    }

    MODULES {
        bigint id PK
        bigint section_id FK
        varchar slug
        varchar title
        text description
        int `order`
        varchar status
        bigint current_version_id FK
        datetime created_at
    }

    LESSONS {
        bigint id PK
        bigint module_id FK
        varchar title
        int `order`
        datetime created_at
    }

    ACTIVITIES {
        bigint id PK
        bigint lesson_id FK
        varchar type
        varchar title
        json config
        int `order`
        varchar status
        datetime created_at
    }

    CONTENT_BLOCKS {
        bigint id PK
        bigint activity_id FK
        varchar type
        json payload
        int `order`
        datetime created_at
    }

    MEDIA {
        bigint id PK
        varchar file_name
        varchar mime_type
        bigint file_size
        varchar storage_path
        varchar thumbnail_path
        varchar status
        bigint created_by FK
        datetime created_at
    }

    MEDIA_RELATIONS {
        bigint id PK
        bigint media_id FK
        varchar entity_type
        bigint entity_id
    }

    CONTENT_VERSIONS {
        bigint id PK
        varchar entity_type
        bigint entity_id
        int version_number
        bigint created_by FK
        text change_reason
        datetime created_at
        datetime published_at
    }

    DRAWINGS {
        bigint id PK
        bigint activity_id FK
        varchar anonymous_session_id
        json strokes_json
        varchar preview_image_path
        datetime created_at
    }

    DRAWING_TEMPLATES {
        bigint id PK
        varchar name
        varchar file_path
        json meta
        datetime created_at
    }

    DECISION_TREES {
        bigint id PK
        varchar title
        json meta
        datetime created_at
    }

    DECISION_TREE_NODES {
        bigint id PK
        bigint tree_id FK
        varchar node_type
        text payload
    }

    DECISION_TREE_EDGES {
        bigint id PK
        bigint tree_id FK
        bigint from_node_id FK
        bigint to_node_id FK
        varchar condition
    }

    PROGRESS {
        bigint id PK
        varchar anonymous_session_id
        varchar entity_type
        bigint entity_id
        json progress_json
        datetime last_updated
    }

    ANONYMOUS_SESSIONS {
        bigint id PK
        varchar device_id
        varchar metadata
        datetime created_at
        datetime last_seen
    }

    AUDIT_LOGS {
        bigint id PK
        bigint user_id FK
        varchar action
        varchar entity_type
        bigint entity_id
        json old_value
        json new_value
        varchar ip
        datetime created_at
    }

    CASES {
        bigint id PK
        varchar title
        text description
        varchar patient_code
        int age
        varchar sex
        json meta
        datetime created_at
    }

    CASE_ENTRIES {
        bigint id PK
        bigint case_id FK
        json payload
        datetime created_at
    }

    USERS ||--o{ USER_ROLES : has
    ROLES ||--o{ USER_ROLES : assigns
    ROLES ||--o{ ROLE_PERMISSIONS : has
    PERMISSIONS ||--o{ ROLE_PERMISSIONS : belongs

    SECTIONS ||--o{ MODULES : contains
    MODULES ||--o{ LESSONS : contains
    LESSONS ||--o{ ACTIVITIES : contains
    ACTIVITIES ||--o{ CONTENT_BLOCKS : contains

    MEDIA ||--o{ MEDIA_RELATIONS : links

    MODULES ||--o{ CONTENT_VERSIONS : versions
    ACTIVITIES ||--o{ CONTENT_VERSIONS : versions

    ACTIVITIES ||--o{ DRAWINGS : has
    DRAWING_TEMPLATES ||--o{ ACTIVITIES : uses

    DECISION_TREES ||--o{ DECISION_TREE_NODES : contains
    DECISION_TREES ||--o{ DECISION_TREE_EDGES : contains

    ANONYMOUS_SESSIONS ||--o{ PROGRESS : owns
    ANONYMOUS_SESSIONS ||--o{ DRAWINGS : owns

    CASES ||--o{ CASE_ENTRIES : contains

    USERS ||--o{ AUDIT_LOGS : creates

```
