Схема базы данных
Обзор всех таблиц базы данных в FeedbackPulse SaaS.
Справочник таблиц
Таблицы платформы (не привязаны к арендатору)
| Таблица | Описание | Ключевые столбцы |
|---|---|---|
platform_settings | Глобальная конфигурация ключ-значение (зашифрована для секретов) | key, value |
plans | Тарифные планы с ценами и флагами возможностей | name, monthly_price, annual_price, max_*, feature_* |
landing_pages | Данные конструктора лендинга с кэшированным HTML | sections (JSON), cached_html, is_published |
payment_events | Журнал webhook-событий Stripe/PayPal | gateway, event_id, event_type, payload (JSON) |
audit_logs | Журнал аудита действий | user_id, action, description, old_values, new_values |
cron_logs | Журнал выполнения запланированных задач | job_name, status, output, duration_seconds |
Таблицы арендаторов
| Таблица | Описание | Ключевые столбцы |
|---|---|---|
tenants | Мультитенантные аккаунты | name, slug, subdomain, plan_id, status, settings (JSON) |
tenant_domains | Маппинги кастомных доменов | tenant_id, domain, status, verified_at |
users | Все аккаунты пользователей (все роли) | name, email, role, tenant_id, two_factor_secret |
products | Продукты обратной связи | tenant_id, name, slug, type, category, is_active |
feedback_campaigns | Конфигурации форм обратной свя зи | tenant_id, product_id, name, slug, survey_schema (JSON), status |
feedback_submissions | Отдельные записи обратной связи | tenant_id, campaign_id, product_id, star_rating, nps_score, text_feedback, sentiment_*, status |
feedback_tags | Определения тегов | tenant_id, name |
feedback_submission_tag | Сводная таблица многие-ко-многим | submission_id, tag_id |
team_members | Записи команды арендатора | tenant_id, user_id, role |
team_invitations | Ожидающие приглашения | tenant_id, email, role, token, expires_at |
api_keys | API-ключи арендатора (хэшированные) | tenant_id, name, key, scopes, is_active |
roadmap_items | Публичные элементы дорожной карты | tenant_id, product_id, title, status, vote_count |
roadmap_votes | Анонимные голоса по элементам | roadmap_item_id, email |
feature_requests | Предложения функций от сообщества | tenant_id, roadmap_item_id, email, description, status |
changelog_entries | Заметки к релизу продукта | tenant_id, product_id, title, body, version, published_at |
notifications | Внутриприложенческие уведомления | tenant_id, user_id, type, title, message, data (JSON) |
webhook_logs | Логи доставки исходящих вебхуков | tenant_id, url, event, payload (JSON), response_code |
data_deletion_requests | Отслеживание удалений GDPR | tenant_id, requester_email, status, completed_at |
referral_codes | Реферальные коды | tenant_id, code, reward_type, uses, max_uses |
referral_conversions | Отслеживание конверсий | referral_code_id, converted_tenant_id, reward_amount |
scheduled_report_logs | Журнал доставки отчётов | tenant_id, report_type, status, sent_at |
Системные таблицы Laravel
| Таблица | Описание |
|---|---|
migrations | Отслеживание миграций |
password_reset_tokens | Токены сброса пароля (с учётом арендатора) |
sessions | Пользовательские сессии |
cache | Кэш приложения |
jobs | Задачи очереди |
failed_jobs | Неудачные задачи очереди |
Ключевые связи
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
Изоляция данных
Каждая таблица, привязанная к арендатору, имеет:
- Внешний ключ
tenant_idсON DELETE CASCADE - Составной индекс по
(tenant_id, created_at) - Глобальный scope
TenantScopeдля ав томатической фильтрации
При удалении арендатора все их данные каскадно удаляются автоматически.