README.md 3.3 KB

Web Pedidos Klein - Backend

Estructura del Proyecto

El backend ha sido reorganizado para mejorar la mantenibilidad y seguir buenas prácticas de desarrollo. La nueva estructura es:

pedidos_express/
├── main.py                    # Punto de entrada principal
├── app.py                     # Configuración de la aplicación FastAPI
├── requirements.txt           # Dependencias
├── .env                       # Variables de entorno
├── config/
│   ├── __init__.py
│   └── settings.py           # Configuración y variables de entorno
├── models/
│   ├── __init__.py
│   └── schemas.py            # Modelos Pydantic
├── auth/
│   ├── __init__.py
│   └── security.py           # Autenticación y seguridad
├── services/
│   ├── __init__.py
│   ├── data_service.py       # Manejo de datos (productos, usuarios)
│   ├── openai_service.py     # Servicio de OpenAI/ChatGPT
│   ├── email_service.py      # Servicio de envío de emails
│   ├── fudo_service.py       # Integración con Fudo
│   └── logging_service.py    # Logging de pedidos y respuestas
├── routes/
│   ├── __init__.py
│   ├── chat.py              # Endpoints del chat
│   ├── users.py             # Endpoints de usuarios
│   ├── products.py          # Endpoints de productos
│   ├── orders.py            # Endpoints de pedidos
│   └── static.py            # Archivos estáticos
├── impresora/               # Módulo de impresión (existente)
├── fudo/                    # Módulo Fudo (existente)
└── public/                  # Archivos estáticos frontend

Módulos

config/settings.py

  • Configuración de la aplicación
  • Variables de entorno
  • Validación de configuración

models/schemas.py

  • Modelos Pydantic para request/response
  • Validación de datos

auth/security.py

  • Middleware de autenticación
  • Generación de tokens anti-abuse
  • Protección de endpoints

services/

  • data_service.py: Carga y manejo de datos (productos, usuarios, datos del menú)
  • openai_service.py: Integración con OpenAI para el chatbot
  • email_service.py: Envío de notificaciones por email
  • fudo_service.py: Integración con el sistema Fudo
  • logging_service.py: Logging de pedidos y respuestas del LLM

routes/

  • chat.py: Endpoints relacionados con el chat (/api/chat/*)
  • users.py: Endpoints de usuarios (/api/existsUser)
  • products.py: Endpoints de productos (/api/get_products)
  • orders.py: Endpoints de pedidos (/api/printer/order)
  • static.py: Servir archivos estáticos

Ventajas de la Nueva Estructura

  1. Separación de responsabilidades: Cada módulo tiene una función específica
  2. Mantenibilidad: Código más fácil de mantener y modificar
  3. Testabilidad: Cada módulo puede ser probado independientemente
  4. Escalabilidad: Fácil agregar nuevas funcionalidades
  5. Legibilidad: Código más organizado y fácil de entender

Cómo Ejecutar

python main.py

Variables de Entorno Requeridas

OPENAI_API_KEY=tu_api_key_aqui
SECRET_KEY=tu_secret_key_para_sessions
PORT=6001

FUDO_API_KEY=tu_api_key_fudo
FUDO_API_SECRET=tu_api_secret_fudo