feat(MED-85): improve results sync logs

This commit is contained in:
2025-08-27 08:07:18 +03:00
parent 68e5101885
commit 380363922c
2 changed files with 91 additions and 24 deletions

View File

@@ -1,29 +1,62 @@
import { readPrivateMessageResponse } from "~/lib/services/medipost.service";
type ProcessedMessage = {
messageId: string;
hasAnalysisResponse: boolean;
hasPartialAnalysisResponse: boolean;
hasFullAnalysisResponse: boolean;
medusaOrderId: string | undefined;
};
type GroupedResults = {
processed: Pick<ProcessedMessage, 'messageId' | 'medusaOrderId'>[];
waitingForResults: Pick<ProcessedMessage, 'messageId' | 'medusaOrderId'>[];
};
export default async function syncAnalysisResults() {
console.info("Syncing analysis results");
let processedMessageIds: string[] = [];
let processedMessages: ProcessedMessage[] = [];
const excludedMessageIds: string[] = [];
while (true) {
console.info("Fetching private messages");
const { messageIdErrored, messageIdProcessed } = await readPrivateMessageResponse({ excludedMessageIds });
if (messageIdProcessed) {
processedMessageIds.push(messageIdProcessed);
const result = await readPrivateMessageResponse({ excludedMessageIds });
if (result.messageId) {
processedMessages.push(result as ProcessedMessage);
}
if (!messageIdErrored) {
if (!result.messageId) {
console.info("No more messages to process");
break;
}
if (excludedMessageIds.includes(messageIdErrored)) {
console.info(`Message id=${messageIdErrored} has already been processed, stopping`);
if (!excludedMessageIds.includes(result.messageId)) {
excludedMessageIds.push(result.messageId);
} else {
break;
}
excludedMessageIds.push(messageIdErrored);
}
console.info(`Processed ${processedMessageIds.length} messages, ids: ${processedMessageIds.join(', ')}`);
const groupedResults = processedMessages.reduce((acc, result) => {
if (result.medusaOrderId) {
if (result.hasAnalysisResponse) {
if (!acc.processed) {
acc.processed = [];
}
acc.processed.push({
messageId: result.messageId,
medusaOrderId: result.medusaOrderId,
});
} else {
if (!acc.waitingForResults) {
acc.waitingForResults = [];
}
acc.waitingForResults.push({
messageId: result.messageId,
medusaOrderId: result.medusaOrderId,
});
}
}
return acc;
}, {} as GroupedResults);
console.info(`Processed ${processedMessages.length} messages, results: ${JSON.stringify(groupedResults, undefined, 2)}`);
}