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

@@ -202,28 +202,60 @@ export async function readPrivateMessageResponse({
excludedMessageIds,
}: {
excludedMessageIds: string[];
}) {
let messageIdErrored: string | null = null;
let messageIdProcessed: string | null = null;
}): Promise<{ messageId: string | null; hasAnalysisResponse: boolean; hasPartialAnalysisResponse: boolean; hasFullAnalysisResponse: boolean; medusaOrderId: string | undefined }> {
let messageId: string | null = null;
let hasAnalysisResponse = false;
let hasPartialAnalysisResponse = false;
let hasFullAnalysisResponse = false;
let medusaOrderId: string | undefined = undefined;
try {
const privateMessage = await getLatestPrivateMessageListItem({ excludedMessageIds });
if (!privateMessage) {
throw new Error(`No private message found`);
return {
messageId: null,
hasAnalysisResponse: false,
hasPartialAnalysisResponse: false,
hasFullAnalysisResponse: false,
medusaOrderId: undefined,
};
}
messageIdErrored = privateMessage.messageId;
if (!messageIdErrored) {
throw new Error(`No message id found`);
messageId = privateMessage.messageId;
if (!messageId) {
return {
messageId: null,
hasAnalysisResponse: false,
hasPartialAnalysisResponse: false,
hasFullAnalysisResponse: false,
medusaOrderId: undefined,
};
}
const privateMessageContent = await getPrivateMessage(
privateMessage.messageId,
);
const messageResponse = privateMessageContent?.Saadetis?.Vastus;
const medusaOrderId = privateMessageContent?.Saadetis?.Tellimus?.ValisTellimuseId || messageResponse?.ValisTellimuseId;
medusaOrderId = privateMessageContent?.Saadetis?.Tellimus?.ValisTellimuseId || messageResponse?.ValisTellimuseId;
if (!medusaOrderId || !medusaOrderId.toString().startsWith('order_')) {
return {
messageId,
hasAnalysisResponse: false,
hasPartialAnalysisResponse: false,
hasFullAnalysisResponse: false,
medusaOrderId: undefined,
};
}
if (!messageResponse) {
throw new Error(`Private message response has no results yet for order=${medusaOrderId}`);
return {
messageId,
hasAnalysisResponse: false,
hasPartialAnalysisResponse: false,
hasFullAnalysisResponse: false,
medusaOrderId,
};
}
let order: Tables<{ schema: 'medreport' }, 'analysis_orders'>;
@@ -238,17 +270,19 @@ export async function readPrivateMessageResponse({
if (status.isPartial) {
await updateOrderStatus({ medusaOrderId, orderStatus: 'PARTIAL_ANALYSIS_RESPONSE' });
messageIdProcessed = privateMessage.messageId;
hasAnalysisResponse = true;
hasPartialAnalysisResponse = true;
} else if (status.isCompleted) {
await updateOrderStatus({ medusaOrderId, orderStatus: 'FULL_ANALYSIS_RESPONSE' });
await deletePrivateMessage(privateMessage.messageId);
messageIdProcessed = privateMessage.messageId;
hasAnalysisResponse = true;
hasFullAnalysisResponse = true;
}
} catch (e) {
console.warn(`Failed to process private message id=${messageIdErrored}, message=${(e as Error).message}`);
console.warn(`Failed to process private message id=${messageId}, message=${(e as Error).message}`);
}
return { messageIdErrored, messageIdProcessed };
return { messageId, hasAnalysisResponse, hasPartialAnalysisResponse, hasFullAnalysisResponse, medusaOrderId };
}
async function saveAnalysisGroup(