Move medipostPrivateMessage.service to separate classes, improve logging

This commit is contained in:
2025-11-12 08:51:48 +02:00
parent 0878b5d1bd
commit 8f32fdf08d
12 changed files with 670 additions and 390 deletions

View File

@@ -1,7 +1,4 @@
import { createUserAnalysesApi } from '@/packages/features/user-analyses/src/server/api';
import { getSupabaseServerAdminClient } from '@/packages/supabase/src/clients/server-admin-client';
import { readPrivateMessageResponse } from '~/lib/services/medipost/medipostPrivateMessage.service';
import MedipostPrivateMessageSync from '~/lib/services/medipost/medipostPrivateMessageSync.service';
type ProcessedMessage = {
messageId: string;
@@ -19,30 +16,22 @@ type GroupedResults = {
export default async function syncAnalysisResults() {
console.info('Syncing analysis results');
const supabase = getSupabaseServerAdminClient();
const api = createUserAnalysesApi(supabase);
const sync = new MedipostPrivateMessageSync();
const processedMessages: ProcessedMessage[] = [];
const excludedMessageIds: string[] = [];
while (true) {
const result = await readPrivateMessageResponse({ excludedMessageIds });
if (result.messageId) {
processedMessages.push(result as ProcessedMessage);
}
const result = await sync.handleNextPrivateMessage({ excludedMessageIds });
await api.sendAnalysisResultsNotification({
hasFullAnalysisResponse: result.hasFullAnalysisResponse,
hasPartialAnalysisResponse: result.hasAnalysisResponse,
analysisOrderId: result.analysisOrderId,
});
if (!result.messageId) {
const { messageId } = result;
if (!messageId) {
console.info('No more messages to process');
break;
}
if (!excludedMessageIds.includes(result.messageId)) {
excludedMessageIds.push(result.messageId);
processedMessages.push(result as ProcessedMessage);
if (!excludedMessageIds.includes(messageId)) {
excludedMessageIds.push(messageId);
} else {
break;
}

View File

@@ -54,6 +54,7 @@ export async function POST(request: Request) {
action: 'send_fake_analysis_results_to_medipost',
xml: messageXml,
medusaOrderId,
medipostPrivateMessageId: `fake-response-${Date.now()}`,
});
await sendPrivateMessageTestResponse({ messageXml });
} catch (error) {