package com.emotion.dto.request;

import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * 情绪记录创建请求类
 * 
 * @author huazhongmin
 * @date 2025-09-08
 */
@Data
public class EmotionRecordCreateRequest {

    /**
     * 用户ID
     */
    @NotBlank(message = "用户ID不能为空")
    @Size(max = 32, message = "用户ID长度不能超过32个字符")
    private String userId;

    /**
     * 记录日期
     */
    @NotNull(message = "记录日期不能为空")
    private LocalDate recordDate;

    /**
     * 情绪类型
     */
    @NotBlank(message = "情绪类型不能为空")
    @Size(max = 32, message = "情绪类型长度不能超过32个字符")
    private String emotionType;

    /**
     * 情绪强度
     */
    @NotNull(message = "情绪强度不能为空")
    private BigDecimal intensity;

    /**
     * 触发因素
     */
    @Size(max = 768, message = "触发因素长度不能超过768个字符")
    private String triggers;

    /**
     * 描述
     */
    @Size(max = 768, message = "描述长度不能超过768个字符")
    private String description;

    /**
     * 标签
     */
    private List<String> tags;

    /**
     * 天气
     */
    @Size(max = 64, message = "天气长度不能超过64个字符")
    private String weather;

    /**
     * 地点
     */
    @Size(max = 128, message = "地点长度不能超过128个字符")
    private String location;

    /**
     * 活动
     */
    @Size(max = 128, message = "活动长度不能超过128个字符")
    private String activity;

    /**
     * 相关人物
     */
    @Size(max = 256, message = "相关人物长度不能超过256个字符")
    private String people;

    /**
     * 备注
     */
    @Size(max = 1024, message = "备注长度不能超过1024个字符")
    private String notes;
}