package com.gzzm.lobster.plan;

import com.gzzm.lobster.common.PlanItemStatus;
import net.cyan.thunwind.annotation.ColumnDescription;
import net.cyan.thunwind.annotation.Entity;
import net.cyan.thunwind.annotation.Index;

import java.util.Date;

/**
 * PlanItem —— 计划中的一项任务步骤 / A single step inside a plan.
 */
@Entity(table = "AI_PLAN_ITEM", keys = "itemId")
public class PlanItem {

    @ColumnDescription(type = "varchar(40)")
    private String itemId;

    @Index
    @ColumnDescription(type = "varchar(40)", nullable = false)
    private String planId;

    @ColumnDescription(type = "number(6)", nullable = false, defaultValue = "0")
    private Integer seq;

    @ColumnDescription(type = "varchar(300)")
    private String title;

    @ColumnDescription(type = "varchar(2000)")
    private String description;

    private PlanItemStatus status;

    @ColumnDescription(type = "varchar(2000)")
    private String resultSummary;

    @ColumnDescription(type = "varchar(40)")
    private String artifactId;

    private Date startedAt;
    private Date completedAt;
    private Date createTime;
    private Date updateTime;

    public PlanItem() {}

    public String getItemId() { return itemId; }
    public void setItemId(String itemId) { this.itemId = itemId; }
    public String getPlanId() { return planId; }
    public void setPlanId(String planId) { this.planId = planId; }
    public Integer getSeq() { return seq; }
    public void setSeq(Integer seq) { this.seq = seq; }
    public String getTitle() { return title; }
    public void setTitle(String title) { this.title = title; }
    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }
    public PlanItemStatus getStatus() { return status; }
    public void setStatus(PlanItemStatus status) { this.status = status; }
    public String getResultSummary() { return resultSummary; }
    public void setResultSummary(String resultSummary) { this.resultSummary = resultSummary; }
    public String getArtifactId() { return artifactId; }
    public void setArtifactId(String artifactId) { this.artifactId = artifactId; }
    public Date getStartedAt() { return startedAt; }
    public void setStartedAt(Date startedAt) { this.startedAt = startedAt; }
    public Date getCompletedAt() { return completedAt; }
    public void setCompletedAt(Date completedAt) { this.completedAt = completedAt; }
    public Date getCreateTime() { return createTime; }
    public void setCreateTime(Date createTime) { this.createTime = createTime; }
    public Date getUpdateTime() { return updateTime; }
    public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; }
}
