Drucken: Bibliothek als Quelle, Verlauf der Drucke, Mailzugang aus der Umgebung
Drei Dinge, die im Alltag gefehlt haben. **Bilder aus der Bibliothek in den Druckbereich.** Bisher musste man eine Datei hochladen, auch wenn Klarbild sie längst hatte. Jetzt gibt es einen Wähler mit Suche, Ordnerfilter und Mehrfachauswahl — erreichbar aus der leeren Ablage, aus der Kopfzeile der ersten Karte und an jeder Zellengruppe. **Verlauf der Drucke.** Gespeichert wird bewusst nur die Anleitung, nicht das Ergebnis: ein A3-Bogen ist schnell 20 bis 80 MB, ein Verlaufseintrag rund ein bis drei Kilobyte. Weil das Druckmodul ohne KI rechnet, ergibt derselbe Auftrag wieder exakt dasselbe Blatt — nur die Zeitstempel im PDF unterscheiden sich, der Bildinhalt ist Byte für Byte gleich. „Nochmal drucken" gibt es deshalb nur, wenn alle Zellen aus der Bibliothek kamen und alle Bilder noch da sind; sonst steht am Eintrag, woran es liegt. Je Konto bleiben die letzten 100 Drucke, ältere räumt der Eintrag selbst weg. Sichtbar sind nur die eigenen Läufe, Admins sehen alle. **Mailzugang aus der Umgebung.** Der Versand nimmt jetzt die Server- Einstellung, solange unter Admin → E-Mail nichts eingetragen ist. Die Zugangsdaten liegen als Umgebungsvariablen in Coolify, nicht im Repo. Der Admin zeigt an, welche Quelle gerade wirklich greift. Unterwegs mitgenommen: - Auf schmalen Geräten stand die rechte Spalte oben (order:-1, damit die Vorschau gleich sichtbar ist). Mit der Verlaufskarte hätte man an einem ganzen Block vorbeigescrollt, ehe man ein Bild hinzufügen kann — die Karten laufen jetzt in ihrer eigenen Nummerierung. - Die Kurzfassung listete jede Zelle einzeln: „10 × 15 cm, 10 × 15 cm". Gleiche Maße werden zusammengezogen, vorhandene Stückzahlen addiert. Der erste Ansatz machte dabei aus „13 × 18 cm" prompt „13 cm ×18" — das × im Maß sah aus wie eine Stückzahl. Sieben Tests halten das jetzt fest. - „das PDF war 0.0 MB groß" für einen 20-KB-Bogen: unter einem Megabyte wird in KB gerechnet. - Fehlt eine Datei auf der Platte, zeigte der Browser ein kaputtes Bildsymbol. Jetzt bleibt die Fläche ruhig. 111 Tests grün. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BNhLunz586g6DeYMa7Qsd1
This commit is contained in:
11 files changed
+842
-35
No files matched your search
@@ -0,0 +1,40 @@
|
||||
-- Druck-Historie: was zuletzt gedruckt wurde ------------------------------
|
||||
--
|
||||
-- Gespeichert wird **nur die Anleitung**, nicht das Ergebnis: die
|
||||
-- Bogen-Einstellung, die Verweise auf die Quellbilder und ein paar Eckdaten.
|
||||
-- Ein A3-Druckbogen als PDF ist schnell 20–80 MB; bei ein paar Dutzend
|
||||
-- Drucken wäre die Platte voll, und zwar mit Dateien, die sich in Sekunden
|
||||
-- neu erzeugen lassen. Der Bogen wird beim erneuten Drucken einfach neu
|
||||
-- gerechnet — deterministisch, aus denselben Quellen.
|
||||
--
|
||||
-- Zeilengröße: rund 1–3 KB je Eintrag. Tausend Drucke sind damit ein paar
|
||||
-- Megabyte statt vieler Gigabyte.
|
||||
CREATE TABLE IF NOT EXISTS print_runs (
|
||||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
created_by uuid REFERENCES users(id) ON DELETE SET NULL,
|
||||
-- Woher der Druck kam: 'web' | 'telegram' | 'mcp' | 'api'
|
||||
origin text NOT NULL DEFAULT 'web',
|
||||
-- Sprechende Kurzfassung für die Liste („13 × 18 cm ×1, 35 × 45 mm ×8").
|
||||
summary text,
|
||||
paper text, -- „DIN A4 · 210 × 297 mm"
|
||||
pages integer NOT NULL DEFAULT 1,
|
||||
pieces integer NOT NULL DEFAULT 1,
|
||||
bytes integer, -- Größe des erzeugten PDFs, nur zur Information
|
||||
-- Die vollständige Anfrage, aus der sich der Bogen neu erzeugen lässt.
|
||||
-- Bewusst der Anfragekörper und nicht ein eigenes Format: Was hier steht,
|
||||
-- lässt sich unverändert wieder an /api/print/sheet schicken.
|
||||
config jsonb NOT NULL,
|
||||
created_at timestamptz NOT NULL DEFAULT now()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS print_runs_user_idx ON print_runs(created_by, created_at DESC);
|
||||
CREATE INDEX IF NOT EXISTS print_runs_created_idx ON print_runs(created_at DESC);
|
||||
|
||||
-- Welche Bibliotheksbilder in einem Druck steckten. Nur für Bilder aus der
|
||||
-- Bibliothek — hochgeladene Einzeldateien haben keine dauerhafte Kennung und
|
||||
-- sind nach dem Aufräumen der Quellen ohnehin weg.
|
||||
CREATE TABLE IF NOT EXISTS print_run_items (
|
||||
run_id uuid NOT NULL REFERENCES print_runs(id) ON DELETE CASCADE,
|
||||
item_id uuid NOT NULL REFERENCES items(id) ON DELETE CASCADE,
|
||||
PRIMARY KEY (run_id, item_id)
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS print_run_items_item_idx ON print_run_items(item_id);
|
||||
Reference in new issue
Block a user