7d42782c41
Print now offers every format the AI pipeline knows (9x13 to 60x90, DIN A6-A2, squares, poster/frame sizes to 70x100, and the screen ratios as physical sizes). When a picture does not match the target ratio the user picks per image between cropping to fill and keeping the whole picture on a border colour - never a stretch. The module is called Passbilder now; /druck redirects. Fixes two real defects: sharp runs extend after resize, so padded cells came out oversized (a 35x45 mm cell became 35x171 mm with a border), and the grid packer rotated a single portrait photo just because more would fit sideways. Mobile: cards become rows, touch targets ~40px, crop editor as a bottom sheet. Verified at 390/820/1440px - all three produce the same PDF.
15 lines
782 B
SQL
15 lines
782 B
SQL
-- Vorlagen für Passbilder/Druckbogen („Kita-Satz", „8× Passbild") ----------
|
||
CREATE TABLE IF NOT EXISTS print_presets (
|
||
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
name text NOT NULL,
|
||
created_by uuid REFERENCES users(id) ON DELETE SET NULL,
|
||
config jsonb NOT NULL,
|
||
created_at timestamptz NOT NULL DEFAULT now()
|
||
);
|
||
CREATE INDEX IF NOT EXISTS print_presets_name_idx ON print_presets(name);
|
||
|
||
-- Telegram: Zustand „wartet auf Druck-Auswahl" -----------------------------
|
||
ALTER TABLE telegram_drafts DROP CONSTRAINT IF EXISTS telegram_drafts_status_check;
|
||
ALTER TABLE telegram_drafts ADD CONSTRAINT telegram_drafts_status_check
|
||
CHECK (status IN ('collecting','awaiting_recipe','awaiting_compose_text','awaiting_print','dispatched','discarded'));
|