package com.cool.modules.dailyreport.entity;

import com.cool.core.base.BaseEntity;
import com.mybatisflex.annotation.Table;
import com.cool.core.annotation.ColumnDefine;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 日报实体
 * 记录员工每日工作报告，包含原始输入、AI格式化和用户最终编辑的内容
 */
@Getter
@Setter
@Table(value = "daily_report", comment = "日报表")
public class DailyReportEntity extends BaseEntity<DailyReportEntity> {

    @ColumnDefine(comment = "用户ID（关联user_info表）", notNull = true)
    private Long userId;

    @ColumnDefine(comment = "日报日期", notNull = true)
    private LocalDate reportDate;

    @ColumnDefine(comment = "原始输入内容（语音转文字或直接文字输入）", type = "TEXT")
    private String originalText;

    @ColumnDefine(comment = "AI格式化后的内容", type = "TEXT")
    private String aiFormattedContent;

    @ColumnDefine(comment = "用户最终编辑的内容（实际展示内容）", type = "TEXT")
    private String userEditedContent;

    @ColumnDefine(comment = "使用的AI模型ID（关联ai_model表）")
    private Long aiModelId;

    @ColumnDefine(comment = "使用的AI模板ID（关联ai_template表）")
    private Long aiTemplateId;

    @ColumnDefine(comment = "状态 0-草稿 1-已提交", defaultValue = "0")
    private Integer status;

    @ColumnDefine(comment = "提交时间")
    private LocalDateTime submitTime;

    @ColumnDefine(comment = "输入方式 0-文字输入 1-语音输入", defaultValue = "0")
    private Integer inputType;

    /**
     * 获取状态文本（用于前端显示）
     */
    @JsonProperty("statusText")
    public String getStatusText() {
        if (status == null) {
            return "未知";
        }
        return status == 0 ? "草稿" : "已提交";
    }

    /**
     * 获取输入方式文本（用于前端显示）
     */
    @JsonProperty("inputTypeText")
    public String getInputTypeText() {
        if (inputType == null) {
            return "未知";
        }
        return inputType == 0 ? "文字输入" : "语音输入";
    }
}
