Batch-Uebermittlung (Phase 3): Board-Reiter + Buendeln-Knopf + Schreibvorlage
Produktions-Board: neuer Reiter "Uebermittlungen" (getrennt vom Auftragsboard). Offene batch_submissions je Zugang gruppiert; Knopf "Jetzt buendeln & hochladen" pro Zugang loest die Backend-Buendelung (xlsx + Sammel-PDF + FTP) sofort aus. Text-Uebermittlungen bekommen einen "Schreibvorlage"-Knopf, der Text + 5-Zeilen-Adressblock (Firma / Vorname Nachname / Zeile1-3 / PLZ Stadt / Land, max 5) in den manuellen Druck uebernimmt. skrift-orders: Proxy-Route /batch-build -> Backend. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1367,6 +1367,27 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
}
|
||||
});
|
||||
|
||||
// ── Batch-Bündelung sofort auslösen (Board-Knopf → Backend) ────────────────
|
||||
// Proxyt an das Backend, das die offenen batch_submissions dieses Zugangs zu
|
||||
// xlsx + Sammel-PDF bündelt und per FTP hochlädt. client_id = api_clients-ID.
|
||||
router.post('/batch-build', async (req, res) => {
|
||||
const acc = req.accountability;
|
||||
if (!acc || !acc.user || !(acc.admin || acc.app)) return res.status(403).json({ error: 'Kein Zugriff.' });
|
||||
try {
|
||||
const r = await fetch(`${BACKEND_URL}/api/batch/build`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json', 'X-API-Token': BACKEND_TOKEN },
|
||||
body: JSON.stringify({ client_id: req.body?.client_id ?? null }),
|
||||
});
|
||||
const txt = await r.text();
|
||||
let data = null; try { data = txt ? JSON.parse(txt) : null; } catch { /* egal */ }
|
||||
if (!r.ok) return res.status(502).json({ error: 'Bündelung fehlgeschlagen.', detail: (data && data.message) || String(txt).slice(0, 300) });
|
||||
return res.json(data || { ok: true });
|
||||
} catch (e) {
|
||||
return res.status(500).json({ error: 'Backend nicht erreichbar.', detail: String(e.message || e).slice(0, 300) });
|
||||
}
|
||||
});
|
||||
|
||||
// ── Testdruck: beliebiges Template + Text generieren und einreihen ─────────
|
||||
const TEST_FORMAT = { a4: 'a4', a6_hoch: 'a6p', a6_quer: 'a6l' };
|
||||
router.post('/test-print', async (req, res) => {
|
||||
|
||||
Reference in New Issue
Block a user