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
44 lines
1.6 KiB
TypeScript
44 lines
1.6 KiB
TypeScript
import { test } from 'node:test';
|
||
import assert from 'node:assert/strict';
|
||
import { kurzfassung } from '../src/lib/printruns.ts';
|
||
|
||
/**
|
||
* Die Kurzfassung steht in der Verlaufsliste. Sie kommt zellenweise herein —
|
||
* zwei Zellen mit demselben Maß dürfen dort nicht zweimal auftauchen.
|
||
*/
|
||
|
||
test('Einzelnes Maß bleibt, wie es ist', () => {
|
||
assert.equal(kurzfassung(['13 × 18 cm']), '13 × 18 cm');
|
||
});
|
||
|
||
test('Gleiche Maße werden zusammengezogen', () => {
|
||
assert.equal(kurzfassung(['10 × 15 cm', '10 × 15 cm']), '10 × 15 cm ×2');
|
||
});
|
||
|
||
test('Vorhandene Stückzahlen werden addiert, nicht angehängt', () => {
|
||
assert.equal(kurzfassung(['35 × 45 mm ×8', '35 × 45 mm ×4']), '35 × 45 mm ×12');
|
||
assert.equal(kurzfassung(['10 × 15 cm ×3', '10 × 15 cm']), '10 × 15 cm ×4');
|
||
});
|
||
|
||
test('Verschiedene Maße bleiben nebeneinander, in ihrer Reihenfolge', () => {
|
||
assert.equal(kurzfassung(['13 × 18 cm', '35 × 45 mm ×8']), '13 × 18 cm, 35 × 45 mm ×8');
|
||
});
|
||
|
||
test('Zusätze wie (Poster) trennen die Gruppen', () => {
|
||
assert.equal(kurzfassung(['30 × 40 cm ×2 (Poster)', '30 × 40 cm ×1 (Poster)']),
|
||
'30 × 40 cm ×3 (Poster)');
|
||
assert.equal(kurzfassung(['30 × 40 cm (Poster)', '30 × 40 cm (überstehend)']),
|
||
'30 × 40 cm (Poster), 30 × 40 cm (überstehend)');
|
||
});
|
||
|
||
test('Leere Liste ergibt etwas Lesbares', () => {
|
||
assert.equal(kurzfassung([]), 'Druckbogen');
|
||
});
|
||
|
||
test('Sehr lange Aufzählungen werden gekürzt', () => {
|
||
const viele = Array.from({ length: 40 }, (_, i) => `${i + 10} × ${i + 15} cm`);
|
||
const s = kurzfassung(viele);
|
||
assert.ok(s.length <= 118, `zu lang: ${s.length}`);
|
||
assert.ok(s.endsWith('…'));
|
||
});
|