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.

🗺️ Stufe 3 | 📚 Aktuell | 📟 2026 06 15 | 📍 Datenbank - Wunschlisten & Suchabfragen

  • 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)            -- Preisschwellenwert

Wantlist (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)            -- Bild

Pw_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ührungszeitpunkt

Trigger_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_TIMESTAMP

Alarm (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.