feat: implement backend label print agent system for remote label rendering and job management
Build and Push Multi-Platform Images / build-and-push (push) Successful in 33s

This commit is contained in:
2026-05-07 22:46:29 +02:00
parent 0c94e7b999
commit 80f862a0c0
15 changed files with 995 additions and 15 deletions
@@ -8,6 +8,17 @@ import {
export type BarcodeActionType = 'SEND_TO_PAPERLESS' | 'SEND_BY_EMAIL';
export interface LabelInputField {
name: string;
label: string;
type: 'text' | 'number' | 'date';
}
export type LabelElement =
| { type: 'text'; content: string; x: number; y: number; fontSize: number; bold?: boolean; align?: 'left' | 'center' | 'right'; maxWidth?: number }
| { type: 'qr'; content: string; x: number; y: number; sizeMm: number }
| { type: 'line'; x1: number; y1: number; x2: number; y2: number; lineWidth?: number };
@Entity('barcode_templates')
export class BarcodeTemplate {
@PrimaryGeneratedColumn()
@@ -28,6 +39,31 @@ export class BarcodeTemplate {
@Column({ type: 'json' })
Actions!: BarcodeActionType[];
// ── Label-Konfiguration ─────────────────────────────────────
@Column({ type: 'boolean', default: false })
LabelEnabled!: boolean;
@Column({ type: 'int', nullable: true })
LabelWidthMm!: number | null;
@Column({ type: 'int', nullable: true })
LabelHeightMm!: number | null;
@Column({ type: 'json', nullable: true })
LabelInputFields!: LabelInputField[] | null;
@Column({ type: 'varchar', length: 1000, nullable: true })
LabelGetUrl!: string | null;
@Column({ type: 'varchar', length: 1000, nullable: true })
LabelPrintedUrl!: string | null;
@Column({ type: 'varchar', length: 1000, nullable: true })
LabelReleaseUrl!: string | null;
@Column({ type: 'json', nullable: true })
LabelLayout!: LabelElement[] | null;
@CreateDateColumn()
CreatedAt!: Date;