Sprint 3-4 deliverables: - 28 epics documented (MCH-001 to MCH-028) - 7 development phases fully documented - DATABASE_INVENTORY.yml, BACKEND_INVENTORY.yml, FRONTEND_INVENTORY.yml - Task traces for database and frontend 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
332 lines
9.1 KiB
YAML
332 lines
9.1 KiB
YAML
# DATABASE INVENTORY - MiChangarrito
|
|
# Version: 1.0.0
|
|
# Ultima actualizacion: 2026-01-07
|
|
# Sistema: SIMCO - NEXUS v4.0
|
|
|
|
metadata:
|
|
proyecto: "michangarrito"
|
|
componente: "database"
|
|
db_name: "michangarrito_platform"
|
|
version_pg: "16+"
|
|
estado: "100% DDL completado"
|
|
|
|
# ============================================================================
|
|
# RESUMEN
|
|
# ============================================================================
|
|
|
|
resumen:
|
|
total_schemas: 10
|
|
total_tablas: 29
|
|
total_archivos_ddl: 13
|
|
rls_habilitado: true
|
|
multi_tenant: true
|
|
tenant_column: "tenant_id"
|
|
|
|
# ============================================================================
|
|
# ARCHIVOS DDL
|
|
# ============================================================================
|
|
|
|
archivos_ddl:
|
|
- archivo: "00-extensions.sql"
|
|
descripcion: "Extensiones PostgreSQL"
|
|
contenido:
|
|
- uuid-ossp
|
|
- pgcrypto
|
|
estado: completado
|
|
|
|
- archivo: "01-schemas.sql"
|
|
descripcion: "Creacion de schemas"
|
|
schemas_creados:
|
|
- public
|
|
- auth
|
|
- catalog
|
|
- sales
|
|
- inventory
|
|
- customers
|
|
- orders
|
|
- subscriptions
|
|
- messaging
|
|
- integrations
|
|
estado: completado
|
|
|
|
- archivo: "02-functions.sql"
|
|
descripcion: "Funciones utilitarias"
|
|
funciones:
|
|
- current_tenant_id()
|
|
- set_tenant_id(uuid)
|
|
- updated_at_trigger()
|
|
estado: completado
|
|
|
|
- archivo: "03-public.sql"
|
|
descripcion: "Schema public - tenants base"
|
|
tablas:
|
|
- tenants
|
|
- tenant_settings
|
|
estado: completado
|
|
|
|
- archivo: "04-auth.sql"
|
|
descripcion: "Autenticacion y usuarios"
|
|
tablas:
|
|
- users
|
|
- sessions
|
|
- roles
|
|
- permissions
|
|
estado: completado
|
|
|
|
- archivo: "05-catalog.sql"
|
|
descripcion: "Catalogo de productos"
|
|
tablas:
|
|
- categories
|
|
- products
|
|
- product_variants
|
|
estado: completado
|
|
|
|
- archivo: "06-sales.sql"
|
|
descripcion: "Punto de venta"
|
|
tablas:
|
|
- sales
|
|
- sale_items
|
|
- payment_methods
|
|
- cash_registers
|
|
estado: completado
|
|
|
|
- archivo: "07-inventory.sql"
|
|
descripcion: "Control de inventario"
|
|
tablas:
|
|
- stock_movements
|
|
- inventory_counts
|
|
estado: completado
|
|
|
|
- archivo: "08-customers.sql"
|
|
descripcion: "Clientes y fiados"
|
|
tablas:
|
|
- customers
|
|
- credit_accounts
|
|
- credit_transactions
|
|
estado: completado
|
|
|
|
- archivo: "09-orders.sql"
|
|
descripcion: "Pedidos"
|
|
tablas:
|
|
- orders
|
|
- order_items
|
|
estado: completado
|
|
|
|
- archivo: "10-subscriptions.sql"
|
|
descripcion: "Planes y suscripciones"
|
|
tablas:
|
|
- plans
|
|
- subscriptions
|
|
- token_packages
|
|
- token_usage
|
|
estado: completado
|
|
|
|
- archivo: "11-messaging.sql"
|
|
descripcion: "Mensajeria WhatsApp"
|
|
tablas:
|
|
- conversations
|
|
- messages
|
|
estado: completado
|
|
|
|
- archivo: "12-integrations.sql"
|
|
descripcion: "Integraciones por tenant"
|
|
tablas:
|
|
- tenant_integrations
|
|
- integration_logs
|
|
estado: completado
|
|
|
|
# ============================================================================
|
|
# SCHEMAS DETALLADOS
|
|
# ============================================================================
|
|
|
|
schemas:
|
|
public:
|
|
descripcion: "Datos globales y tenants"
|
|
tablas:
|
|
- nombre: tenants
|
|
columnas: [id, name, slug, settings, status, created_at]
|
|
rls: false
|
|
descripcion: "Organizaciones/negocios"
|
|
|
|
- nombre: tenant_settings
|
|
columnas: [id, tenant_id, key, value]
|
|
rls: true
|
|
descripcion: "Configuraciones por tenant"
|
|
|
|
auth:
|
|
descripcion: "Autenticacion y sesiones"
|
|
tablas:
|
|
- nombre: users
|
|
columnas: [id, tenant_id, phone, email, password_hash, name, role, status]
|
|
rls: true
|
|
descripcion: "Usuarios del sistema"
|
|
|
|
- nombre: sessions
|
|
columnas: [id, user_id, token, device_info, expires_at]
|
|
rls: true
|
|
descripcion: "Sesiones activas"
|
|
|
|
- nombre: roles
|
|
columnas: [id, tenant_id, name, permissions]
|
|
rls: true
|
|
descripcion: "Roles personalizados"
|
|
|
|
catalog:
|
|
descripcion: "Catalogo de productos"
|
|
tablas:
|
|
- nombre: categories
|
|
columnas: [id, tenant_id, name, parent_id, image_url, sort_order]
|
|
rls: true
|
|
descripcion: "Categorias de productos"
|
|
|
|
- nombre: products
|
|
columnas: [id, tenant_id, category_id, sku, name, description, price, cost, image_url, barcode, track_inventory, status]
|
|
rls: true
|
|
descripcion: "Productos"
|
|
|
|
- nombre: product_variants
|
|
columnas: [id, product_id, name, sku, price, attributes]
|
|
rls: true
|
|
descripcion: "Variantes de producto"
|
|
|
|
sales:
|
|
descripcion: "Punto de venta"
|
|
tablas:
|
|
- nombre: sales
|
|
columnas: [id, tenant_id, user_id, customer_id, subtotal, tax, discount, total, payment_method, status, notes]
|
|
rls: true
|
|
descripcion: "Ventas registradas"
|
|
|
|
- nombre: sale_items
|
|
columnas: [id, sale_id, product_id, quantity, unit_price, discount, total]
|
|
rls: true
|
|
descripcion: "Detalle de venta"
|
|
|
|
- nombre: payment_methods
|
|
columnas: [id, tenant_id, name, type, settings, active]
|
|
rls: true
|
|
descripcion: "Metodos de pago"
|
|
|
|
- nombre: cash_registers
|
|
columnas: [id, tenant_id, name, opening_balance, current_balance, status]
|
|
rls: true
|
|
descripcion: "Cajas registradoras"
|
|
|
|
inventory:
|
|
descripcion: "Control de inventario"
|
|
tablas:
|
|
- nombre: stock_movements
|
|
columnas: [id, tenant_id, product_id, type, quantity, reason, reference_id, user_id]
|
|
rls: true
|
|
descripcion: "Movimientos de stock"
|
|
|
|
- nombre: inventory_counts
|
|
columnas: [id, tenant_id, product_id, expected, counted, difference, user_id, status]
|
|
rls: true
|
|
descripcion: "Conteos de inventario"
|
|
|
|
customers:
|
|
descripcion: "Clientes y credito"
|
|
tablas:
|
|
- nombre: customers
|
|
columnas: [id, tenant_id, name, phone, email, address, credit_enabled, credit_limit, balance]
|
|
rls: true
|
|
descripcion: "Clientes"
|
|
|
|
- nombre: credit_accounts
|
|
columnas: [id, customer_id, limit, balance, status]
|
|
rls: true
|
|
descripcion: "Cuentas de credito (fiados)"
|
|
|
|
- nombre: credit_transactions
|
|
columnas: [id, credit_account_id, type, amount, sale_id, notes]
|
|
rls: true
|
|
descripcion: "Movimientos de credito"
|
|
|
|
orders:
|
|
descripcion: "Pedidos"
|
|
tablas:
|
|
- nombre: orders
|
|
columnas: [id, tenant_id, customer_id, channel, status, total, delivery_address, scheduled_at]
|
|
rls: true
|
|
descripcion: "Pedidos"
|
|
|
|
- nombre: order_items
|
|
columnas: [id, order_id, product_id, quantity, unit_price, notes]
|
|
rls: true
|
|
descripcion: "Detalle de pedido"
|
|
|
|
subscriptions:
|
|
descripcion: "Planes y tokens IA"
|
|
tablas:
|
|
- nombre: plans
|
|
columnas: [id, name, price, features, token_quota, status]
|
|
rls: false
|
|
descripcion: "Planes disponibles"
|
|
|
|
- nombre: subscriptions
|
|
columnas: [id, tenant_id, plan_id, status, current_period_start, current_period_end]
|
|
rls: true
|
|
descripcion: "Suscripciones activas"
|
|
|
|
- nombre: token_packages
|
|
columnas: [id, name, tokens, price]
|
|
rls: false
|
|
descripcion: "Paquetes de tokens"
|
|
|
|
- nombre: token_usage
|
|
columnas: [id, tenant_id, tokens_used, operation, metadata]
|
|
rls: true
|
|
descripcion: "Consumo de tokens"
|
|
|
|
messaging:
|
|
descripcion: "WhatsApp"
|
|
tablas:
|
|
- nombre: conversations
|
|
columnas: [id, tenant_id, customer_phone, status, last_message_at]
|
|
rls: true
|
|
descripcion: "Conversaciones"
|
|
|
|
- nombre: messages
|
|
columnas: [id, conversation_id, direction, type, content, status, wa_message_id]
|
|
rls: true
|
|
descripcion: "Mensajes"
|
|
|
|
integrations:
|
|
descripcion: "Integraciones externas"
|
|
tablas:
|
|
- nombre: tenant_integrations
|
|
columnas: [id, tenant_id, provider, credentials, settings, status]
|
|
rls: true
|
|
descripcion: "Integraciones por tenant"
|
|
|
|
- nombre: integration_logs
|
|
columnas: [id, integration_id, operation, request, response, status]
|
|
rls: true
|
|
descripcion: "Logs de integraciones"
|
|
|
|
# ============================================================================
|
|
# COMANDOS UTILES
|
|
# ============================================================================
|
|
|
|
comandos:
|
|
recrear_db: "./drop-and-recreate-database.sh"
|
|
conectar: "psql -d michangarrito_platform"
|
|
ejecutar_ddl: "psql -d michangarrito_platform -f database/schemas/*.sql"
|
|
|
|
# ============================================================================
|
|
# MIGRACIONES PENDIENTES
|
|
# ============================================================================
|
|
|
|
migraciones_pendientes: []
|
|
|
|
# ============================================================================
|
|
# NOTAS
|
|
# ============================================================================
|
|
|
|
notas:
|
|
- "RLS habilitado en todas las tablas excepto plans y token_packages"
|
|
- "Usar current_tenant_id() para obtener tenant del contexto"
|
|
- "Trigger updated_at automatico en todas las tablas"
|
|
- "Multi-tenant por columna tenant_id"
|