-- 164_seed_manual_articles_more.sql -- Seed additional manuals for sag/mail/workflow usage (idempotent) -- 1) Additional manual articles INSERT INTO manual_articles (title, slug, content, summary, module, tags, difficulty) VALUES ( 'Sådan bruger du tags i sager', 'saadan-bruger-du-tags-i-sager', '# Brug tags aktivt i sager\n\nTags gør det nemmere at filtrere, finde og automatisere sager.\n\n## Når du opretter en sag\n- Tilføj mindst ét type-tag\n- Tilføj evt. brand-tag\n- Undgå dubletter og næsten-identiske tags\n\n## Efterfølgende\n- Brug tag-filter i lister\n- Hold tags opdateret når sagen ændrer retning', 'Guide til bedre struktur og hurtigere søgning med tags i sag-modulet.', 'sag', '["sag", "tags", "filtrering", "workflow"]'::jsonb, 'beginner' ), ( 'Sådan linker du mail til sag', 'saadan-linker-du-mail-til-sag', '# Link mailtråde til sager\n\nNår mail og sag er koblet, får du bedre historik og hurtigere opfølgning.\n\n## Hvornår skal du linke\n- Når mailen handler om en eksisterende sag\n- Når der opstår ny opgave i tråden\n\n## Fordel\nHele teamet kan se samme kontekst uden at lede i flere moduler.', 'Praktisk flow for at koble email-tråde korrekt til sager.', 'mail', '["mail", "sag", "link", "email", "ticket"]'::jsonb, 'beginner' ), ( 'Reminders og deferred status i sag-modulet', 'reminders-og-deferred-status-i-sag-modulet', '# Brug reminders og deferred korrekt\n\nReminders og deferred hjælper med at holde fokus på det rigtige tidspunkt.\n\n## Reminder bruges til\n- Næste handling på bestemt dato\n- Husk-opgaver uden statusskifte\n\n## Deferred bruges til\n- Vent på ekstern part\n- Genåbn eller aktiver ved bestemt status-trigger\n\n## Best practice\nSkriv altid kort hvorfor sagen er deferred, så næste kollega kan tage over.', 'Guide til at styre ventende sager med reminders og deferred triggers.', 'sag', '["sag", "reminder", "deferred", "status", "opfoelgning"]'::jsonb, 'advanced' ) ON CONFLICT (slug) DO UPDATE SET title = EXCLUDED.title, content = EXCLUDED.content, summary = EXCLUDED.summary, module = EXCLUDED.module, tags = EXCLUDED.tags, difficulty = EXCLUDED.difficulty, updated_at = CURRENT_TIMESTAMP, deleted_at = NULL; -- 2) Steps: tags i sager WITH target AS ( SELECT id FROM manual_articles WHERE slug = 'saadan-bruger-du-tags-i-sager' LIMIT 1 ) INSERT INTO manual_steps (manual_id, step_number, title, content, image_url, video_url) SELECT target.id, s.step_number, s.title, s.content, s.image_url, s.video_url FROM target CROSS JOIN ( VALUES (1, 'Åbn en sag', 'Gå til sagens detaljeside hvor tags kan redigeres.', NULL, NULL), (2, 'Tilføj relevante tags', 'Tilføj type-tag og evt. brand-tag der matcher problemstillingen.', NULL, NULL), (3, 'Undgå støj', 'Fjern overflødige tags så filtrering forbliver præcis.', NULL, NULL), (4, 'Gem og verificér', 'Gem sagen og test filtrering i sag-listen med de nye tags.', NULL, NULL) ) AS s(step_number, title, content, image_url, video_url) ON CONFLICT (manual_id, step_number) DO UPDATE SET title = EXCLUDED.title, content = EXCLUDED.content, image_url = EXCLUDED.image_url, video_url = EXCLUDED.video_url, updated_at = CURRENT_TIMESTAMP; -- 3) Steps: link mail til sag WITH target AS ( SELECT id FROM manual_articles WHERE slug = 'saadan-linker-du-mail-til-sag' LIMIT 1 ) INSERT INTO manual_steps (manual_id, step_number, title, content, image_url, video_url) SELECT target.id, s.step_number, s.title, s.content, s.image_url, s.video_url FROM target CROSS JOIN ( VALUES (1, 'Find mailtråden', 'Åbn emailmodulet og søg den relevante tråd frem.', NULL, NULL), (2, 'Vælg korrekt sag', 'Match tråden med den sag, der allerede indeholder konteksten.', NULL, NULL), (3, 'Opret link', 'Link mailen til sagen via den relevante handling i UI.', NULL, NULL), (4, 'Bekræft historik', 'Kontrollér at mailaktivitet nu kan ses fra sagen.', NULL, NULL) ) AS s(step_number, title, content, image_url, video_url) ON CONFLICT (manual_id, step_number) DO UPDATE SET title = EXCLUDED.title, content = EXCLUDED.content, image_url = EXCLUDED.image_url, video_url = EXCLUDED.video_url, updated_at = CURRENT_TIMESTAMP; -- 4) Steps: reminders/deferred WITH target AS ( SELECT id FROM manual_articles WHERE slug = 'reminders-og-deferred-status-i-sag-modulet' LIMIT 1 ) INSERT INTO manual_steps (manual_id, step_number, title, content, image_url, video_url) SELECT target.id, s.step_number, s.title, s.content, s.image_url, s.video_url FROM target CROSS JOIN ( VALUES (1, 'Vurder om sagen skal vente', 'Afgør om sagen reelt er blokeret af ekstern handling.', NULL, NULL), (2, 'Sæt deferred/reminder', 'Vælg deferred trigger eller reminder-dato afhængigt af behov.', NULL, NULL), (3, 'Skriv kort begrundelse', 'Notér hvad der ventes på, og hvem der ejer næste skridt.', NULL, NULL), (4, 'Følg op ved trigger', 'Når trigger rammer, genaktiver sagen og fortsæt workflowet.', NULL, NULL) ) AS s(step_number, title, content, image_url, video_url) ON CONFLICT (manual_id, step_number) DO UPDATE SET title = EXCLUDED.title, content = EXCLUDED.content, image_url = EXCLUDED.image_url, video_url = EXCLUDED.video_url, updated_at = CURRENT_TIMESTAMP; -- 5) Context relations INSERT INTO manual_relations (manual_id, related_module, related_tag, related_sag_type, related_manual_id) SELECT m.id, 'sag', 'tags', 'ticket', NULL FROM manual_articles m WHERE m.slug = 'saadan-bruger-du-tags-i-sager' AND NOT EXISTS ( SELECT 1 FROM manual_relations r WHERE r.manual_id = m.id AND COALESCE(r.related_module, '') = 'sag' AND COALESCE(r.related_tag, '') = 'tags' AND COALESCE(r.related_sag_type, '') = 'ticket' ); INSERT INTO manual_relations (manual_id, related_module, related_tag, related_sag_type, related_manual_id) SELECT m.id, 'mail', 'email', NULL, NULL FROM manual_articles m WHERE m.slug = 'saadan-linker-du-mail-til-sag' AND NOT EXISTS ( SELECT 1 FROM manual_relations r WHERE r.manual_id = m.id AND COALESCE(r.related_module, '') = 'mail' AND COALESCE(r.related_tag, '') = 'email' ); INSERT INTO manual_relations (manual_id, related_module, related_tag, related_sag_type, related_manual_id) SELECT m.id, 'sag', 'deferred', 'ticket', NULL FROM manual_articles m WHERE m.slug = 'reminders-og-deferred-status-i-sag-modulet' AND NOT EXISTS ( SELECT 1 FROM manual_relations r WHERE r.manual_id = m.id AND COALESCE(r.related_module, '') = 'sag' AND COALESCE(r.related_tag, '') = 'deferred' AND COALESCE(r.related_sag_type, '') = 'ticket' );