Schéma de base de données
Aperçu de toutes les tables de base de données dans FeedbackPulse SaaS.
Référence des tables
Tables de la plateforme (non scoped par locataire)
| Table | Description | Colonnes clés |
|---|---|---|
platform_settings | Configuration globale clé-valeur (chiffrée pour les secrets) | key, value |
plans | Plans d'abonnement avec tarification et indicateurs de fonctionnalités | name, monthly_price, annual_price, max_*, feature_* |
landing_pages | Données du constructeur de page d'accueil avec HTML mis en cache | sections (JSON), cached_html, is_published |
payment_events | Journal des événements webhook Stripe/PayPal | gateway, event_id, event_type, payload (JSON) |
audit_logs | Journal d'audit des actions | user_id, action, description, old_values, new_values |
cron_logs | Journal d'exécution des tâches planifiées | job_name, status, output, duration_seconds |
Tables des locataires
| Table | Description | Colonnes clés |
|---|---|---|
tenants | Comptes multi-locataires | name, slug, subdomain, plan_id, status, settings (JSON) |
tenant_domains | Mappages de domaines personnalisés | tenant_id, domain, status, verified_at |
users | Tous les comptes utilisateurs (tous rôles) | name, email, role, tenant_id, two_factor_secret |
products | Produits de feedback | tenant_id, name, slug, type, category, is_active |
feedback_campaigns | Configurations de formulaires de feedback | tenant_id, product_id, name, slug, survey_schema (JSON), status |
feedback_submissions | Entrées de feedback individuelles | tenant_id, campaign_id, product_id, star_rating, nps_score, text_feedback, sentiment_*, status |
feedback_tags | Définitions des étiquettes | tenant_id, name |
feedback_submission_tag | Pivot plusieurs-à-plusieurs | submission_id, tag_id |
team_members | Enregistrements d'équipe des locataires | tenant_id, user_id, role |
team_invitations | Invitations en attente | tenant_id, email, role, token, expires_at |
api_keys | Clés API des locataires (hachées) | tenant_id, name, key, scopes, is_active |
roadmap_items | Éléments de la feuille de route publique | tenant_id, product_id, title, status, vote_count |
roadmap_votes | Votes anonymes sur les éléments | roadmap_item_id, email |
feature_requests | Suggestions de fonctionnalités communautaires | tenant_id, roadmap_item_id, email, description, status |
changelog_entries | Notes de version des produits | tenant_id, product_id, title, body, version, published_at |
notifications | Notifications dans l'application | tenant_id, user_id, type, title, message, data (JSON) |
webhook_logs | Journaux de livraison des webhooks sortants | tenant_id, url, event, payload (JSON), response_code |
data_deletion_requests | Suivi des suppressions RGPD | tenant_id, requester_email, status, completed_at |
referral_codes | Codes de parrainage | tenant_id, code, reward_type, uses, max_uses |
referral_conversions | Suivi des conversions | referral_code_id, converted_tenant_id, reward_amount |
scheduled_report_logs | Journal de livraison des rapports | tenant_id, report_type, status, sent_at |
Tables système Laravel
| Table | Description |
|---|---|
migrations | Suivi des migrations |
password_reset_tokens | Tokens de réinitialisation de mot de passe (conscients du locataire) |
sessions | Sessions utilisateur |
cache | Cache de l'application |
jobs | Tâches en file d'attente |
failed_jobs | Tâches échouées |
Relations clés
plans <---- tenants <---- users
|
|---- products <---- feedback_campaigns <---- feedback_submissions
| |
| +---- feedback_tags (M2M)
|
|---- roadmap_items <---- roadmap_votes
| <---- feature_requests
|
|---- changelog_entries
|---- team_members ---- users
|---- team_invitations
|---- api_keys
|---- notifications
+---- webhook_logs
Isolation des données
Chaque table scoped par locataire possède :
- Une clé étrangère
tenant_idavecON DELETE CASCADE - Un index composite sur
(tenant_id, created_at) - Un scope global
TenantScopepour le filtrage automatique
Lorsqu'un locataire est supprimé, toutes ses données sont supprimées en cascade automatiquement.