Vorbereitung für automatische Beweissicherung statt manuellem
Screenshot-Upload: ein Kunde kann künftig seinen eigenen Instagram-
oder TikTok-Account per Standard-OAuth-Consent verbinden. Bewusst nur
das Grundgerüst — Meta/TikTok verlangen vor öffentlicher Nutzung eine
einmalige Business-Verification/App-Review (Wochen Vorlauf, siehe
CLAUDE.md-Abschnitt "Plattform-Verbindung (OAuth)"), die separat von
dieser Codeänderung läuft.
- internal/socialconnect: Connector-Interface + InstagramConnector/
TikTokConnector (reiner Authorization-Code-Flow, kein DB-Zugriff).
Instagram tauscht den Code zweistufig (kurzlebiges → 60-Tage-Token),
TikTok liefert Access-/Refresh-Token direkt. Endpunkte/Scopes wurden
gegen aktuelle Entwicklerdokumentation gebaut, nie gegen die echte
API verifiziert (keine Zugangsdaten vorhanden) — Hinweis dazu im
Paket- und CLAUDE.md-Kommentar.
- Migration 0006: platform_connection (NICHT append-only, anders als
finding/extraction/asset — ein Token wird ersetzt, keine Korrektur-
Zeile), höchstens eine Verbindung pro Account+Plattform.
- internal/web: GET /verbindungen (Übersicht je Plattform: verbunden/
nicht verbunden/nicht konfiguriert), GET /oauth/{platform}/start
(State-Cookie gegen CSRF, Redirect zum Consent-Screen),
GET /oauth/{platform}/callback (State prüfen, Code tauschen,
Verbindung speichern), POST /verbindungen/{platform}/trennen.
- Ohne gesetzte Client-Credentials + PUBLIC_BASE_URL bleibt die
Funktion inaktiv (kein Connector konfiguriert, /verbindungen zeigt
"nicht konfiguriert", kein Absturz) — main.go loggt das beim Start.
Volle Testsuite inkl. echter Postgres-Tests grün; OAuth-Flow gegen
Fake-Connector/httptest-Server verifiziert (State-Mismatch, Ablehnung
durch Nutzer, Token-Speicherung, Mandantentrennung). Kein Live-Test
gegen echte Meta-/TikTok-Endpunkte möglich, da noch keine echten
Client-Credentials existieren.
22 lines
1.0 KiB
SQL
22 lines
1.0 KiB
SQL
-- Ein Kunde kann seinen eigenen Instagram- oder TikTok-Account per
|
|
-- OAuth verbinden (siehe internal/socialconnect), damit die
|
|
-- Beweissicherung einen veröffentlichten Beitrag künftig direkt
|
|
-- abrufen kann statt ihn manuell hochzuladen. Anders als
|
|
-- extraction/finding/asset ist das NICHT append-only: Tokens laufen ab
|
|
-- und werden erneuert, eine Verbindung kann getrennt und neu
|
|
-- hergestellt werden — das ist ein normaler Konfigurationszustand, kein
|
|
-- Beweis-Eintrag. Ein Account hat höchstens eine Verbindung pro
|
|
-- Plattform (erneutes Verbinden ersetzt die alte, siehe
|
|
-- ON CONFLICT in UpsertPlatformConnection).
|
|
CREATE TABLE platform_connection (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
account_id UUID NOT NULL REFERENCES account (id),
|
|
platform TEXT NOT NULL CHECK (platform IN ('instagram', 'tiktok')),
|
|
platform_user_id TEXT NOT NULL,
|
|
access_token TEXT NOT NULL,
|
|
refresh_token TEXT NOT NULL DEFAULT '',
|
|
expires_at TIMESTAMPTZ,
|
|
connected_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
UNIQUE (account_id, platform)
|
|
);
|