# 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"