import {
  IsString,
  IsNotEmpty,
  IsOptional,
  IsEnum,
  IsUUID,
  IsInt,
  Min,
  Max,
  MaxLength,
  MinLength,
} from 'class-validator';
import { Type } from 'class-transformer';

// ==================== 枚举定义 ====================

export enum KnowledgeFixStatus {
  PENDING = 'PENDING',
  APPROVED = 'APPROVED',
  REJECTED = 'REJECTED',
}

// ==================== 创建知识纠正 DTO ====================

export class CreateKnowledgeFixDto {
  @IsUUID()
  @IsNotEmpty()
  messageId: string;

  @IsString()
  @IsNotEmpty()
  @MinLength(10, { message: '正确答案至少 10 个字符' })
  @MaxLength(5000, { message: '正确答案最多 5000 个字符' })
  correctAnswer: string;
}

// ==================== 审核知识纠正 DTO ====================

export class ReviewKnowledgeFixDto {
  @IsEnum(KnowledgeFixStatus)
  @IsNotEmpty()
  status: KnowledgeFixStatus.APPROVED | KnowledgeFixStatus.REJECTED;

  @IsString()
  @IsOptional()
  @MaxLength(500, { message: '审核备注最多 500 个字符' })
  reviewNote?: string;
}

// ==================== 查询知识纠正 DTO ====================

export class QueryKnowledgeFixDto {
  @IsInt()
  @Min(1)
  @IsOptional()
  @Type(() => Number)
  page?: number = 1;

  @IsInt()
  @Min(1)
  @Max(50)
  @IsOptional()
  @Type(() => Number)
  limit?: number = 20;

  @IsEnum(KnowledgeFixStatus)
  @IsOptional()
  status?: KnowledgeFixStatus;
}
