package com.dne.ems.dto;

import com.dne.ems.model.enums.SeverityLevel;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * 从反馈创建任务请求数据传输对象
 *
 * <p>用于主管将公众反馈转化为可分配的任务，包含任务基本属性和优先级设置
 *
 * <p>业务规则：
 * <ul>
 *   <li>反馈状态必须为PENDING_REVIEW(待审核)</li>
 *   <li>创建后原反馈状态自动更新为PROCESSED(已处理)</li>
 *   <li>新任务初始状态为PENDING_ASSIGNMENT(待分配)</li>
 *   <li>任务标题需简明描述问题本质</li>
 *   <li>严重级别影响任务分配优先级和响应时限</li>
 * </ul>
 *
 * @author DNE开发团队
 * @version 1.0
 * @since 2024-03
 * @see com.dne.ems.model.enums.SeverityLevel 严重级别枚举定义
 * @see com.dne.ems.model.Feedback 关联的反馈实体
 */
@Data
public class TaskFromFeedbackRequest {

    /**
     * 任务标题
     *
     * <p>必填字段，用于简要描述任务内容
     * <p>验证规则：
     * <ul>
     *   <li>不能为空(@NotBlank)</li>
     *   <li>最大长度255字符(JPA约束)</li>
     *   <li>建议包含问题类型和位置关键词</li>
     * </ul>
     */
    @NotBlank(message = "任务标题不能为空")
    private String title;

    /**
     * 严重级别
     *
     * <p>必填字段，用于确定任务处理优先级和响应时限
     * <p>可选值：
     * <ul>
     *   <li>LOW - 低优先级(72小时内处理)</li>
     *   <li>MEDIUM - 中优先级(48小时内处理)</li>
     *   <li>HIGH - 高优先级(24小时内处理)</li>
     *   <li>CRITICAL - 紧急(立即处理)</li>
     * </ul>
     * @see com.dne.ems.model.enums.SeverityLevel 完整枚举定义
     */
    @NotNull(message = "严重级别不能为空")
    private SeverityLevel severityLevel;
} 