Files
SkriptAI-be/src/modules/skriptai/dto/research.dto.ts
T
2026-03-23 01:59:17 +03:00

176 lines
4.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}