Shop Projekt - Dokumentation
Shop LDM
Teil 08: Wunschlisten & Suchabfragen
Dieses Modul kümmert sich um Suchabfragen, Beobachtungslisten und Benachrichtigungen.
Es ist die aktive Überwachungsschicht des Shops: User können Suchen oder Produkte speichern, und das System prüft regelmäßig, ob neue Treffer vorliegen und Benachrichtigungen verschickt werden sollen.
- Saved_search: Gespeicherte Suchanfragen eines Users.
- Cs_content: Verknüpfung einer gespeicherten Suche mit Kategorien.
- Wantlist: Persönliche Wunsch- oder Beobachtungslisten.
- Pw_content: Inhalte der Wantlist (beobachtete Produkte).
- Index_want_search: Zentrale Indexierung aller Suchen & Beobachtungen.
- Trigger_queue: Warteschlange von zu prüfenden Aktionen.
- Trigger_log: Protokoll der Trigger-Ausführung.
- Alarm: Konkrete Benachrichtigungen an User.
Dieses Modul macht den Shop proaktiv: User müssen nicht ständig selbst nachschauen, sondern bekommen gezielte Alarme zu neuen Artikeln oder Angeboten. Damit unterstützt es Käuferbindung und steigert die Aktivität im Marktplatz erheblich.
Saved_search (Gespeicherte Suchen)
Zweck: Gespeicherte Suchanfragen eines Users (als JSON oder Suchparameter).
Felder:
- sas_ID (PK)
- u_ID INT -- FK → tb_user
- sas_name VARCHAR(100) -- Name der Suche
- sas_value TEXT -- JSON oder Suchparameter
Hinweis: Man kann einer Suche auch Attribute aus Teil 3 (tb_user_attribut) anheften.Cs_content (Verknüpfung)
Zweck: Verknüpfung einer gespeicherten Suche mit Kategorien, inkl. optionalem Preisschwellenwert.
Felder:
- sas_ID (PK → saved_search)
- cat_ID (PK → category)
- cs_threshold DECIMAL(12,2) -- PreisschwellenwertWantlist (Wunschliste)
Zweck: Persönliche Wunsch- oder Beobachtungslisten der User (mit Name und optionalem Bild).
Felder:
- wtl_ID (PK)
- u_ID (FK → user)
- ast_ID (FK → art_storage) -- optional
- wtl_name VARCHAR(100) -- Listenname
- wtl_image VARCHAR(255) -- BildPw_content (Wunschlisten-Inhalte)
Zweck: Inhalte der Wantlist – also beobachtete Produkte mit optionalem Preislimit.
Felder:
- wtl_ID (PK → wantlist)
- pro_ID (PK → product)
- var_ID (FK → product_variant)
- lan_ID (FK → language)
- pw_threshold DECIMAL(12,2) -- Preislimit
Hinweis: Man kann einer Wantlist auch Attribute aus Teil 3 anheften.Index_want_search (Indexierung)
Zweck: Zentrale Indexierung aller Suchen & Beobachtungen - inkl. Frequenz und Verarbeitungsstatus.
Felder:
- iws_ID (PK)
- wtl_ID (FK → wantlist)
- sas_ID (FK → saved_search)
- u_ID (FK → user)
- cat_ID (FK → category)
- cat_top_ID (FK → category) -- Oberkategorie für breitere Suche
- u_trigger_freq INT -- Häufigkeit (z.B. in Stunden/Tagen)
- iws_work_flag CHAR(1) -- Y/N, ob aktuell verarbeitet wird
- iws_timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
Hinweis: Die Check-Constraint für entweder wtl_ID oder sas_ID ist im SQL vorbereitet, aber aktuell wegen MariaDB-Kompatibilität auskommentiert.Trigger_queue (Warteschlange)
Zweck: Warteschlange von zu prüfenden Such- oder Beobachtungsaktionen (mit Status & Zeitplan).
Felder:
- trq_ID (PK)
- iws_ID (FK → index_want_search)
- trq_status CHAR(1) -- P=Pending, R=Running, C=Completed, F=Failed
- trq_scheduled_at DATETIME -- Geplanter AusführungszeitpunktTrigger_log (Auslöserprotokoll)
Zweck: Protokoll der Trigger-Ausführung - ob erfolgreich, fehlerhaft oder mit Warnung.
Felder:
- trl_ID (PK)
- trq_ID (FK → trigger_queue)
- iws_ID (FK → index_want_search)
- trl_status CHAR(1) -- S=Success, E=Error, W=Warning
- trl_timestamp DATETIME DEFAULT CURRENT_TIMESTAMPAlarm (Benachrichtigungen)
Zweck: Konkrete Benachrichtigungen an User, wenn neue Artikel den Kriterien entsprechen.
Felder:
- ala_ID (PK)
- trl_ID (FK → trigger_log)
- u_ID (FK → user)
- art_ID (FK → article)
- ala_status CHAR(1) -- O=Open, S=Sent, A=Acknowledged, C=Closed
- ala_timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
- ala_send_time DATETIME -- Zeitpunkt des Versands
Hinweis: Status ermöglicht Nachverfolgung der Benachrichtigungszustände.