Deklarix itself no longer depends on the Anthropic API — that was a separate API key/billing relationship from Claude Code (used to develop Deklarix), which the user did not intend to take on for the product itself. Consideration (Gegenleistung) is no longer guessed from text — it's a required form field now, since only the submitter actually knows whether a business relationship existed. A keyword-only system can't tell a covertly-paid post from a genuinely organic one; they read identically. What internal/extract *can* still determine reliably and deterministically from the caption: whether a disclosure keyword is present (werbung, anzeige, bezahlte partnerschaft, paid partnership, #ad, #werbung, #anzeige, #sponsored, #sponsoredby, #sponsoredpost — case-insensitive), its exact original-case wording, and whether it sits before the platform's "mehr anzeigen" truncation point (~125 chars Instagram, ~150 TikTok — rough estimates, platforms change these without notice, verify before real customer use). internal/extract's Anthropic HTTP client and tool-use schema are gone (client.go/api.go deleted), replaced by engine.go — a stateless Engine with no network calls. extract.Result/ParsePayload keep the exact same JSON shape as before (gegenleistung/kennzeichnung_vorhanden/ kennzeichnung_wortlaut/kennzeichnung_vor_kuerzung), so internal/store and internal/dossier needed no changes at all — only extract itself, the web form/handler (new consideration field), and main.go (no more ANTHROPIC_API_KEY requirement) changed. Trade-off the user was told and accepted: without an LLM, the system can no longer independently catch undisclosed paid content that carries no recognizable keyword at all — that now rests on the submitter's honesty. Creative or implicit disclosure phrasing outside the keyword list also won't be recognized. Verified against a real running instance with zero API keys configured: register -> check (real rule engine, correctly triggered WK-004 for a disclosure placed 130 characters in, past the Instagram threshold) -> archive -> PDF dossier download, all against real Postgres. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
47 lines
1.5 KiB
HTML
47 lines
1.5 KiB
HTML
{{define "index"}}<!doctype html>
|
|
<html lang="de">
|
|
<head>{{template "head" .}}</head>
|
|
<body>
|
|
{{template "nav" .}}
|
|
<h1>Pre-Publish-Prüfung</h1>
|
|
<p>Caption und Plattform eingeben, um auf Kennzeichnungsrisiken zu prüfen.</p>
|
|
|
|
<form hx-post="/pruefen" hx-target="#ergebnis" hx-swap="innerHTML">
|
|
<label for="platform">Plattform</label>
|
|
<select id="platform" name="platform" required>
|
|
<option value="instagram">Instagram</option>
|
|
<option value="tiktok">TikTok</option>
|
|
</select>
|
|
|
|
<label for="post_type">Beitragstyp</label>
|
|
<select id="post_type" name="post_type" required>
|
|
<option value="feed">Feed</option>
|
|
<option value="reel">Reel</option>
|
|
<option value="story">Story</option>
|
|
<option value="video">Video</option>
|
|
</select>
|
|
|
|
<label for="consideration">Gegenleistung</label>
|
|
<select id="consideration" name="consideration" required>
|
|
<option value="">— bitte wählen —</option>
|
|
<option value="bezahlt">Bezahlt</option>
|
|
<option value="sachbezug">Sachbezug (Produkt, Einladung, ...)</option>
|
|
<option value="keine">Keine</option>
|
|
<option value="unklar">Unklar</option>
|
|
</select>
|
|
<p class="hinweis">
|
|
Das kann die Prüfung nicht aus der Caption erraten — nur wer
|
|
einreicht, weiß, ob eine Gegenleistung vorlag.
|
|
</p>
|
|
|
|
<label for="caption">Caption</label>
|
|
<textarea id="caption" name="caption" rows="6" required></textarea>
|
|
|
|
<button type="submit">Prüfen</button>
|
|
</form>
|
|
|
|
<div id="ergebnis"></div>
|
|
</body>
|
|
</html>
|
|
{{end}}
|