Umami-Webanalyse eingebaut, bis zum Go-Live deaktiviert
Selbst gehostetes Umami (sys.adametz.media) je Brand: Website-IDs aus dev/release/umami.md in config/domains.php, Snippet via x-web.umami im web-master-Layout auf allen oeffentlichen Seiten der drei Domains. UMAMI_ENABLED=false haelt es aus, bis die Webseiten live gehen (User-Vorgabe 06.07.; Go-Live-Checkliste WS-7 ergaenzt). Damit stimmt Datenschutz Abschnitt 5 mit dem Code ueberein. User bestaetigt ausserdem: Log-/Backup-Fristen und Stripe-Entitaet passen wie eingetragen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
43397adb6a
commit
3940d462d9
9 changed files with 72 additions and 1 deletions
|
|
@ -188,6 +188,11 @@ CONTACT_EMAIL_PRESSEKONTO=
|
|||
CONTACT_EMAIL_PRESSEECHO=
|
||||
CONTACT_EMAIL_BUSINESSPORTAL=
|
||||
|
||||
# Selbst gehostete Umami-Webanalyse (sys.adametz.media; IDs je Brand in
|
||||
# config/domains.php). Erst beim Go-Live der Webseiten auf true setzen —
|
||||
# die Datenschutzerklärung (Abschnitt 5) beschreibt den Einsatz bereits.
|
||||
UMAMI_ENABLED=false
|
||||
|
||||
# Haupt-E-Mail für alle rechtlichen Anliegen (Impressum, Datenschutz, AGB,
|
||||
# Meldeverfahren, Richtlinien) — auf allen drei Domains identisch.
|
||||
# Ohne Wert gilt der Default info@pressekonto.com (config/legal.php).
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ return [
|
|||
'accent' => 'konto',
|
||||
'contact_email' => env('CONTACT_EMAIL_PRESSEKONTO'),
|
||||
'report_email' => env('REPORT_EMAIL_PRESSEKONTO'),
|
||||
'umami_website_id' => 'ca440b65-a5bd-42c1-8cdb-96f34734003c',
|
||||
'tagline_short' => 'Publisher · Hub',
|
||||
'tagline_long' => 'Der gemeinsame Publisher-Bereich für presseecho und businessportal24 – Pressemitteilungen schreiben, redaktionell prüfen lassen, auf beiden Reichweiten veröffentlichen.',
|
||||
'footer_legal' => '© :year pressekonto · Alle Rechte vorbehalten',
|
||||
|
|
@ -82,6 +83,7 @@ return [
|
|||
'accent' => 'echo',
|
||||
'contact_email' => env('CONTACT_EMAIL_PRESSEECHO'),
|
||||
'report_email' => env('REPORT_EMAIL_PRESSEECHO'),
|
||||
'umami_website_id' => '3ea8a7b0-105d-4519-b200-138cadc0fbdc',
|
||||
'tagline_short' => 'Pressemitteilungen · DACH',
|
||||
'tagline_long' => 'Fachmeldungen aus Wirtschaft und Industrie. Redaktionell geprüft. Strukturiert distribuiert.',
|
||||
'footer_legal' => '© :year presseecho · Alle Rechte vorbehalten',
|
||||
|
|
@ -115,6 +117,7 @@ return [
|
|||
'accent' => '24',
|
||||
'contact_email' => env('CONTACT_EMAIL_BUSINESSPORTAL'),
|
||||
'report_email' => env('REPORT_EMAIL_BUSINESSPORTAL'),
|
||||
'umami_website_id' => 'f03a5fc3-ac44-488f-9118-84004861099f',
|
||||
'tagline_short' => 'Pressemitteilungen · DACH',
|
||||
'tagline_long' => 'Veröffentlichungs-Portal für redaktionell geprüfte Pressemitteilungen aus Deutschland, Österreich und der Schweiz.',
|
||||
'footer_legal' => '© :year businessportal24 · Alle Rechte vorbehalten',
|
||||
|
|
|
|||
|
|
@ -46,4 +46,16 @@ return [
|
|||
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
|
||||
'redirect' => env('GOOGLE_REDIRECT_URI'),
|
||||
],
|
||||
|
||||
/*
|
||||
| Selbst gehostete Webanalyse (Umami auf sys.adametz.media) — cookielos,
|
||||
| IP-anonymisiert, beschrieben in der Datenschutzerklärung Abschnitt 5.
|
||||
| Bleibt bis zum Go-Live der Webseiten deaktiviert (UMAMI_ENABLED=true
|
||||
| erst mit dem Live-Schalten setzen); Website-IDs je Brand stehen in
|
||||
| config/domains.php (brand.umami_website_id).
|
||||
*/
|
||||
'umami' => [
|
||||
'enabled' => env('UMAMI_ENABLED', false),
|
||||
'script_url' => env('UMAMI_SCRIPT_URL', 'https://sys.adametz.media/config.js'),
|
||||
],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -17,8 +17,9 @@ R2.2+R2.3 erledigt: Hub-Landing komplett ueberarbeitet (datengetriebenes Tarif-G
|
|||
**03.07. abends — Hub-Inhalts-Audit + Rechtstexte (Entscheidung E2: B2B-only!):** Alle Hub-/Web-Inhalte gegen den echten Funktionsstand geprueft und korrigiert (Startseiten-Claims, FAQ, Hilfe, Veroeffentlichen, API-Doku inkl. OpenAPI); kontakt/ueber-uns zurueckgebaut; Rechtstexte aus docs/legal eingebaut (Impressum echt, AGB v0.6, /richtlinien, /melden); Widerrufs-UI raus (E2), Submit-Modal auf Archiv-Hinweis (T2neu); Preise nach Leistungsbeschreibung v0.2. Details in R3.0–R3.2.
|
||||
**03.07. spaet — Rechtstexte komplett + T1neu + Mail-CI (TAGESABSCHLUSS, Suite: 935 gruen):** Datenschutzerklaerung v0.3 host-aware eingebaut (Hub-/Spoke-Bausteine, Magic-Link 15 Min., Stripe Payments Europe); Cookie-Seite zurueckgebaut (301 -> /datenschutz, Cookies stehen in Abschnitt 4, kein Banner). T1neu umgesetzt: Unternehmer-Pflicht-Checkbox im Buchungs-Modal, protokolliert in `booking_confirmations` (Timestamp/IP/AGB-Version aus `config/legal.php`), CheckoutController erzwingt zeitnahe Bestaetigung serverseitig. System-Mails auf zentrales pressekonto-CI-Layout umgestellt (components/emails/layout, inkl. Framework-Auth-Mails via toMailUsing, EmailBrandingTest).
|
||||
**06.07. — Zentrale Rechts-E-Mail (User-Entscheidung):** `info@pressekonto.com` ist die Haupt-E-Mail fuer alle rechtlichen Anliegen; zentral in `config/legal.php` (`LEGAL_CONTACT_EMAIL`), alle fuenf Rechtsseiten (Impressum, AGB, Datenschutz, /melden, /richtlinien) nutzen sie domainuebergreifend. Support-/Redaktionskontakt bleibt je Brand (CONTACT_EMAIL_*), REPORT_EMAIL_* ist nur noch optionales separates DSA-Postfach. Live-Domain bestaetigt .com (Deployment-Checkliste), nicht .de.
|
||||
**06.07. — Umami eingebaut + Klaerungsliste teilweise beantwortet:** Umami-Snippets (dev/release/umami.md, sys.adametz.media) je Brand in `config/domains.php` (`brand.umami_website_id`), gerendert via `x-web.umami` im web-master-Layout — per `UMAMI_ENABLED=false` deaktiviert bis zum Go-Live (User-Vorgabe; Checklisten-Punkt in WS-7 ergaenzt). User bestaetigt: Server-Fristen (Logs 14 Tage, Backups 4 Wochen) stimmen, Stripe-Entitaet (Stripe Payments Europe, Dublin) passt.
|
||||
**Wiedereinstieg / naechste Schritte:**
|
||||
1. **Klaerungsliste Rechtstexte abarbeiten** (User-Antworten offen, siehe Chat 03.07.): Umami installieren oder Datenschutz-Abschnitt 5 vorerst raus · Log-Frist 14 Tage + Backups 4 Wochen mit Server-Konfig abgleichen · Stripe-Entitaet im Dashboard verifizieren · Medienprivileg-Zitierung praezisieren, falls anwaltlich bestaetigt · AGB par. 1 (3): eigene /portale-Seite oder Link auf Hub-#familie ok? · O-B Depublikations-Preisdarstellung bestaetigen.
|
||||
1. **Klaerungsliste Rechtstexte — Rest** (Umami/Fristen/Stripe am 06.07. geklaert, siehe oben): Medienprivileg-Zitierung praezisieren, falls anwaltlich bestaetigt · AGB par. 1 (3): eigene /portale-Seite oder Link auf Hub-#familie ok? · AGB par. 11 (3) Kuendigungsseiten-Ergaenzung absegnen · O-B Depublikations-Preisdarstellung bestaetigen · /melden-Aenderungsweg (Magic-Links statt Pfade C/D) fuer Launch ok?
|
||||
2. **[EXTERN]:** Postfach `info@pressekonto.com` anlegen (Haupt-Rechts-Mail, 06.07.); CONTACT_EMAIL_*-Support-Postfaecher je Brand; REPORT_EMAIL_* optional · R1.2 Stripe-Live · R1.4 Preisfreigabe · R5.4 Favicons · anwaltliche Freigabe AGB v0.6/Datenschutz v0.3.
|
||||
3. **Backlog Rechtstexte-System (R3.1-Rest):** legal_documents-Versionierung + agb_version_id an Buchungen (E3; config/legal.php ist die Uebergangsloesung) · rejection_categories-DB fuer /richtlinien · T10 eigenstaendige DSA-Meldeformulare mit URL-Feld + Vorgangsnummer · T12 Depublikations-Checkout · T13 Melde-Button prominenter an der PM.
|
||||
4. **Dann:** R6.1 manuelle QA-Checkliste, R6.3 Staging-Rehearsal, R6.4 Go-Live-Kette, R6.5 Git-Hygiene (Branch fix/zeitzone-europe-berlin liegt ~125 Commits vor main — mergen, sobald freigegeben). Offen bleibt ausserdem die User-Entscheidung zu den Legacy-SQL-Dumps in `dev/migration 2026/sql/` (enttracken vor Repo-Sharing).
|
||||
|
|
|
|||
8
dev/release/umami.md
Normal file
8
dev/release/umami.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
presseecho
|
||||
<script defer src="https://sys.adametz.media/config.js" data-website-id="3ea8a7b0-105d-4519-b200-138cadc0fbdc"></script>
|
||||
|
||||
businessportal24
|
||||
<script defer src="https://sys.adametz.media/config.js" data-website-id="f03a5fc3-ac44-488f-9118-84004861099f"></script>
|
||||
|
||||
pressekonto
|
||||
<script defer src="https://sys.adametz.media/config.js" data-website-id="ca440b65-a5bd-42c1-8cdb-96f34734003c"></script>
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
- [ ] **OpenAI**: `OPENAI_API_KEY` für KI-Klassifikation/Content-Score.
|
||||
- [ ] **Mail-Provider** (echter Versand statt `log`): Zugangsdaten/Domain (SPF/DKIM gesetzt).
|
||||
- [ ] **DNS/SSL**: alle Domains zeigen auf den Host, gültige Zertifikate (Portal + presseecho + businessportal24).
|
||||
- [ ] **Umami-Webanalyse einschalten**: `UMAMI_ENABLED=true` (Snippet je Brand, sys.adametz.media; bis dahin bewusst aus — die Datenschutzerklärung Abschnitt 5 beschreibt den Einsatz bereits).
|
||||
- [ ] **Domain final bestätigen:** Standing-Wert ist `pressekonto.com` (so in `.env.example`). ⚠️ `CLAUDE.md` nennt `pressekonto.de` – vor Go-Live verbindlich klären und überall konsistent setzen.
|
||||
|
||||
---
|
||||
|
|
|
|||
13
resources/views/components/web/umami.blade.php
Normal file
13
resources/views/components/web/umami.blade.php
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
@php
|
||||
// Selbst gehostete, cookielose Webanalyse (Datenschutz Abschnitt 5).
|
||||
// Deaktiviert bis zum Go-Live (UMAMI_ENABLED, config/services.php);
|
||||
// die Website-ID kommt je Brand aus config/domains.php.
|
||||
$umamiHost = request()->getHost();
|
||||
$umamiBrandKey = str_contains($umamiHost, 'pressekonto')
|
||||
? 'pressekonto'
|
||||
: (str_contains($umamiHost, 'presseecho') ? 'presseecho' : 'businessportal24');
|
||||
$umamiWebsiteId = config('domains.domains.'.$umamiBrandKey.'.brand.umami_website_id');
|
||||
@endphp
|
||||
@if (config('services.umami.enabled') && $umamiWebsiteId)
|
||||
<script defer src="{{ config('services.umami.script_url') }}" data-website-id="{{ $umamiWebsiteId }}"></script>
|
||||
@endif
|
||||
|
|
@ -100,6 +100,8 @@
|
|||
<!-- Additional Styles -->
|
||||
@stack('styles')
|
||||
|
||||
<x-web.umami />
|
||||
|
||||
</head>
|
||||
|
||||
<body class="antialiased" style="background-color: hsl(var(--background)); color: hsl(var(--foreground));">
|
||||
|
|
|
|||
26
tests/Feature/Web/UmamiSnippetTest.php
Normal file
26
tests/Feature/Web/UmamiSnippetTest.php
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
use Tests\TestCase;
|
||||
|
||||
test('the umami snippet stays off until the go-live switch is set', function () {
|
||||
/** @var TestCase $this */
|
||||
// Default (UMAMI_ENABLED=false): kein Analytics-Script vor dem Go-Live.
|
||||
$this->get('https://presseecho.test/de')
|
||||
->assertSuccessful()
|
||||
->assertDontSee('sys.adametz.media', false);
|
||||
});
|
||||
|
||||
test('the umami snippet renders the website id of the requested brand', function (string $host, string $websiteId) {
|
||||
/** @var TestCase $this */
|
||||
config()->set('services.umami.enabled', true);
|
||||
|
||||
// /de/faq existiert auf allen drei Hosts (die Hub-Startseite liegt auf /).
|
||||
$this->get("https://{$host}/de/faq")
|
||||
->assertSuccessful()
|
||||
->assertSee('https://sys.adametz.media/config.js', false)
|
||||
->assertSee('data-website-id="'.$websiteId.'"', false);
|
||||
})->with([
|
||||
'presseecho' => ['presseecho.test', '3ea8a7b0-105d-4519-b200-138cadc0fbdc'],
|
||||
'businessportal24' => ['businessportal24.test', 'f03a5fc3-ac44-488f-9118-84004861099f'],
|
||||
'pressekonto hub' => ['pressekonto.test', 'ca440b65-a5bd-42c1-8cdb-96f34734003c'],
|
||||
]);
|
||||
Loading…
Add table
Add a link
Reference in a new issue