Formate zentral aus Directus + Kuvert-/Agent-/Login-Fixes
Formate zentralisiert (Phase 1)
- Neue Collection render_formats (Seitengröße, Ränder, Zeilenhöhe/-limit +
Plotter-Template) als einzige Quelle. Backend liest sie gecacht (Start +
stündlich, synchroner Zugriff → keine Latenz) mit eingebauten Defaults als
Fallback; manueller Trigger via POST /api/formats/refresh.
- Ermöglicht frei definierbare Formate ohne Codeänderung.
Kuvert-Templates
- Werte 1:1 aus dem alten Job-Manager übernommen (falsche/vertauschte Maße
korrigiert, per Upsert) und je Format die zweite Variante ergänzt
(individuelle Beschriftung). Druck-Popup schlägt bei freiem Text Variante 2 vor.
Produktions-Agent
- Datei-Endpunkt liefert {files} ohne data-Hülle → eigener get_raw statt des
data-auspackenden get; Dokumentauswahl positionsbasiert (robust gegen 0-/1-
basierte Dateinamen).
Bootstrap
- Ungültiger DIRECTUS_TOKEN wird erkannt und fällt auf ADMIN_EMAIL/PASSWORD
zurück, statt mit einem 401 abzubrechen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -630,7 +630,7 @@ const handler = (router, { services, getSchema, logger }) => {
|
||||
// ── Druckauftrag einreihen (manueller Trigger aus dem Admin) ───────────────
|
||||
// Legt pro Typ (Schriftstück / Umschlag) einen Job mit aufgelöstem Template
|
||||
// für die gewählte Maschine an. Kein Statuswechsel am Auftrag (bewusst).
|
||||
const LETTER_TPL = { a4: 'a4_single', a6_hoch: 'a6_v1', a6_quer: 'a6_v2' };
|
||||
const LETTER_TPL = { a4: 'a4_single', a6_hoch: 'a6_v1', a6_quer: 'a6l_v1' };
|
||||
const ENVELOPE_TPL = { dinlang: 'kuvert_a_v1', c6: 'kuvert_b_v1' };
|
||||
|
||||
router.post('/enqueue', async (req, res) => {
|
||||
|
||||
@@ -23,7 +23,9 @@ import { defineComponent, ref, reactive, computed, onMounted, h, Teleport, resol
|
||||
import { useApi } from '@directus/extensions-sdk';
|
||||
|
||||
// Auftragsformat → Standard-Template-Schlüssel (wie im Backend /enqueue).
|
||||
const LETTER_TPL = { a4: 'a4_single', a6_hoch: 'a6_v1', a6_quer: 'a6_v2' };
|
||||
const LETTER_TPL = { a4: 'a4_single', a6_hoch: 'a6_v1', a6_quer: 'a6l_v1' };
|
||||
// v1 = Empfängeradresse (Standardvorschlag). Für individuelle Beschriftung
|
||||
// wählt der Operator im Popup die Variante 2 (kuvert_a_v2 / kuvert_b_v2).
|
||||
const ENVELOPE_TPL = { dinlang: 'kuvert_a_v1', c6: 'kuvert_b_v1' };
|
||||
const INLAND = /^(de|deutschland|germany)$/i;
|
||||
|
||||
@@ -256,7 +258,10 @@ const Board = defineComponent({
|
||||
function openDruck(order) {
|
||||
const bt = tplByKey(LETTER_TPL[order.format?.key] || 'a4_single', 'brief');
|
||||
const wantsEnv = order.needs_envelope && order.envelope_labeling && order.envelope_labeling !== 'keine';
|
||||
const et = wantsEnv ? tplByKey(ENVELOPE_TPL[order.envelope_format] || 'kuvert_a_v1', 'umschlag') : null;
|
||||
// Bei individuellem Text die Variante 2 des Kuverts vorschlagen (v1 = Empfängeradresse).
|
||||
let envKey = ENVELOPE_TPL[order.envelope_format] || 'kuvert_a_v1';
|
||||
if (wantsEnv && order.envelope_labeling === 'freitext') envKey = envKey.replace('_v1', '_v2');
|
||||
const et = wantsEnv ? (tplByKey(envKey, 'umschlag') || tplByKey(ENVELOPE_TPL[order.envelope_format], 'umschlag')) : null;
|
||||
const n = Math.max(1, order.entries_count || 1);
|
||||
druck.order = order;
|
||||
druck.machine = aktiveMaschinen.value[0]?.id ?? null;
|
||||
|
||||
Reference in New Issue
Block a user