package com.mydreamjob.assessment; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import java.time.LocalDateTime; /** * 测评定义(V34/V35)。 * *

{@code questionCount} 为题库总题数(72),{@code attemptQuestionCount} 为每次答卷抽题数(30), * {@code minPerDimension} 为每个维度最少抽题数(5)。

*/ @Data @Builder @NoArgsConstructor @AllArgsConstructor @Entity @Table(name = "assessment_definitions") @EntityListeners(AuditingEntityListener.class) public class AssessmentDefinition { public static final String STATUS_ACTIVE = "ACTIVE"; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "type_code", nullable = false, length = 40) private String typeCode; @Column(name = "display_name", nullable = false, length = 100) private String displayName; @Column(length = 1000) private String description; @Column(columnDefinition = "TEXT") private String instructions; @Column(nullable = false, length = 20) @Builder.Default private String status = STATUS_ACTIVE; @Column(name = "scale_type", nullable = false, length = 20) private String scaleType; @Column(name = "question_count", nullable = false) private Integer questionCount; @Column(name = "attempt_question_count", nullable = false) private Integer attemptQuestionCount; @Column(name = "min_per_dimension", nullable = false) private Integer minPerDimension; @Column(name = "question_set_version", nullable = false, length = 40) private String questionSetVersion; @Column(name = "rules_version", nullable = false, length = 40) private String rulesVersion; @CreatedDate @Column(name = "created_at", nullable = false, updatable = false) private LocalDateTime createdAt; @LastModifiedDate @Column(name = "updated_at", nullable = false) private LocalDateTime updatedAt; }