- Update DATABASE_INVENTORY.yml version to 3.3.0, date to 2026-01-25 - Update BACKEND_INVENTORY.yml version to 4.1.0, date to 2026-01-25 - Fixes minor documentation inconsistency Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
409 lines
9.8 KiB
YAML
409 lines
9.8 KiB
YAML
---
|
|
# DATABASE INVENTORY - Template SaaS
|
|
# Version: 3.3.0
|
|
# Ultima actualizacion: 2026-01-25
|
|
# Nota: Portfolio module (SAAS-019) added
|
|
|
|
metadata:
|
|
proyecto: "template-saas"
|
|
tipo: "DATABASE"
|
|
version: "3.3.0"
|
|
updated: "2026-01-25"
|
|
motor: "PostgreSQL 16+"
|
|
version_motor: "16.x"
|
|
estado: "completado"
|
|
|
|
features:
|
|
- "Row-Level Security (RLS)"
|
|
- "Multi-tenant isolation"
|
|
- "UUID primary keys"
|
|
- "JSONB for settings"
|
|
|
|
schemas:
|
|
- nombre: "auth"
|
|
descripcion: "Autenticacion y sesiones"
|
|
estado: "completado"
|
|
tablas:
|
|
- sessions
|
|
- tokens
|
|
- oauth_connections
|
|
enums:
|
|
- token_type
|
|
- oauth_provider
|
|
- session_status
|
|
funciones:
|
|
- cleanup_expired_sessions
|
|
- set_current_tenant
|
|
- get_current_tenant
|
|
- set_current_user
|
|
- get_current_user
|
|
- clear_context
|
|
rls_policies:
|
|
- sessions_tenant_isolation
|
|
- tokens_tenant_isolation
|
|
- oauth_tenant_isolation
|
|
|
|
- nombre: "tenants"
|
|
descripcion: "Multi-tenancy y organizaciones"
|
|
estado: "completado"
|
|
tablas:
|
|
- tenants
|
|
- tenant_settings
|
|
enums:
|
|
- tenant_status
|
|
- subscription_status
|
|
funciones:
|
|
- update_updated_at
|
|
rls_policies:
|
|
- tenant_settings_isolation
|
|
|
|
- nombre: "users"
|
|
descripcion: "Usuarios, roles y permisos"
|
|
estado: "completado"
|
|
tablas:
|
|
- users
|
|
- roles
|
|
- invitations
|
|
enums:
|
|
- user_status
|
|
- invitation_status
|
|
funciones:
|
|
- update_updated_at
|
|
- expire_old_invitations
|
|
rls_policies:
|
|
- users_tenant_isolation
|
|
- roles_tenant_isolation
|
|
- invitations_tenant_isolation
|
|
|
|
- nombre: "plans"
|
|
descripcion: "Planes y limites"
|
|
estado: "completado"
|
|
tablas:
|
|
- plans
|
|
funciones:
|
|
- get_tenant_limits
|
|
- check_limit
|
|
- get_tenant_features
|
|
- has_feature
|
|
rls_policies: []
|
|
|
|
- nombre: "billing"
|
|
descripcion: "Suscripciones, facturas y pagos"
|
|
estado: "completado"
|
|
tablas:
|
|
- subscriptions
|
|
- invoices
|
|
- payment_methods
|
|
enums:
|
|
- payment_status
|
|
- invoice_status
|
|
- billing_interval
|
|
- payment_method_type
|
|
- subscription_status
|
|
funciones:
|
|
- generate_invoice_number
|
|
rls_policies:
|
|
- subscriptions_tenant_isolation
|
|
- invoices_tenant_isolation
|
|
- payments_tenant_isolation
|
|
|
|
- nombre: "notifications"
|
|
descripcion: "Sistema de notificaciones v2"
|
|
estado: "completado"
|
|
tablas:
|
|
- notifications
|
|
- extended_notifications
|
|
enums:
|
|
- channel
|
|
- notification_status
|
|
- priority
|
|
- queue_status
|
|
- device_type
|
|
funciones:
|
|
- update_updated_at
|
|
rls_policies:
|
|
- notifications_tenant_isolation
|
|
- user_preferences_tenant_isolation
|
|
|
|
- nombre: "feature_flags"
|
|
descripcion: "Feature toggles"
|
|
estado: "completado"
|
|
tablas:
|
|
- flags
|
|
enums:
|
|
- flag_status
|
|
- rollout_stage
|
|
funciones:
|
|
- evaluate_flag
|
|
rls_policies:
|
|
- tenant_flags_isolation
|
|
- user_flags_isolation
|
|
|
|
- nombre: "audit"
|
|
descripcion: "Auditoria y logs"
|
|
estado: "completado"
|
|
tablas:
|
|
- audit_logs
|
|
enums:
|
|
- action_type
|
|
- severity
|
|
funciones:
|
|
- log_event
|
|
- cleanup_old_logs
|
|
rls_policies:
|
|
- audit_logs_tenant_isolation
|
|
|
|
- nombre: "storage"
|
|
descripcion: "Almacenamiento de archivos"
|
|
estado: "completado"
|
|
tablas:
|
|
- files
|
|
- storage_usage
|
|
enums:
|
|
- file_status
|
|
- visibility
|
|
- storage_provider
|
|
funciones:
|
|
- update_storage_usage
|
|
rls_policies:
|
|
- files_tenant_isolation
|
|
- storage_usage_tenant_isolation
|
|
|
|
- nombre: "ai"
|
|
descripcion: "Integracion AI"
|
|
estado: "completado"
|
|
tablas:
|
|
- ai_configs
|
|
- ai_usage
|
|
enums:
|
|
- ai_provider
|
|
- ai_model_type
|
|
- usage_status
|
|
funciones:
|
|
- track_ai_usage
|
|
rls_policies:
|
|
- ai_configs_tenant_isolation
|
|
- ai_usage_tenant_isolation
|
|
|
|
- nombre: "webhooks"
|
|
descripcion: "Webhooks outbound"
|
|
estado: "completado"
|
|
tablas:
|
|
- webhooks
|
|
- deliveries
|
|
enums:
|
|
- delivery_status
|
|
- event_type
|
|
funciones:
|
|
- retry_webhook
|
|
- get_webhook_stats
|
|
rls_policies:
|
|
- webhooks_tenant_isolation
|
|
- deliveries_tenant_isolation
|
|
|
|
- nombre: "whatsapp"
|
|
descripcion: "WhatsApp Business API"
|
|
estado: "completado"
|
|
tablas:
|
|
- whatsapp_configs
|
|
- whatsapp_messages
|
|
enums:
|
|
- message_status
|
|
- message_type
|
|
- message_direction
|
|
funciones: []
|
|
rls_policies:
|
|
- whatsapp_configs_tenant_isolation
|
|
- whatsapp_messages_tenant_isolation
|
|
|
|
- nombre: "sales"
|
|
descripcion: "Sales Foundation - Leads, Oportunidades, Pipeline"
|
|
estado: "completado"
|
|
tablas:
|
|
- leads
|
|
- opportunities
|
|
- pipeline_stages
|
|
- activities
|
|
enums:
|
|
- lead_status
|
|
- lead_source
|
|
- opportunity_stage
|
|
- activity_type
|
|
- activity_status
|
|
funciones:
|
|
- convert_lead_to_opportunity
|
|
- update_opportunity_stage
|
|
- calculate_lead_score
|
|
- get_pipeline_summary
|
|
- initialize_default_stages
|
|
rls_policies:
|
|
- leads_tenant_isolation
|
|
- opportunities_tenant_isolation
|
|
- pipeline_stages_tenant_isolation
|
|
- activities_tenant_isolation
|
|
indices:
|
|
- leads_tenant_status_idx
|
|
- leads_assigned_to_idx
|
|
- leads_source_idx
|
|
- leads_score_idx
|
|
- opportunities_tenant_stage_idx
|
|
- opportunities_assigned_to_idx
|
|
- opportunities_expected_close_idx
|
|
- pipeline_stages_position_idx
|
|
- activities_tenant_type_idx
|
|
- activities_lead_idx
|
|
- activities_opportunity_idx
|
|
- activities_due_date_idx
|
|
nota: "SAAS-018 - Implementado 2026-01-24"
|
|
|
|
- nombre: "commissions"
|
|
descripcion: "Sistema de comisiones - Esquemas, Asignaciones, Entradas, Períodos"
|
|
estado: "completado"
|
|
tablas:
|
|
- schemes
|
|
- assignments
|
|
- entries
|
|
- periods
|
|
enums:
|
|
- scheme_type
|
|
- applies_to
|
|
- entry_status
|
|
- period_status
|
|
funciones:
|
|
- calculate_commission
|
|
- close_period
|
|
- get_user_earnings
|
|
- apply_tiered_rate
|
|
rls_policies:
|
|
- schemes_tenant_isolation_select
|
|
- schemes_tenant_isolation_insert
|
|
- schemes_tenant_isolation_update
|
|
- schemes_tenant_isolation_delete
|
|
- assignments_tenant_isolation_select
|
|
- assignments_tenant_isolation_insert
|
|
- assignments_tenant_isolation_update
|
|
- assignments_tenant_isolation_delete
|
|
- entries_tenant_isolation_select
|
|
- entries_tenant_isolation_insert
|
|
- entries_tenant_isolation_update
|
|
- entries_tenant_isolation_delete
|
|
- periods_tenant_isolation_select
|
|
- periods_tenant_isolation_insert
|
|
- periods_tenant_isolation_update
|
|
- periods_tenant_isolation_delete
|
|
indices:
|
|
- schemes_tenant_active_idx
|
|
- schemes_type_idx
|
|
- assignments_tenant_user_idx
|
|
- assignments_scheme_idx
|
|
- assignments_active_dates_idx
|
|
- entries_tenant_user_idx
|
|
- entries_scheme_idx
|
|
- entries_status_idx
|
|
- entries_period_idx
|
|
- entries_reference_idx
|
|
- entries_created_at_idx
|
|
- periods_tenant_status_idx
|
|
- periods_dates_idx
|
|
nota: "SAAS-020 - Implementado 2026-01-24"
|
|
|
|
- nombre: "portfolio"
|
|
descripcion: "Catálogo de productos/servicios - Categorías, Productos, Variantes, Precios"
|
|
estado: "completado"
|
|
tablas:
|
|
- categories
|
|
- products
|
|
- variants
|
|
- prices
|
|
enums:
|
|
- product_type
|
|
- product_status
|
|
- price_type
|
|
- attribute_type
|
|
funciones:
|
|
- update_updated_at (triggers)
|
|
rls_policies:
|
|
- categories_tenant_isolation_select
|
|
- categories_tenant_isolation_insert
|
|
- categories_tenant_isolation_update
|
|
- categories_tenant_isolation_delete
|
|
- products_tenant_isolation_select
|
|
- products_tenant_isolation_insert
|
|
- products_tenant_isolation_update
|
|
- products_tenant_isolation_delete
|
|
- variants_tenant_isolation_select
|
|
- variants_tenant_isolation_insert
|
|
- variants_tenant_isolation_update
|
|
- variants_tenant_isolation_delete
|
|
- prices_tenant_isolation_select
|
|
- prices_tenant_isolation_insert
|
|
- prices_tenant_isolation_update
|
|
- prices_tenant_isolation_delete
|
|
indices:
|
|
- categories_tenant_slug_idx
|
|
- categories_parent_idx
|
|
- categories_position_idx
|
|
- products_tenant_status_idx
|
|
- products_category_idx
|
|
- products_sku_idx
|
|
- products_barcode_idx
|
|
- products_slug_idx
|
|
- products_type_idx
|
|
- products_featured_idx
|
|
- products_visible_idx
|
|
- products_price_range_idx
|
|
- products_search_idx
|
|
- products_tags_idx
|
|
- variants_product_idx
|
|
- variants_sku_idx
|
|
- variants_barcode_idx
|
|
- variants_active_idx
|
|
- prices_product_idx
|
|
- prices_variant_idx
|
|
- prices_type_idx
|
|
- prices_currency_idx
|
|
- prices_active_dates_idx
|
|
nota: "SAAS-019 - Implementado 2026-01-25"
|
|
|
|
resumen:
|
|
total_schemas: 15
|
|
total_tablas: 38
|
|
total_enums: 45
|
|
total_funciones: 35
|
|
total_rls_policies: 60
|
|
total_indices: 93
|
|
|
|
planificado:
|
|
tablas_actuales: 38
|
|
tablas_objetivo: 38
|
|
estado: "100%"
|
|
nota: "Portfolio module (SAAS-019) added 2026-01-25"
|
|
|
|
ddl_structure:
|
|
base_files:
|
|
- "00-extensions.sql"
|
|
- "01-schemas.sql"
|
|
- "02-enums.sql"
|
|
- "03-functions.sql"
|
|
schema_files:
|
|
- "schemas/*/tables/*.sql"
|
|
- "schemas/*/rls/*.sql"
|
|
- "schemas/*/triggers/*.sql"
|
|
|
|
seeds:
|
|
prod:
|
|
- plans: 4
|
|
- permissions: 21
|
|
- feature_flags: 8
|
|
- notification_templates: 6
|
|
dev:
|
|
- sample_tenants: 3
|
|
- sample_users: 10
|
|
|
|
scripts:
|
|
- create-database.sh
|
|
- drop-and-recreate.sh
|
|
|
|
ultima_actualizacion: "2026-01-25"
|
|
actualizado_por: "Claude Opus 4.5 (SAAS-019 Portfolio)"
|