# 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 ```bash python main.py ``` ## Variables de Entorno Requeridas ```env 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 ```