Technical Documentation
Inventario IA Pro
Technical Specifications v4.1.0 // Build 2026.01.05
Core Technology Stack
Frontend Framework
React 19.0.0
UI & Styling
Vanilla CSS + Tailwind
IA Engine
Gemini 2.0 Flash Exp
Backend / DB
Supabase / PG15
Arquitectura de Sistemas
graph TD
User((Usuario)) -->|Auth/UI| App["Inventario IA Pro"]
subgraph Frontend["Capa de Aplicación"]
App -->|Hooks| Logic["useInventory / useSync"]
App -->|Services| AIServ["Gemini AI Service"]
end
subgraph Cloud["Infraestructura Cloud"]
Logic -->|"Data / Auth"| Supabase["Supabase DB & Auth"]
Logic -->|"Assets"| S3["Supabase Storage"]
Logic -->|"Legacy Sync"| Sheets["Google Sheets Cloud"]
end
AIServ -->|Análisis Multimodal| App
Supabase -->|Realtime Update| App
Onboarding de Empresas
Master Prompt para Alta de Clientes
Instrucciones blindadas para el Agente IA. Este prompt asegura que la nueva empresa tenga acceso inmediato y sin errores de base de datos.
Antigravity, quiero registrar una nueva empresa formal. Por favor, ejecuta el proceso de Onboarding Completo:
1. Empresa: [Nombre de la Empresa]
2. Usuario/ID para Login: [nombre_de_usuario]
3. Contraseña Plana: [Clave Deseada]
4. Ubicación: [Ciudad, Estado/País]
5. WhatsApp: [Número con +]
6. Moneda: [MXN/USD]
7. Color de Marca: [Color Hex o Nombre]
8. Industria: [AUTO_PARTS / RETAIL / RESTAURANT / etc.]
REGLAS TÉCNICAS PARA EL AGENTE:
- Usa pgcrypto para hashear la contraseña con crypt('...', gen_salt('bf', 6)).
- Crea los registros en auth.users, auth.identities, agencies y profiles.
- CRÍTICO: Normaliza la tabla auth.users para que ninguna columna de tokens (confirmation_token, email_change, etc.) sea NULL. Usa strings vacíos '' para evitar el error 'Database error querying schema'.
- Vincula el owner_id de la agencia con el UUID del nuevo usuario.
¡Copiado!
Ciclo de Análisis IA
Procesamiento multimodal universal para cualquier tipo de objeto.
sequenceDiagram
participant User
participant App
participant AI as Gemini 2.0
participant DB as Supabase
User->>App: Carga Multimedia (Imagen/Video)
App->>App: Optimización / Conversión Base64
App->>AI: Análisis Multimodal Universial
Note over AI: Identifica Objeto + Atributos Dynamic
AI-->>App: Retorna JSON Universal (Atributos)
App->>User: Muestra Vista Previa de Selección
User->>App: Confirma y Guarda
App->>DB: Almacena registro JSONB
DB-->>App: OK
App->>User: Item registrado con éxito
Asistente IA Conversacional
Capacidades de Voz
- • Reconocimiento de voz (Speech-to-Text)
- • Síntesis de voz (Text-to-Speech)
- • Selector de voces multi-idioma
- • Auto-envío de mensajes por voz
Contexto de Inventario
- • Acceso a 100+ productos en memoria
- • Consultas en lenguaje natural
- • Análisis estratégico de stock
- • Historial de conversación persistente
sequenceDiagram
participant User
participant UI as AI Assistant UI
participant Voice as Web Speech API
participant AI as Gemini 2.0
participant Inv as Inventory Context
User->>UI: Click Mic Button
UI->>Voice: Start Recognition
Voice-->>UI: Transcript
UI->>AI: Send Message + Full History
AI->>Inv: Query Inventory Data
Inv-->>AI: Filtered Results
AI-->>UI: Response Text
UI->>Voice: Speak Response
Voice-->>User: Audio Output
Sistema de Cantidades (Stock)
Gestión completa de inventario multi-unidad con decrementos automáticos.
quantity
Campo INT en DB
Auto-Decrement
En cada venta
Status Update
SOLD cuando qty=0
// Lógica de venta con decremento
const newQty = part.quantity - quantityToSell;
if (newQty <= 0) {
updatePart(partId, { status: 'SOLD', quantity: 0 });
} else {
updatePart(partId, { quantity: newQty });
}
Flujos Detallados de Funciones
01. Acceso y Autenticación (B2B Multi-Tenant)
graph TD
Start((Inicio App)) --> Session{¿Sesión Activa?}
Session -- No --> LoginView[Pantalla de Login]
LoginView --> Credentials[Ingreso de Referencia + Password]
Credentials --> AuthProcess[Limpieza de Caché + Supabase Auth]
AuthProcess --> ProfileLoad[Cargar Perfil y Agencia Asociada]
ProfileLoad --> Dashboard[Acceso al Dashboard Operativo]
Session -- Sí --> ProfileLoad
02. Terminal de Ventas (POS-Rapid)
graph TD
Inv[Inventario Activo] --> Select[Seleccionar Pieza/Lote]
Select --> POS[Click botón VENDER]
POS --> Modal[Abrir Modal de Venta]
Modal --> Price[Ajustar Precio Final]
Price --> Confirm[Confirmar Transacción]
Confirm --> DB_Update[Actualizar DB: AVAILABLE -> SOLD]
DB_Update --> Revenue[Sincronizar KPIs de Ingresos]
03. Motor de Búsqueda Inteligente
graph TD
Query[Término de Búsqueda / VIN] --> Gemini[IA Semántica (Gemini)]
Gemini --> Params[Extracción de Marcas/Modelos/Años]
Params --> Local[Filtro Dinámico Inventario Local]
Local --> Rank[Ranking por Relevancia]
Rank --> Results[Presentación de Resultados]
04. Sincronización en la Nube (useSync)
graph TD
Action[Acción del Usuario] --> Store[Sync Queue (LocalStorage)]
Store --> NetCheck{¿Internet On?}
NetCheck -- Sí --> CloudPush[Update Supabase / Edge Functions]
CloudPush --> Success[Remover de Queue]
NetCheck -- No --> Idle[Esperar Conexión]
Idle --> NetCheck
05. Marketplace Global (Publicación B2B)
graph TD
Item[Pieza en Inventario] --> Toggle[Activar 'Público Global']
Toggle --> Edge[Edge Function: Sync Marketplace]
Edge --> GlobalDB[(Base de Datos Global)]
GlobalDB --> Discovery[Visible para Red Global de Socios]
Discovery --> Lead[Contacto Directo WhatsApp]
06. Marketing Automatizado (Ads & Proposals)
graph LR
Data[Datos de la Pieza] --> Prompt[Prompt Engineering IA]
Prompt --> G_Creative[Gemini Creative Engine]
G_Creative --> Social[Anuncio Redes Sociales]
G_Creative --> Pitch[Guion de Venta Telefónica]
Social --> Clipboard[Copiar y Pegar]
07. Reportería y Analytics Ejecutivo
graph TD
Sales[Ventas] & Inv[Stock] --> Agg[Procesador de Datos]
Agg --> KPIs[Generación de Métricas]
KPIs --> Charts[Visualización en Tiempo Real]
KPIs --> PDF[Exportar Reporte PDF / Excel]
Modelo de Datos Universal
// Estructura Flex-Schema (JSONB)
interface InventoryItem {
id: string;
name: string;
attributes: {
[key: string]: any;
};
status: 'AVAILABLE' | 'SOLD';
suggested_price: number;
}
interface InventoryItem {
id: string;
name: string;
attributes: {
[key: string]: any;
};
status: 'AVAILABLE' | 'SOLD';
suggested_price: number;
}
El uso de JSONB en PostgreSQL permite que el sistema evolucione sin migraciones de base de datos, soportando desde autopartes hasta textiles o electrónica de forma nativa.