Zum Hauptinhalt springen

Watcher Models

Watchers sind benutzerdefinierte Sammlungen beobachteter Social-Media-Profile. Ein Workspace enthält mehrere Watchers, jeder Watcher verknüpft über WatcherSource mit einem oder mehreren SocialProfile-Einträgen. Der Import-Prozess wird über WatcherImportRun, WatcherImportItem und WatcherImportFailure protokolliert.

Watcher

Benannte Sammlung von beobachteten Profilen innerhalb eines Workspace.

Tabelle: watchers

FeldTypNullableBeschreibung
idbigintPKPrimary Key
workspace_idbigint (FK)neinZugehöriger Workspace
created_bybigint (FK)neinErstellender User
namestringneinAnzeigename
is_name_custombooleanneinVom User manuell vergeben (vs. auto-generiert)
created_atdatetimeneinErstellt am
updated_atdatetimeneinAktualisiert am

Relations:

MethodeTypRelated ModelFKBeschreibung
workspace()belongsToWorkspaceworkspace_idÜbergeordneter Workspace
creator()belongsToUsercreated_byErstellender User
sources()hasManyWatcherSourcewatcher_idAlle verknüpften Profile
primarySource()hasOneWatcherSourcewatcher_idErste Quelle (oldestOfMany)

Casts: is_name_custom → boolean

Location: app/Models/Watcher.php


WatcherSource

Polymorphe Verknüpfung zwischen Watcher und SocialProfile. Speichert die Original-URL des Imports und die Plattform als Enum.

Tabelle: watcher_sources

FeldTypNullableBeschreibung
idbigintPKPrimary Key
watcher_idbigint (FK)neinZugehöriger Watcher
social_profile_idbigint (FK)neinVerknüpftes Profil
platformstring (Enum)neinPlattform (youtube, instagram)
input_urlstringjaUrsprünglich eingegebene URL
created_atdatetimeneinErstellt am
updated_atdatetimeneinAktualisiert am

Relations:

MethodeTypRelated ModelFKBeschreibung
watcher()belongsToWatcherwatcher_idÜbergeordneter Watcher
profile()belongsToSocialProfilesocial_profile_idVerknüpftes Profil

Casts: platform → SocialPlatform (Enum)

Unique-Constraints:

-- Ein Profil kann pro Watcher nur einmal verknüpft sein
UNIQUE (watcher_id, social_profile_id)

Location: app/Models/WatcherSource.php


WatcherImportRun

Protokolliert einen Bulk-Import-Durchlauf. Enthält Zähler für den Fortschritt und Status-Tracking für die UI-Anzeige via WebSocket.

Tabelle: watcher_import_runs

FeldTypNullableBeschreibung
idbigintPKPrimary Key
workspace_idbigint (FK)neinZugehöriger Workspace
created_bybigint (FK)neinAuslösender User
platformstringneinZielplattform
statusstringneinpending, processing, paused, completed, failed
total_countintegerneinGesamtanzahl URLs
processed_countintegerneinBisher verarbeitete
added_countintegerneinNeu hinzugefügte Profile
duplicates_in_input_countintegerneinDuplikate im Input
already_in_workspace_countintegerneinBereits im Workspace vorhanden
global_reused_countintegerneinGlobal vorhandene Profile wiederverwendet
failed_countintegerneinFehlgeschlagene Imports
finished_atdatetimejaAbschluss-Zeitpunkt
paused_untildatetimejaPausiert bis (Rate-Limiting)
pause_reasonstringjaGrund der Pausierung
created_atdatetimeneinErstellt am
updated_atdatetimeneinAktualisiert am

Relations:

MethodeTypRelated ModelFKBeschreibung
failures()hasManyWatcherImportFailurewatcher_import_run_idFehlgeschlagene URLs
items()hasManyWatcherImportItemwatcher_import_run_idAlle Import-URLs

Casts: finished_at → datetime, paused_until → datetime

Status-Lifecycle:

pending → processing → completed
→ failed
→ paused → processing → ...

Der Fortschritt wird via WatcherImportProgress-Event per WebSocket an den Client gebroadcastet (workspace.{id} Channel).

Location: app/Models/WatcherImportRun.php


WatcherImportItem

Einzelne URL innerhalb eines Import-Durchlaufs. Enthält einen dedupe_key zur Erkennung von Duplikaten innerhalb desselben Imports.

Tabelle: watcher_import_items

FeldTypNullableBeschreibung
idbigintPKPrimary Key
watcher_import_run_idbigint (FK)neinZugehöriger Import-Run
urlstringneinZu importierende URL
dedupe_keystringjaNormalisierter Key für Duplikat-Erkennung
created_atdatetimeneinErstellt am
updated_atdatetimeneinAktualisiert am

Relations:

MethodeTypRelated ModelFKBeschreibung
run()belongsToWatcherImportRunwatcher_import_run_idZugehöriger Import-Run

Location: app/Models/WatcherImportItem.php


WatcherImportFailure

Dokumentiert fehlgeschlagene Import-URLs mit Error-Code und Begründung.

Tabelle: watcher_import_failures

FeldTypNullableBeschreibung
idbigintPKPrimary Key
watcher_import_run_idbigint (FK)neinZugehöriger Import-Run
urlstringneinFehlgeschlagene URL
error_codestringjaFehlercode (z.B. not_found, rate_limited)
reasontextjaDetaillierte Fehlerbeschreibung
created_atdatetimeneinErstellt am
updated_atdatetimeneinAktualisiert am

Relations:

MethodeTypRelated ModelFKBeschreibung
run()belongsToWatcherImportRunwatcher_import_run_idZugehöriger Import-Run

Location: app/Models/WatcherImportFailure.php