update: the ai interface and enum

This commit is contained in:
mahyargdz
2025-07-26 14:34:04 +03:30
parent a753badcef
commit 6b6566b982
9 changed files with 69 additions and 57 deletions
@@ -7,8 +7,8 @@ import { MessageDetails } from "../../mail-server/interfaces/messages-response.i
import { WildDuckMessagesService } from "../../mail-server/services/wildduck-messages.service";
import { SummarizeEmailDto } from "../DTO/summarize-email.dto";
import { WriteEmailAssistanceDto } from "../DTO/write-email-assistance.dto";
import { SummaryLength, SummaryTone } from "../enums/ai.enum";
import { EmailData, SummarizationOptions } from "../interfaces/ai-service.interface";
import { SummaryLengthEnum, SummaryToneEnum } from "../enums/ai.enum";
import { IEmailData, SummarizationOptions } from "../interfaces/ai-service.interface";
@Injectable()
export class AiAssistantService {
@@ -45,7 +45,7 @@ export class AiAssistantService {
htmlContent: this.extractHtmlContent(message),
from: this.extractSenderInfo(message),
to: this.extractRecipientInfo(message),
date: message.date || new Date(),
date: message.date || new Date().toISOString(),
attachments: message.attachments || [],
};
}
@@ -99,12 +99,12 @@ export class AiAssistantService {
}
//************************************************* */
private async generateEmailSummary(emailData: any, length: SummaryLength = SummaryLength.MEDIUM, _tone: SummaryTone = SummaryTone.PROFESSIONAL) {
private async generateEmailSummary(emailData: IEmailData, length?: SummaryLengthEnum, tone?: SummaryToneEnum) {
const content = emailData.content || emailData.htmlContent;
if (!content.trim()) throw new BadRequestException(AiMessage.EMAIL_CONTENT_IS_EMPTY_OR_COULD_NOT_BE_EXTRACTED);
if (!content || !content.trim()) throw new BadRequestException(AiMessage.EMAIL_CONTENT_IS_EMPTY_OR_COULD_NOT_BE_EXTRACTED);
const aiEmailData: EmailData = {
const aiEmailData: IEmailData = {
subject: emailData.subject,
content: emailData.content,
htmlContent: emailData.htmlContent,
@@ -115,8 +115,8 @@ export class AiAssistantService {
};
const summarizationOptions: SummarizationOptions = {
length: length.toLowerCase() as "short" | "medium" | "detailed",
tone: _tone.toLowerCase() as "formal" | "casual" | "professional",
length: length || SummaryLengthEnum.MEDIUM,
tone: tone || SummaryToneEnum.PROFESSIONAL,
};
const aiResponse = await this.aiService.summarizeEmail(aiEmailData, summarizationOptions);