← All Diagrams

DAG Assessment Class Diagram

class diagram

Domain model for the adaptive question DAG engine — tenant, user, assessment instance, DAG structure (nodes, edges, visibility rules), answers, and risk scoring.

Source: dag-assessment-class-diagram.mmd

classDiagram
    direction TB

    class Tenant {
        +id: string
        +companyName: string
        +naicsCode: string
        +ownerUID: string
        +subscriptionType: string
        +userCounter: number
    }

    class User {
        +id: string
        +tenantId: string
        +roles: string[]
        +profile: UserProfile
    }

    class UserProfile {
        +firstName: string
        +lastName: string
        +email: string
        +profileCompleted: boolean
    }

    class CompanyProfile {
        +id: string
        +companyName: string
        +naicsCode: string
        +companySize: string
        +socialImpact: number
    }

    class QuestionDAG {
        +id: string
        +version: string
        +description: string
        +rootNodeIds: string[]
    }

    class DAGNode {
        +id: string
        +text: string
        +answerType: AnswerType
        +weight: number
        +category: string
    }

    class DAGEdge {
        +source: string
        +target: string
        +condition: string
    }

    class VisibilityRule {
        +naicsInclude: string[]
        +naicsExclude: string[]
        +companyAttributePredicates: string[]
        +parentAnswerPredicates: string[]
    }

    class RiskAssessmentInstance {
        +id: string
        +tenantId: string
        +userId: string
        +dagVersion: string
        +status: string
        +expiresAt: Date
    }

    class AssessmentAnswer {
        +nodeId: string
        +value: any
        +answerRisk: number
    }

    class AssessmentAuditLog {
        +id: string
        +assessmentId: string
        +nodeId: string
        +outcome: string
    }

    class RiskModel {
        +id: string
        +sizeMultipliers: Map
        +socialImpactMultipliers: Map
    }

    Tenant "1" -- "N" User : has
    User "1" -- "1" UserProfile : has
    Tenant "1" -- "1" CompanyProfile : has
    User "1" -- "N" RiskAssessmentInstance : takes
    Tenant "1" -- "N" RiskAssessmentInstance : contains

    RiskAssessmentInstance "1" -- "1" QuestionDAG : uses
    RiskAssessmentInstance "1" -- "N" AssessmentAnswer : contains
    RiskAssessmentInstance "1" -- "N" AssessmentAuditLog : generates

    QuestionDAG "1" -- "N" DAGNode : composed of
    QuestionDAG "1" -- "N" DAGEdge : composed of
    DAGNode "1" -- "1" VisibilityRule : has
    DAGEdge -- DAGNode : connects

    RiskModel -- RiskAssessmentInstance : provides scoring logic for