165 lines
6.7 KiB
MySQL
165 lines
6.7 KiB
MySQL
|
|
-- 162_seed_manual_articles.sql
|
||
|
|
-- Seed starter manuals for the Manual module (idempotent)
|
||
|
|
|
||
|
|
-- 1) Core manual articles
|
||
|
|
INSERT INTO manual_articles (title, slug, content, summary, module, tags, difficulty)
|
||
|
|
VALUES
|
||
|
|
(
|
||
|
|
'Hvordan opretter jeg en sag?',
|
||
|
|
'hvordan-opretter-jeg-en-sag',
|
||
|
|
'# Opret en ny sag\n\nDenne guide viser den hurtigste vej til at oprette en sag i BMC Hub.\n\n## Hurtig version\n1. Klik på plus-ikonet i topbaren.\n2. Vælg sag-oprettelse.\n3. Udfyld titel, kunde og beskrivelse.\n4. Sæt status og ansvarlig.\n5. Gem sagen.\n\n## Gode vaner\n- Brug en præcis titel, så sagen kan findes senere.\n- Tilføj tags med det samme for bedre filtrering.\n- Vælg korrekt prioritet fra start.',
|
||
|
|
'Trin-for-trin guide til at oprette en ny sag korrekt og hurtigt.',
|
||
|
|
'sag',
|
||
|
|
'["sag", "opgave", "ticket", "opret"]'::jsonb,
|
||
|
|
'beginner'
|
||
|
|
),
|
||
|
|
(
|
||
|
|
'Sådan finder og opdaterer du hardware',
|
||
|
|
'saadan-finder-og-opdaterer-du-hardware',
|
||
|
|
'# Find og opdater hardware\n\nGuiden hjælper dig med at finde et hardware-asset og opdatere nøglefelter uden fejl.\n\n## Hvad du bør opdatere\n- Serienummer\n- Ejer/kunde\n- Lokation\n- Status\n\n## Tip\nHvis du ikke finder enheden via navn, så prøv serienummer eller ESET UUID.',
|
||
|
|
'Find, verificer og opdatér hardwaredata i supportflowet.',
|
||
|
|
'hardware',
|
||
|
|
'["hardware", "asset", "enhed", "serial"]'::jsonb,
|
||
|
|
'beginner'
|
||
|
|
),
|
||
|
|
(
|
||
|
|
'Mail: sådan finder du en tråd og følger op',
|
||
|
|
'mail-saadan-finder-du-en-traad-og-foelger-op',
|
||
|
|
'# Mail workflow\n\nBrug denne guide når du skal finde en mailtråd, forstå historik og sende opfølgning.\n\n## Fokus\n- Find korrekt tråd\n- Tjek vedhæftninger\n- Link til sag\n- Send tydelig opfølgning\n\n## Tip\nBrug emnelinje + kunde som første filter ved søgning.',
|
||
|
|
'Praktisk flow for mailbehandling og opfølgning i Hubben.',
|
||
|
|
'mail',
|
||
|
|
'["mail", "email", "traad", "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 for "Hvordan opretter jeg en sag?"
|
||
|
|
WITH target AS (
|
||
|
|
SELECT id FROM manual_articles WHERE slug = 'hvordan-opretter-jeg-en-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, 'Klik på +', 'Brug plus-knappen i topbaren til at starte oprettelse af ny sag.', NULL, NULL),
|
||
|
|
(2, 'Vælg sag-oprettelse', 'Vælg oprettelsesflow for sag, ikke ordre eller anden type.', NULL, NULL),
|
||
|
|
(3, 'Udfyld kernefelter', 'Angiv titel, kunde, beskrivelse og ansvarlig bruger.', NULL, NULL),
|
||
|
|
(4, 'Sæt status og prioritet', 'Sæt status til fx "åben" og vælg en prioritet der passer.', NULL, NULL),
|
||
|
|
(5, 'Gem sagen', 'Klik gem og kontrollér at sagen vises i listen.', 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 for hardware manual
|
||
|
|
WITH target AS (
|
||
|
|
SELECT id FROM manual_articles WHERE slug = 'saadan-finder-og-opdaterer-du-hardware' 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 hardwaremodulet', 'Gå til Support -> Hardware for at se assets.', NULL, NULL),
|
||
|
|
(2, 'Søg enheden frem', 'Søg på serienummer, model eller kundenavn.', NULL, NULL),
|
||
|
|
(3, 'Åbn detaljesiden', 'Klik på enheden og kontroller stamdata.', NULL, NULL),
|
||
|
|
(4, 'Ret felter', 'Opdater fx lokation, ejer og status og gem ændringer.', 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 for mail manual
|
||
|
|
WITH target AS (
|
||
|
|
SELECT id FROM manual_articles WHERE slug = 'mail-saadan-finder-du-en-traad-og-foelger-op' 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 emailmodulet', 'Gå til Email i hovedmenuen.', NULL, NULL),
|
||
|
|
(2, 'Søg på tråd', 'Søg på emne, afsender eller kunde.', NULL, NULL),
|
||
|
|
(3, 'Kontrollér historik', 'Læs hele tråden og tjek vedhæftninger.', NULL, NULL),
|
||
|
|
(4, 'Link til sag', 'Link mailtråden til relevant sag hvis den findes.', NULL, NULL),
|
||
|
|
(5, 'Send opfølgning', 'Svar kort og tydeligt med næste handling og tidspunkt.', 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', 'sag', 'ticket', NULL
|
||
|
|
FROM manual_articles m
|
||
|
|
WHERE m.slug = 'hvordan-opretter-jeg-en-sag'
|
||
|
|
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, '') = 'sag'
|
||
|
|
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, 'hardware', 'hardware', NULL, NULL
|
||
|
|
FROM manual_articles m
|
||
|
|
WHERE m.slug = 'saadan-finder-og-opdaterer-du-hardware'
|
||
|
|
AND NOT EXISTS (
|
||
|
|
SELECT 1 FROM manual_relations r
|
||
|
|
WHERE r.manual_id = m.id
|
||
|
|
AND COALESCE(r.related_module, '') = 'hardware'
|
||
|
|
AND COALESCE(r.related_tag, '') = 'hardware'
|
||
|
|
);
|
||
|
|
|
||
|
|
INSERT INTO manual_relations (manual_id, related_module, related_tag, related_sag_type, related_manual_id)
|
||
|
|
SELECT m.id, 'mail', 'mail', NULL, NULL
|
||
|
|
FROM manual_articles m
|
||
|
|
WHERE m.slug = 'mail-saadan-finder-du-en-traad-og-foelger-op'
|
||
|
|
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, '') = 'mail'
|
||
|
|
);
|