chore: add new feature for the ai generate template
This commit is contained in:
@@ -5,10 +5,11 @@ import { AiService } from "./ai.service";
|
||||
import { AiMessage } from "../../../common/enums/message.enum";
|
||||
import { MessageDetails } from "../../mail-server/interfaces/messages-response.interface";
|
||||
import { WildDuckMessagesService } from "../../mail-server/services/wildduck-messages.service";
|
||||
import { GenerateTemplateDto, TemplatePurposeEnum, TemplateStyleEnum, TemplateThemeEnum } from "../DTO/generate-template.dto";
|
||||
import { SummarizeEmailDto } from "../DTO/summarize-email.dto";
|
||||
import { WriteEmailAssistanceDto } from "../DTO/write-email-assistance.dto";
|
||||
import { SummaryLengthEnum, SummaryToneEnum } from "../enums/ai.enum";
|
||||
import { IEmailData, SummarizationOptions } from "../interfaces/ai-service.interface";
|
||||
import { IEmailData, ITemplateGenerationRequest, SummarizationOptions, TemplateGenerationOptions } from "../interfaces/ai-service.interface";
|
||||
|
||||
@Injectable()
|
||||
export class AiAssistantService {
|
||||
@@ -37,6 +38,51 @@ export class AiAssistantService {
|
||||
return { assistance };
|
||||
}
|
||||
|
||||
//************************************************* */
|
||||
async generateTemplate(generateTemplateDto: GenerateTemplateDto) {
|
||||
if (!generateTemplateDto.description?.trim()) {
|
||||
throw new BadRequestException(AiMessage.DESCRIPTION_IS_REQUIRED);
|
||||
}
|
||||
|
||||
const templateRequest: ITemplateGenerationRequest = {
|
||||
description: generateTemplateDto.description.trim(),
|
||||
options: this.buildTemplateGenerationOptions(generateTemplateDto),
|
||||
};
|
||||
|
||||
const aiResponse = await this.aiService.generateTemplate(templateRequest);
|
||||
|
||||
return {
|
||||
template: {
|
||||
name: aiResponse.templateName,
|
||||
description: aiResponse.description,
|
||||
structure: aiResponse.structure,
|
||||
rawHtml: aiResponse.rawHtml,
|
||||
colorScheme: aiResponse.colorScheme,
|
||||
},
|
||||
designInsights: {
|
||||
designPrinciples: aiResponse.designPrinciples,
|
||||
suggestedImprovements: aiResponse.suggestedImprovements,
|
||||
},
|
||||
metadata: {
|
||||
theme: generateTemplateDto.theme || TemplateThemeEnum.MODERN,
|
||||
style: generateTemplateDto.style || TemplateStyleEnum.PROFESSIONAL,
|
||||
purpose: generateTemplateDto.purpose || TemplatePurposeEnum.GENERAL,
|
||||
generatedAt: new Date().toISOString(),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
//************************************************* */
|
||||
private buildTemplateGenerationOptions(dto: GenerateTemplateDto): TemplateGenerationOptions {
|
||||
return {
|
||||
theme: dto.theme,
|
||||
style: dto.style,
|
||||
purpose: dto.purpose,
|
||||
templateName: dto.templateName,
|
||||
preferredColors: dto.preferredColors,
|
||||
};
|
||||
}
|
||||
|
||||
//************************************************* */
|
||||
private extractEmailData(message: MessageDetails) {
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user