import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsString, IsOptional, IsBoolean, IsArray } from 'class-validator'; // SourceType and CharacterRole are string unions - using string here for decorator compatibility /** * CreateSourceDto * * DTO for adding a research source. * * TR: Araştırma kaynağı eklemek için DTO. * EN: DTO for adding a research source. */ export class CreateSourceDto { @ApiProperty({ description: 'Project ID' }) @IsString() projectId: string; @ApiProperty({ description: 'Source title' }) @IsString() title: string; @ApiProperty({ description: 'Source URL' }) @IsString() url: string; @ApiPropertyOptional({ description: 'Source snippet/summary' }) @IsOptional() @IsString() snippet?: string; @ApiProperty({ description: 'Source type' }) @IsString() type: string; // article, video, interview, etc. @ApiPropertyOptional({ description: 'Whether source is selected' }) @IsOptional() @IsBoolean() selected?: boolean; } /** * CreateBriefItemDto * * DTO for adding a brief question/answer. * * TR: Brief sorusu/cevabı eklemek için DTO. * EN: DTO for adding a brief question/answer. */ export class CreateBriefItemDto { @ApiProperty({ description: 'Project ID' }) @IsString() projectId: string; @ApiProperty({ description: 'Question text' }) @IsString() question: string; @ApiProperty({ description: 'Answer text' }) @IsString() answer: string; @ApiPropertyOptional({ description: 'Sort order' }) @IsOptional() sortOrder?: number; } /** * CreateCharacterDto * * DTO for creating a character profile. * * TR: Karakter profili oluşturmak için DTO. * EN: DTO for creating a character profile. */ export class CreateCharacterDto { @ApiProperty({ description: 'Project ID' }) @IsString() projectId: string; @ApiProperty({ description: 'Character name' }) @IsString() name: string; @ApiProperty({ description: 'Character role' }) @IsString() role: string; // Protagonist, Antagonist, etc. @ApiPropertyOptional({ description: 'Character values (inner beliefs)' }) @IsOptional() @IsString() values?: string; @ApiPropertyOptional({ description: 'Character traits (personality)' }) @IsOptional() @IsString() traits?: string; @ApiPropertyOptional({ description: 'Character mannerisms (external behavior)', }) @IsOptional() @IsString() mannerisms?: string; } /** * PerformResearchDto * * DTO for performing deep research. * * TR: Derin araştırma yapmak için DTO. * EN: DTO for performing deep research. */ export class PerformResearchDto { @ApiProperty({ description: 'Project ID' }) @IsString() projectId: string; @ApiPropertyOptional({ description: 'Additional research query' }) @IsOptional() @IsString() additionalQuery?: string; } /** * GenerateDiscoveryQuestionsDto * * DTO for generating creative brief discovery questions. * * TR: Yaratıcı brief keşif soruları oluşturmak için DTO. * EN: DTO for generating creative brief discovery questions. */ export class GenerateDiscoveryQuestionsDto { @ApiProperty({ description: 'Topic to generate questions for' }) @IsString() topic: string; @ApiProperty({ description: 'Language for questions' }) @IsString() language: string; @ApiPropertyOptional({ description: 'Existing questions to avoid' }) @IsOptional() @IsArray() existingQuestions?: string[]; } /** * GenerateLoglineDto * * DTO for generating logline and high concept. * * TR: Logline ve high concept oluşturmak için DTO. * EN: DTO for generating logline and high concept. */ export class GenerateLoglineDto { @ApiProperty({ description: 'Project ID' }) @IsString() projectId: string; } /** * GenerateCharactersDto * * DTO for auto-generating character profiles. * * TR: Otomatik karakter profilleri oluşturmak için DTO. * EN: DTO for auto-generating character profiles. */ export class GenerateCharactersDto { @ApiProperty({ description: 'Project ID' }) @IsString() projectId: string; }