Unterschriftenservice: echte Fehlerursache durchreichen (Service nicht erreichbar vs. Marker/Service-Fehler) statt generischer Meldung
This commit is contained in:
@@ -217,16 +217,23 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
const { form, jobCount } = await signatureForm(schema, pdfId, sigList);
|
||||
if (!jobCount) return res.status(400).json({ error: 'Keine gültige Signatur (SVG-Datei fehlt).' });
|
||||
|
||||
const r = await fetch(`${SIGN_URL}${pfad}`, { method: 'POST', body: form });
|
||||
let r;
|
||||
try {
|
||||
r = await fetch(`${SIGN_URL}${pfad}`, { method: 'POST', body: form });
|
||||
} catch (e) {
|
||||
// Netzwerkfehler (Service down / Containername nicht auflösbar / falsche URL).
|
||||
logger.warn(`[skrift-orders] Signatur-Service nicht erreichbar (${SIGN_URL}): ${e.message}`);
|
||||
return res.status(502).json({ error: 'Signatur-Service nicht erreichbar.', detail: `${SIGN_URL} – ${e.message}. SKRIFT_SIGN_URL / Container prüfen.` });
|
||||
}
|
||||
if (!r.ok) {
|
||||
const t = await r.text();
|
||||
return res.status(502).json({ error: 'Signatur-Service-Fehler.', detail: `${r.status}: ${String(t).slice(0, 400)}` });
|
||||
return res.status(502).json({ error: 'Signatur-Service-Fehler (evtl. Marker nicht im PDF gefunden).', detail: `${r.status}: ${String(t).slice(0, 400)}` });
|
||||
}
|
||||
const buf = Buffer.from(await r.arrayBuffer());
|
||||
return res.json({ [key]: buf.toString('base64'), content_type: contentType, order_number: ord?.order_number || 'manuell' });
|
||||
} catch (err) {
|
||||
logger.error(`[skrift-orders] ${pfad}: ${err.stack || err.message}`);
|
||||
return res.status(500).json({ error: 'Signatur-Verarbeitung fehlgeschlagen.' });
|
||||
return res.status(500).json({ error: 'Signatur-Verarbeitung fehlgeschlagen.', detail: String(err.message || err).slice(0, 400) });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user