From 898c37634b62bc48973bd2405a46655529dca939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asger=20Geel=20Weirs=C3=B8e?= Date: Fri, 12 Jun 2026 17:12:00 +0200 Subject: [PATCH] =?UTF-8?q?nemhandel:=20omd=C3=B8b=20CVR-opslag=20fra=20Pe?= =?UTF-8?q?ppol=20til=20NemHandel-opslag=20(ny=20rute=20/nemhandel=20+=20/?= =?UTF-8?q?api/nemhandel,=20redirect=20fra=20/peppol)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- src/pages/chat.astro | 9 +++- src/pages/index.astro | 2 +- src/pages/nemhandel.astro | 78 +++++++++++++++++++++++++++++ src/pages/peppol.astro | 90 ++++++---------------------------- src/pages/search-index.json.js | 2 +- 5 files changed, 102 insertions(+), 79 deletions(-) create mode 100644 src/pages/nemhandel.astro diff --git a/src/pages/chat.astro b/src/pages/chat.astro index e7c13df..1078216 100644 --- a/src/pages/chat.astro +++ b/src/pages/chat.astro @@ -36,6 +36,11 @@ import Base from '../layouts/Base.astro'; '$1'); return html; } + // Track spørgsmålet i Matomo FRA browseren, så det knyttes til den besøgendes + // egen visitor-profil (cookie/visitor-ID, IP, browser) i stedet for en server-IP. + function track(action, q) { + try { (window._paq = window._paq || []).push(['trackEvent', 'Chat', action, q]); } catch (_) {} + } function bubble(role, text) { var log = document.getElementById('chat-log'); var d = document.createElement('div'); @@ -61,11 +66,13 @@ import Base from '../layouts/Base.astro'; body: JSON.stringify({ messages: history.slice(-10) }), }); var data = await r.json(); - if (!r.ok) { wait.textContent = data.error || 'Chatten er offline lige nu — prøv senere.'; return; } + if (!r.ok) { wait.textContent = data.error || 'Chatten er offline lige nu — prøv senere.'; track('afvist', q); return; } wait.innerHTML = linkify(data.reply); history.push({ role: 'assistant', content: data.reply }); + track('besvaret', q); } catch (_) { wait.textContent = 'Kunne ikke nå chatten — prøv igen om lidt.'; + track('fejl', q); } finally { btn.disabled = false; input.focus(); } }); })(); diff --git a/src/pages/index.astro b/src/pages/index.astro index 16ef7c4..03ddf2d 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -80,7 +80,7 @@ const jsonLd = [profilePage, faqPage(faqs)];

Mere end et CV

{[ - { href: '/peppol', title: 'Peppol-opslag', desc: 'Slå et CVR op og se om virksomheden er registreret i NemHandel/Peppol — og hvilke profilpakker den understøtter.' }, + { href: '/nemhandel', title: 'NemHandel-opslag', desc: 'Slå et CVR-nummer op og se om virksomheden er registreret i NemHandelsregisteret — og hvilke profilpakker den understøtter.' }, { href: '/chat', title: 'Spørg mit CV', desc: 'En lille AI der har læst mit CV og svarer på spørgsmål om mig. Prøv den af.' }, { href: '/status', title: 'Homelab-status', desc: 'Live driftsstatus for de offentlige dele af mit homelab. Self-hosted, selvfølgelig.' }, { href: '/now', title: 'Now', desc: 'Hvad jeg roder med lige nu — plus et aktivitets-heatmap fra min egen Gitea.' }, diff --git a/src/pages/nemhandel.astro b/src/pages/nemhandel.astro new file mode 100644 index 0000000..c3044a9 --- /dev/null +++ b/src/pages/nemhandel.astro @@ -0,0 +1,78 @@ +--- +import Base from '../layouts/Base.astro'; +--- + +

NemHandel-opslag

+

+ Tast et CVR-nummer og se om virksomheden er registreret i NemHandelsregisteret, og hvilke + profilpakker den understøtter. Det er et øjebliksbillede, + ikke en autoritativ kilde. +

+ +
+ + +
+ + + + + + +

+ Til nørderne: API’et er frit tilgængeligt — curl https://asger.weirsøe.dk/api/nemhandel/<cvr> (rate-limited). +

+ diff --git a/src/pages/peppol.astro b/src/pages/peppol.astro index c096965..2f3c82b 100644 --- a/src/pages/peppol.astro +++ b/src/pages/peppol.astro @@ -1,78 +1,16 @@ --- -import Base from '../layouts/Base.astro'; +// Gammel rute — omdøbt til /nemhandel. Redirect så eksisterende links ikke 404'er. --- - -

Peppol-opslag

-

- Tast et CVR-nummer og se om virksomheden er registreret i NemHandel/Peppol, og hvilke - profilpakker den understøtter. Data kommer fra mit eget - crawl af de offentlige registre.. så regn med et øjebliksbillede, ikke en autoritativ kilde. -

- -
- - -
- - - - - - -

- Til nørderne: API’et er frit tilgængeligt — curl https://asger.weirsøe.dk/api/peppol/<cvr> (rate-limited). -

- + + + + + + + NemHandel-opslag + + +

Siden er flyttet til /nemhandel…

+ + + diff --git a/src/pages/search-index.json.js b/src/pages/search-index.json.js index fc73e90..1a87f65 100644 --- a/src/pages/search-index.json.js +++ b/src/pages/search-index.json.js @@ -9,7 +9,7 @@ export async function GET() { { type: 'page', title: 'Projekter', url: '/projekter' }, { type: 'page', title: 'Blog', url: '/blog' }, { type: 'page', title: 'Tags', url: '/tags' }, - { type: 'page', title: 'Peppol-opslag', url: '/peppol' }, + { type: 'page', title: 'NemHandel-opslag', url: '/nemhandel' }, { type: 'page', title: 'Spørg mit CV (AI-chat)', url: '/chat' }, { type: 'page', title: 'Status (homelab)', url: '/status' }, { type: 'page', title: 'Now', url: '/now' },