main
Backend Deploy 🚀 / build-and-deploy (push) Has been cancelled

This commit is contained in:
Harun CAN
2026-05-09 05:57:56 +02:00
parent 3d36926fe9
commit 58832e99d1
17 changed files with 1469 additions and 59 deletions
@@ -1,48 +1,176 @@
import { IsString, IsOptional, IsArray, ValidateNested, IsNumber, IsIn } from 'class-validator';
import { Type } from 'class-transformer';
export class UploadedFileDto {
@IsString()
name: string;
@IsString()
content: string;
}
export class AnalyzeContentDto {
@IsArray()
@ValidateNested({ each: true })
@Type(() => UploadedFileDto)
transcripts: UploadedFileDto[];
@IsArray()
@ValidateNested({ each: true })
@Type(() => UploadedFileDto)
comments: UploadedFileDto[];
tone: string;
duration: string;
speakerName: string;
topicFocus: string;
targetAudience: string;
@IsString()
@IsOptional()
tone?: string;
@IsString()
@IsOptional()
duration?: string;
@IsString()
@IsOptional()
speakerName?: string;
@IsString()
@IsOptional()
topicFocus?: string;
@IsString()
@IsOptional()
targetAudience?: string;
}
export class StrategyResultDto {
@IsString()
title: string;
@IsString()
@IsOptional()
psychologicalTheme?: string;
@IsString()
@IsOptional()
inspiredByGap?: string;
@IsString()
@IsOptional()
hook?: string;
@IsString()
@IsOptional()
thumbnailConcept?: string;
segments: {
type: string;
duration: string;
description: string;
keyPoints: string[];
neuroObjective?: string;
}[];
interviewQuestions: string[];
selectedComments: {
username?: string;
text: string;
insightValue?: string;
sourceFile?: string;
}[];
commercialAnalysis: {
suitableIndustries: string[];
brandSafetyScore: number;
suggestedBrands: string[];
monetizationPotential: string;
};
chartData?: { topic: string; emotionalArousal: number }[];
@IsArray()
@IsOptional()
segments?: any[];
@IsArray()
@IsOptional()
interviewQuestions?: string[];
@IsArray()
@IsOptional()
selectedComments?: any[];
@IsOptional()
commercialAnalysis?: any;
@IsArray()
@IsOptional()
chartData?: any[];
}
export class CommercialAnalysisDto {
@IsString()
title: string;
@IsArray()
@IsString({ each: true })
industries: string[];
}
export class CreateProjectDto {
@IsString()
name: string;
@IsString()
@IsOptional()
tone?: string;
@IsString()
@IsOptional()
targetDuration?: string;
@IsString()
@IsOptional()
speakerName?: string;
@IsString()
@IsOptional()
targetAudience?: string;
@IsString()
@IsOptional()
formatDescription?: string;
}
export class UpdateProjectDto {
@IsString()
@IsOptional()
name?: string;
@IsString()
@IsOptional()
tone?: string;
@IsString()
@IsOptional()
targetDuration?: string;
@IsString()
@IsOptional()
speakerName?: string;
@IsString()
@IsOptional()
targetAudience?: string;
@IsString()
@IsOptional()
formatDescription?: string;
}
export class AddVideoDto {
@IsString()
youtubeUrl: string;
}
export class AddDocumentDto {
@IsString()
title: string;
@IsString()
content: string;
@IsString()
@IsIn(['transcript', 'comments'])
type: 'transcript' | 'comments';
}
export class CreateEpisodeDto {
@IsString()
topic: string;
@IsString()
@IsOptional()
targetAudience?: string;
@IsString()
@IsOptional()
duration?: string;
@IsString()
@IsOptional()
format?: string;
}