Esquema de Base de Datos
Descripción general de todas las tablas de la base de datos en FeedbackPulse SaaS.
Referencia de Tablas
Tablas de la Plataforma (Sin Ámbito de Inquilino)
| Tabla | Descripción | Columnas Clave |
|---|---|---|
platform_settings | Configuración global clave-valor (cifrada para secretos) | key, value |
plans | Planes de suscripción con precios e indicadores de funciones | name, monthly_price, annual_price, max_*, feature_* |
landing_pages | Datos del constructor de página de inicio con HTML en caché | sections (JSON), cached_html, is_published |
payment_events | Registro de eventos webhook de Stripe/PayPal | gateway, event_id, event_type, payload (JSON) |
audit_logs | Historial de auditoría de acciones | user_id, action, description, old_values, new_values |
cron_logs | Registro de ejecución de tareas programadas | job_name, status, output, duration_seconds |
Tablas de Inquilinos
| Tabla | Descripción | Columnas Clave |
|---|---|---|
tenants | Cuentas multi-inquilino | name, slug, subdomain, plan_id, status, settings (JSON) |
tenant_domains | Mapeos de dominios personalizados | tenant_id, domain, status, verified_at |
users | Todas las cuentas de usuario (todos los roles) | name, email, role, tenant_id, two_factor_secret |
products | Productos de feedback | tenant_id, name, slug, type, category, is_active |
feedback_campaigns | Configuraciones de formularios de feedback | tenant_id, product_id, name, slug, survey_schema (JSON), status |
feedback_submissions | Entradas de feedback individuales | tenant_id, campaign_id, product_id, star_rating, nps_score, text_feedback, sentiment_*, status |
feedback_tags | Definiciones de etiquetas | tenant_id, name |
feedback_submission_tag | Tabla pivote muchos-a-muchos | submission_id, tag_id |
team_members | Registros del equipo del inquilino | tenant_id, user_id, role |
team_invitations | Invitaciones pendientes | tenant_id, email, role, token, expires_at |
api_keys | Claves API del inquilino (con hash) | tenant_id, name, key, scopes, is_active |
roadmap_items | Elementos públicos de la hoja de ruta | tenant_id, product_id, title, status, vote_count |
roadmap_votes | Votos anónimos en elementos | roadmap_item_id, email |
feature_requests | Sugerencias de funciones de la comunidad | tenant_id, roadmap_item_id, email, description, status |
changelog_entries | Notas de lanzamiento del producto | tenant_id, product_id, title, body, version, published_at |
notifications | Notificaciones en la aplicación | tenant_id, user_id, type, title, message, data (JSON) |
webhook_logs | Registros de entrega de webhooks de salida | tenant_id, url, event, payload (JSON), response_code |
data_deletion_requests | Seguimiento de eliminaciones GDPR | tenant_id, requester_email, status, completed_at |
referral_codes | Códigos de referido | tenant_id, code, reward_type, uses, max_uses |
referral_conversions | Seguimiento de conversiones | referral_code_id, converted_tenant_id, reward_amount |
scheduled_report_logs | Registro de entrega de informes | tenant_id, report_type, status, sent_at |
Tablas del Sistema Laravel
| Tabla | Descripción |
|---|---|
migrations | Seguimiento de migraciones |
password_reset_tokens | Tokens de restablecimiento de contraseña (con soporte de inquilino) |
sessions | Sesiones de usuario |
cache | Caché de la aplicación |
jobs | Trabajos en cola |
failed_jobs | Trabajos en cola fallidos |
Relaciones Clave
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
Aislamiento de Datos
Cada tabla con ámbito de inquilino tiene:
- Clave foránea
tenant_idconON DELETE CASCADE - Índice compuesto en
(tenant_id, created_at) - Ámbito global
TenantScopepara filtrado automático
Cuando se elimina un inquilino, todos sus datos se eliminan en cascada automáticamente.