Sistema de análisis de datos de ventas minoristas con capacidades de búsqueda semántica y análisis de tendencias.
retail-brain/
├── cmd/
│ └── retail-brain/
│ └── main.go # Punto de entrada de la aplicación
├── internal/ # Código privado de la aplicación
│ ├── config/
│ │ └── config.go # Lógica de configuración
│ ├── database/
│ │ └── db.go # Conexión y operaciones de base de datos
│ ├── service/
│ │ └── service.go # Lógica de negocio
│ ├── controller/
│ │ └── sales.go # Controladores HTTP
│ ├── repository/
│ │ └── sales.go # Acceso a datos
│ ├── model/
│ │ └── sale.go # Modelos de datos
│ ├── embeddings/
│ │ └── openai.go # Integración con OpenAI
│ ├── excel/
│ │ └── reader.go # Lectura de archivos Excel
│ └── vectorstore/
│ └── qdrant.go # Integración con Qdrant
├── pkg/ # Paquetes públicos reutilizables
│ └── common/
│ └── utils.go # Utilidades comunes
├── api/ # Definiciones de API
│ └── routes.go # Rutas de la API
├── web/ # Archivos web (templates, archivos estáticos)
├── scripts/ # Scripts auxiliares
│ └── docker-compose.yml # Configuración de Docker
├── tests/ # Pruebas de integración
├── go.mod # Archivo de módulo Go
├── go.sum # Checksums de dependencias
└── README.md # Documentación del proyecto
- Análisis de Ventas: Procesamiento y análisis de datos de ventas minoristas
- Búsqueda Semántica: Capacidades de búsqueda avanzada usando embeddings
- Base de Datos Vectorial: Integración con Qdrant para búsquedas semánticas
- API REST: Interfaz HTTP para acceder a los datos y funcionalidades
- Procesamiento de Excel: Lectura y procesamiento de archivos Excel
- Go 1.21 o superior
- PostgreSQL
- Qdrant Vector Database
- Docker (opcional)
# Base de datos
DB_HOST=localhost
DB_PORT=5432
DB_USER=admin
DB_PASSWORD=admin123
DB_NAME=retailBrain
# Servidor
SERVER_PORT=8080
# Qdrant
QDRANT_HOST=localhost
QDRANT_PORT=6333- Clona el repositorio:
git clone <repository-url>
cd retail-brain- Instala las dependencias:
go mod download- Configura la base de datos:
# Usando Docker
docker-compose -f scripts/docker-compose.yml up -d- Ejecuta la aplicación:
go run cmd/retail-brain/main.goGET /health- Estado de salud de la aplicaciónPOST /sales/upload- Subir archivo Excel con datos de ventasGET /sales- Obtener lista de ventasPOST /search- Búsqueda semántica en los datos
# Subir archivo Excel
curl -X POST -F "file=@test-retail-brain.xlsx" http://localhost:8080/sales/upload
# Buscar ventas
curl -X POST -H "Content-Type: application/json" \
-d '{"query": "ventas de productos electrónicos"}' \
http://localhost:8080/searchEl proyecto sigue las mejores prácticas de Go:
- cmd/: Contiene los puntos de entrada de la aplicación
- internal/: Código privado específico de la aplicación
- pkg/: Paquetes públicos que pueden ser reutilizados
- api/: Definiciones y rutas de la API
- scripts/: Scripts de construcción y despliegue
- Usar
context.Contextpara cancelación y timeouts - Manejar errores con
fmt.Errorfy wrapping - Documentar funciones públicas
- Usar interfaces para testing
# Ejecutar todas las pruebas
go test ./...
# Ejecutar pruebas con coverage
go test -cover ./...
# Ejecutar pruebas de integración
go test ./tests/...# Construir imagen
docker build -t retail-brain .
# Ejecutar contenedor
docker run -p 8080:8080 retail-brain- Configurar variables de entorno para producción
- Usar un reverse proxy (nginx, traefik)
- Configurar monitoreo y logging
- Implementar health checks
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.