fix(agrarmonitor): aufgerufene Seite bei HTTP-Fehlern mitloggen
Build and Push Multi-Platform Images / build-and-push (push) Successful in 43s
Build and Push Multi-Platform Images / build-and-push (push) Successful in 43s
Fehlermeldungen im Polling enthielten nur den Status (z. B. „Request failed with status code 404“), nicht aber die aufgerufene URL. Die neue Hilfsfunktion fehlerText() hängt bei Axios-Fehlern Methode und vollständige URL an, damit sich z. B. der Livesearch-404 einer konkreten Seite zuordnen lässt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a72e41611d
commit
d2236368be
1 file changed
+18
-9
@@ -1,4 +1,5 @@
|
|||||||
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
|
import { Injectable, Logger, OnModuleInit } from '@nestjs/common';
|
||||||
|
import axios from 'axios';
|
||||||
import { Cron } from '@nestjs/schedule';
|
import { Cron } from '@nestjs/schedule';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { IsNull, Not, Repository } from 'typeorm';
|
import { IsNull, Not, Repository } from 'typeorm';
|
||||||
@@ -14,6 +15,14 @@ const EXTERN_BELEGNUMMER_FIELD_ID = 3;
|
|||||||
const DOCS_PAGE_SIZE = 500;
|
const DOCS_PAGE_SIZE = 500;
|
||||||
const AGRARMONITOR_BASE_URL = 'https://admin7.agrarmonitor.de';
|
const AGRARMONITOR_BASE_URL = 'https://admin7.agrarmonitor.de';
|
||||||
|
|
||||||
|
/** Fehlermeldung inkl. aufgerufener Seite (Methode + URL), falls es ein HTTP-Fehler ist. */
|
||||||
|
function fehlerText(err: unknown): string {
|
||||||
|
const message = err instanceof Error ? err.message : String(err);
|
||||||
|
if (!axios.isAxiosError(err) || !err.config) return message;
|
||||||
|
const method = (err.config.method ?? 'get').toUpperCase();
|
||||||
|
return `${message} (${method} ${axios.getUri(err.config)})`;
|
||||||
|
}
|
||||||
|
|
||||||
export interface PollingResult {
|
export interface PollingResult {
|
||||||
processed: number;
|
processed: number;
|
||||||
updated: number;
|
updated: number;
|
||||||
@@ -234,7 +243,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
await this.getOrCreateCorrespondent(customer, Number(customer.id));
|
await this.getOrCreateCorrespondent(customer, Number(customer.id));
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
this.logger.warn(
|
this.logger.warn(
|
||||||
`Korrespondenten-Sync fehlgeschlagen: ${err instanceof Error ? err.message : err}`,
|
`Korrespondenten-Sync fehlgeschlagen: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -287,7 +296,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
}
|
}
|
||||||
const msg = `${interneBelegnummer}: Livesearch-Fehler`;
|
const msg = `${interneBelegnummer}: Livesearch-Fehler`;
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
`${msg}: ${err instanceof Error ? err.message : err}`,
|
`${msg}: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
result.errors.push(msg);
|
result.errors.push(msg);
|
||||||
await this.delay(500);
|
await this.delay(500);
|
||||||
@@ -321,7 +330,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
);
|
);
|
||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
this.logger.warn(
|
this.logger.warn(
|
||||||
`${interneBelegnummer}: Lieferscheinnummer setzen fehlgeschlagen: ${err instanceof Error ? err.message : err}`,
|
`${interneBelegnummer}: Lieferscheinnummer setzen fehlgeschlagen: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -384,7 +393,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
const msg = `${interneBelegnummer}: Update-Fehler`;
|
const msg = `${interneBelegnummer}: Update-Fehler`;
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
`${msg}: ${err instanceof Error ? err.message : err}`,
|
`${msg}: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
result.errors.push(msg);
|
result.errors.push(msg);
|
||||||
}
|
}
|
||||||
@@ -517,7 +526,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
}
|
}
|
||||||
const msg = `${interneBelegnummer}: Vorhanden-Check fehlgeschlagen`;
|
const msg = `${interneBelegnummer}: Vorhanden-Check fehlgeschlagen`;
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
`${msg}: ${err instanceof Error ? err.message : err}`,
|
`${msg}: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
result.errors.push(msg);
|
result.errors.push(msg);
|
||||||
await this.delay(500);
|
await this.delay(500);
|
||||||
@@ -544,7 +553,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
// Bei Fehler vorsichtig: nicht verschieben
|
// Bei Fehler vorsichtig: nicht verschieben
|
||||||
const msg = `${interneBelegnummer}: Dateieingang-Check fehlgeschlagen`;
|
const msg = `${interneBelegnummer}: Dateieingang-Check fehlgeschlagen`;
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
`${msg}: ${err instanceof Error ? err.message : err}`,
|
`${msg}: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
result.errors.push(msg);
|
result.errors.push(msg);
|
||||||
await this.delay(500);
|
await this.delay(500);
|
||||||
@@ -568,7 +577,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
// Vorsichtig: bei Notiz-Abruf-Fehler NICHT markieren, nächster Lauf prüft erneut
|
// Vorsichtig: bei Notiz-Abruf-Fehler NICHT markieren, nächster Lauf prüft erneut
|
||||||
this.logger.warn(
|
this.logger.warn(
|
||||||
`${interneBelegnummer}: Notiz-Abruf fehlgeschlagen — nicht markiert: ${err instanceof Error ? err.message : err}`,
|
`${interneBelegnummer}: Notiz-Abruf fehlgeschlagen — nicht markiert: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
result.skipped++;
|
result.skipped++;
|
||||||
await this.delay(500);
|
await this.delay(500);
|
||||||
@@ -637,7 +646,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
}
|
}
|
||||||
const msg = `${interneBelegnummer}: Livesearch-Fehler`;
|
const msg = `${interneBelegnummer}: Livesearch-Fehler`;
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
`${msg}: ${err instanceof Error ? err.message : err}`,
|
`${msg}: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
result.errors.push(msg);
|
result.errors.push(msg);
|
||||||
await this.delay(500);
|
await this.delay(500);
|
||||||
@@ -734,7 +743,7 @@ export class AgrarmonitorPollingService implements OnModuleInit {
|
|||||||
} catch (err: unknown) {
|
} catch (err: unknown) {
|
||||||
const msg = `${interneBelegnummer}: Update-Fehler`;
|
const msg = `${interneBelegnummer}: Update-Fehler`;
|
||||||
this.logger.error(
|
this.logger.error(
|
||||||
`${msg}: ${err instanceof Error ? err.message : err}`,
|
`${msg}: ${fehlerText(err)}`,
|
||||||
);
|
);
|
||||||
result.errors.push(msg);
|
result.errors.push(msg);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user