← 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