CAM AI convierte grabaciones del CCTV existente en evidencia para revisar la operación de una tienda. El objetivo es ayudar al dueño a decidir dónde intervenir y comprobar si esa intervención mejora el negocio. No identifica personas ni deduce compras, ingresos o existencias a partir de una cámara.
Este repositorio contiene el código desarrollado en la VM, la interfaz liquid glass, pruebas, configuración y documentación. Conserva las bitácoras y briefs anteriores. Es un entorno de revisión y validación, no un producto desplegado a producción.
| Componente | Implementación y límites |
|---|---|
| Detección y seguimiento | RT-DETR R18 ONNX + ByteTrack independiente, en CPU. No requiere Ultralytics ni Torch. |
| Comprensión de video | Adaptador Gemini 3.8 Flash preparado para cuatro intentos acotados. Pendiente clave y prueba real; no se ha llamado al proveedor. |
| Alternativa local | Qwen3-VL-4B Q4 probado; su salida especuló una compra y quedó en cuarentena. Qwen 8B no instalado. |
| Grabaciones | FFmpeg para clips. Frigate y go2rtc son opciones futuras, no servicios instalados. |
| Persistencia | PostgreSQL 17 + pgvector; objetos locales por SHA256. Sin S3 remoto ni embeddings calculados. SQLite histórico conservado. |
| Orquestación | Python, FastAPI, Redis/RQ y servicios de datos Docker. Una tarea CPU simultánea. |
| Interfaz | Liquid glass; clips y botones para confirmar o descartar hallazgos, sin alta manual inicial de productos. |
| Razonamiento comercial | Análisis del agente sobre datos verificados. No hay servicio GPT autónomo ni integración OpenAI API. |
El video largo analizado produjo 4.150 muestras de actividad visible; incluye personal y no equivale a 4.150 clientes. En tres clips públicos CAVIAR, el conteo por puerta detectó 5 de 6 cruces etiquetados, con 0 falsos. Es una prueba pequeña seleccionada: no valida otra cámara ni demuestra rentabilidad.
Los hallazgos del modelo son candidatos. Solo los intervalos confirmados con evidencia alimentan las duraciones observadas de fila, paso bloqueado o atención interrumpida. No son tiempos individuales de espera ni totales completos del turno. Ventas, stock, clientes y resultado económico permanecen desconocidos mientras no exista una fuente verificada.
retail_vision/: pipeline, detectores, conteo por puerta, revisión, persistencia y API.retail_vision/crm_demo/static/turno.html: interfaz actual; el CRM histórico permanece disponible para revisión.scripts/: supervisión, recuperación, respaldos, acceso privado y benchmarks.configs/: perfiles de la VM y zonas específicas de cada grabación.tests/: regresiones de métricas, evidencia, API, presupuesto Gemini y seguimiento.docs/: estado técnico, decisiones y límites de validación.bitacora/,briefs/,outbox/*.md: historial de desarrollo; sus propuestas antiguas no describen necesariamente el stack activo.
Se mantiene el nombre interno retail_vision para conservar la infraestructura existente. No se ha creado otra aplicación.
Python 3.13 es la versión utilizada en la VM. FFmpeg y FFprobe son necesarios para trabajar con video.
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python -m pytest -q
.venv/bin/python -m pip checkLas pruebas usan fixtures sintéticos o aislados. Las comprobaciones que requieren los videos, pesos o bases existentes se omiten si esos archivos no están disponibles. El repositorio no descarga modelos automáticamente ni incluye videos, bases comerciales, respaldos o claves.
Para analizar un video propio con pesos ONNX ya obtenidos:
.venv/bin/python -m retail_vision.cli run \
--video /ruta/video.mp4 \
--detector rtdetr:/ruta/model.onnx \
--zones /ruta/zonas.json \
--out runs/prueba \
--device cpu --no-previewLas zonas y la línea de puerta deben calibrarse para esa cámara. Los perfiles en configs/ apuntan a recursos de la VM; copiar sus rutas o polígonos no valida otra instalación. Las métricas del pipeline histórico son señales de trayectorias, no datos comerciales confirmados.
cd /workspace/retail-vision-p1
bash scripts/recover_camai.shEste comando está limitado a la VM grok-bot-vm-358484926 y usa sus recursos existentes. La API escucha en localhost:8770 y el gateway de revisión en localhost:8769. No es un instalador genérico ni un despliegue a producción. No hay autostart del sistema ni nuevo enlace público comprobado para el nodo actual.
Los dumps de PostgreSQL se guardan cada 300 segundos en var/stack_v3/backups. La recuperación restaura solo cuando no hay tablas públicas. Falta retención y copia externa; los volúmenes Docker solos no garantizan persistencia al reemplazar el runtime.
Las claves y configuración privada se mantienen fuera del repositorio, bajo /home/box/.config/camai/, con permisos 0600. El acceso y cuota de la API deben comprobarse por separado. No pegues claves en issues, commits o archivos versionados.
- Estado del stack, pruebas y recuperación
- Métricas: qué sabemos y qué falta
- Resultado reproducible del benchmark de puerta
- Prueba de valor operativo
- Stock e integraciones pendientes
- Acceso a la VM
La prioridad es evaluar Gemini con evidencia reservada y controles sin eventos, calibrar la cámara objetivo y medir una intervención durante varios días comparables. La rentabilidad requiere ventas, márgenes y costos reales; una descripción de video no la prueba.
Las fuentes incluidas conservan sus avisos y licencias. La revisión de licencia de los pesos ONNX convertidos y las integraciones comerciales sigue pendiente antes de vender el servicio. No se ha asignado una nueva licencia global al proyecto.