// dto/generate-quote.dto.ts
import { IsEnum, IsString, IsOptional, MaxLength, IsBoolean } from 'class-validator';
import { QuoteType } from '../enum/quote-type.enum';
import { ContentTone } from '../enum/tone.enum';
import { PostLength } from '../enum/post-length.enum';
import { AccountTier } from '../enum/account-tier.enum';

export class GenerateQuoteDto {
    @IsString()
    @MaxLength(5000)
    originalPost: string; // Tweet gốc bạn muốn quote

    @IsOptional()
    @IsString()
    originalAuthor?: string; // username của OP (optional, giúp AI biết tone)

    @IsOptional()
    @IsEnum(QuoteType)
    quoteType?: QuoteType; // Nếu không truyền -> AI tự chọn best fit

    @IsString()
    language: 'en' | 'vi' | 'ja' | 'ko';

    @IsOptional()
    @IsEnum(ContentTone)
    tone?: ContentTone;

    @IsOptional()
    @IsEnum(PostLength)
    postLength?: PostLength; // short/medium/long (Premium)

    @IsOptional()
    @IsEnum(AccountTier)
    accountTier?: AccountTier;

    @IsOptional()
    @IsString()
    persona?: string; // "crypto analyst", "tech journalist"...

    @IsOptional()
    @IsString()
    yourAngle?: string; // Góc nhìn riêng của bạn muốn express

    @IsOptional()
    @IsBoolean()
    enableReview?: boolean;

    @IsOptional()
    tweetId?: number;
}
