package kr.itn.itnhub.process;

/**
 * 권리처리 게시물 한 건. {@code A:T} 열(수정 링크 U열은 제외)과 {@code V:X, Z, AA} 열이
 * 그대로 대응한다({@code U, Y}는 원본 시트의 건너뛰는 열이라 컬럼이 없다). 조사원+권리확인
 * 영역(siteName..priorEvidence)은 재업로드마다 항상 파일이 최신값으로 덮어쓰되, 계약서
 * 유무(contractDocs)만은 웹에서 입력하는 값이라 {@link #webEditedAt}이 null일 때만 파일이
 * 덮어쓴다. 권리처리 영역(judgedKoglType..processStatus)도 {@link #webEditedAt}이 null일
 * 때만 파일이 덮어쓴다 - 자세한 병합 정책은 {@code ProcessItemMapper.xml}의 upsertFromFile 참고.
 */
public class ProcessItem {

    private Long id;
    private Long orgId;
    private int seq;

    // 게시물 정보(조사원) + 권리확인(변호사) - 재업로드 시 항상 파일 값으로 갱신
    private String siteName;
    private String category;
    private String boardName;
    private String postTitle;
    private String url;
    private String description;
    private String hasAttachment;
    private String priorKoglType;
    private String producedDate;
    private String publishedDate;
    private String reviewMajor;
    private String reviewMinor;
    private String reviewResult;
    private String reviewKoglType;
    private String reviewAiType;
    private String reviewOpinion;
    private String reviewNote;
    private String priorEvidence;

    // 계약서 유무 - 웹에서 입력하는 값이라 webEditedAt이 null일 때만 재업로드가 덮어씀
    private String contractDocs;

    // 권리처리(변호사) - webEditedAt이 null일 때만 재업로드가 덮어씀
    private String judgedKoglType;
    private String judgedAiType;
    private String finalOpinion;
    private String judgmentBasis;
    private String processStatus;

    /** null이면 아직 웹에서 권리처리 판정을 수정한 적이 없다는 뜻이다(재업로드 병합 판단 기준). */
    private Long webEditedAt;
    /** 처리상태가 "처리완료"로 처음 저장된 시각. 이후 재저장돼도 바뀌지 않는다. */
    private Long processedAt;
    private long createdAt;
    private long updatedAt;

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }

    public Long getOrgId() { return orgId; }
    public void setOrgId(Long orgId) { this.orgId = orgId; }

    public int getSeq() { return seq; }
    public void setSeq(int seq) { this.seq = seq; }

    public String getSiteName() { return siteName; }
    public void setSiteName(String siteName) { this.siteName = siteName; }

    public String getCategory() { return category; }
    public void setCategory(String category) { this.category = category; }

    public String getBoardName() { return boardName; }
    public void setBoardName(String boardName) { this.boardName = boardName; }

    public String getPostTitle() { return postTitle; }
    public void setPostTitle(String postTitle) { this.postTitle = postTitle; }

    public String getUrl() { return url; }
    public void setUrl(String url) { this.url = url; }

    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }

    public String getHasAttachment() { return hasAttachment; }
    public void setHasAttachment(String hasAttachment) { this.hasAttachment = hasAttachment; }

    public String getPriorKoglType() { return priorKoglType; }
    public void setPriorKoglType(String priorKoglType) { this.priorKoglType = priorKoglType; }

    public String getContractDocs() { return contractDocs; }
    public void setContractDocs(String contractDocs) { this.contractDocs = contractDocs; }

    public String getProducedDate() { return producedDate; }
    public void setProducedDate(String producedDate) { this.producedDate = producedDate; }

    public String getPublishedDate() { return publishedDate; }
    public void setPublishedDate(String publishedDate) { this.publishedDate = publishedDate; }

    public String getReviewMajor() { return reviewMajor; }
    public void setReviewMajor(String reviewMajor) { this.reviewMajor = reviewMajor; }

    public String getReviewMinor() { return reviewMinor; }
    public void setReviewMinor(String reviewMinor) { this.reviewMinor = reviewMinor; }

    public String getReviewResult() { return reviewResult; }
    public void setReviewResult(String reviewResult) { this.reviewResult = reviewResult; }

    public String getReviewKoglType() { return reviewKoglType; }
    public void setReviewKoglType(String reviewKoglType) { this.reviewKoglType = reviewKoglType; }

    public String getReviewAiType() { return reviewAiType; }
    public void setReviewAiType(String reviewAiType) { this.reviewAiType = reviewAiType; }

    public String getReviewOpinion() { return reviewOpinion; }
    public void setReviewOpinion(String reviewOpinion) { this.reviewOpinion = reviewOpinion; }

    public String getReviewNote() { return reviewNote; }
    public void setReviewNote(String reviewNote) { this.reviewNote = reviewNote; }

    public String getPriorEvidence() { return priorEvidence; }
    public void setPriorEvidence(String priorEvidence) { this.priorEvidence = priorEvidence; }

    public String getJudgedKoglType() { return judgedKoglType; }
    public void setJudgedKoglType(String judgedKoglType) { this.judgedKoglType = judgedKoglType; }

    public String getJudgedAiType() { return judgedAiType; }
    public void setJudgedAiType(String judgedAiType) { this.judgedAiType = judgedAiType; }

    public String getFinalOpinion() { return finalOpinion; }
    public void setFinalOpinion(String finalOpinion) { this.finalOpinion = finalOpinion; }

    public String getJudgmentBasis() { return judgmentBasis; }
    public void setJudgmentBasis(String judgmentBasis) { this.judgmentBasis = judgmentBasis; }

    public String getProcessStatus() { return processStatus; }
    public void setProcessStatus(String processStatus) { this.processStatus = processStatus; }

    public Long getWebEditedAt() { return webEditedAt; }
    public void setWebEditedAt(Long webEditedAt) { this.webEditedAt = webEditedAt; }

    public Long getProcessedAt() { return processedAt; }
    public void setProcessedAt(Long processedAt) { this.processedAt = processedAt; }

    public long getCreatedAt() { return createdAt; }
    public void setCreatedAt(long createdAt) { this.createdAt = createdAt; }

    public long getUpdatedAt() { return updatedAt; }
    public void setUpdatedAt(long updatedAt) { this.updatedAt = updatedAt; }
}
