You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
autoflow-server-mgmt/src/main/java/kr/re/etri/autoflow/entity/ExperimentsEntity.java

75 lines
2.5 KiB

package kr.re.etri.autoflow.entity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.persistence.*;
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.time.LocalDateTime;
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "tb_experiments")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "Kubeflow 및 MLflow Experiment 엔티티")
public class ExperimentsEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Schema(description = "DB PK")
private Long id;
@Schema(description = "Kubeflow / MLflow Experiment ID")
private String kubeFlowId;
@Schema(description = "Kubeflow / MLflow Experiment ID")
private String mlFlowId;
@Schema(description = "Experiment 이름 / Kubeflow: name, MLflow: name")
private String name;
@Schema(description = "Experiment 표시 이름 / Kubeflow: display_name, MLflow: name or display_name")
private String displayName;
@Schema(description = "Experiment 설명 / Kubeflow: description, MLflow: optional description")
private String description;
@Schema(description = "MLflow Artifact 경로 / Kubeflow에는 해당 없음")
private String artifactLocation;
@Schema(description = "MLflow 상태 / lifecycle_stage, Kubeflow에는 해당 없음")
private String lifecycleStage;
@Schema(description = "Kubeflow 저장 상태 / storage_state, MLflow에는 해당 없음")
private String storageState;
@CreatedDate
@Schema(description = "Experiment 생성 일시 / Kubeflow: ISO 8601 created_at, MLflow: timestamp(ms) → LocalDateTime")
private LocalDateTime kubeflowCreatedAt;
@CreatedDate
@Schema(description = "Experiment 생성 일시 / Kubeflow: ISO 8601 created_at, MLflow: timestamp(ms) → LocalDateTime")
private LocalDateTime mlflowCreatedAt;
@LastModifiedDate
@Schema(description = "Experiment 마지막 업데이트 일시 / MLflow: last_update_time(ms) → LocalDateTime, Kubeflow에는 해당 없음")
private LocalDateTime lastUpdateTime;
@Schema(description = "Kubeflow 마지막 Run 생성 일시 / last_run_created_at")
private LocalDateTime lastRunCreatedAt;
@Schema(description = "등록자 ID")
private String regUserId;
@Schema(description = "프로젝트 ID / nullable 아님")
@Column(nullable = false)
private Long projectId;
}