# Don Confiao Backend - Contexto del Proyecto ## Tipo de Proyecto Backend Django con Django REST Framework ## Estructura del Proyecto ``` don_confiao_backend/ ├── requirements.txt # Dependencias Python ├── docker-compose.yml # Configuración Docker ├── django.Dockerfile # Dockerfile Django ├── .env # Variables de entorno ├── .env_example # Ejemplo de variables de entorno ├── README.rst # Documentación básica ├── Rakefile # Tareas rake ├── doc/ # Documentación adicional │ └── requests.org └── tienda_ilusion/ # Proyecto Django ├── manage.py ├── db.sqlite3 # Base de datos SQLite ├── don_confiao/ # App principal │ ├── models.py # Modelos: Customer, Product, Sale, SaleLine, Payment, ReconciliationJar, AdminCode │ ├── views.py │ ├── api_views.py │ ├── serializers.py │ ├── forms.py │ ├── admin.py │ ├── urls.py │ ├── export_csv.py │ ├── tests/ # Tests │ └── migrations/ ├── users/ # App de usuarios │ ├── models.py │ ├── views.py │ ├── serializers.py │ ├── urls.py │ └── tests/ └── tienda_ilusion/ # Configuración Django ├── settings.py ├── urls.py ├── wsgi.py └── asgi.py ``` ## Dependencias Principales - Django==5.0.6 - djangorestframework - django-cors-headers - djangorestframework-simplejwt - sabatron-tryton-rpc-client==7.4.0 (integración con Tryton ERP) ## Modelos Principales (don_confiao/models.py) - **Customer**: Clientes (name, address, email, phone, external_id) - **Product**: Productos (name, price, measuring_unit, categories) - **ProductCategory**: Categorías de productos - **Sale**: Ventas (customer, date, phone, description, payment_method, reconciliation) - **SaleLine**: Líneas de venta (sale, product, quantity, unit_price, description) - **Payment**: Pagos (date_time, type_payment, amount, reconciliation_jar) - **PaymentSale**: Relación muchos a muchos entre Payment y Sale - **ReconciliationJar**: Arqueo de caja (is_valid, date_time, reconcilier, cash_taken, cash_discrepancy) - **AdminCode**: Códigos de administrador ## Autenticación - JWT con djangorestframework-simplejwt - ACCESS_TOKEN_LIFETIME: 30 minutos - REFRESH_TOKEN_LIFETIME: 1 día ## API Endpoints - REST API en don_confiao/api_views.py y users/ - URLs en don_confiao/urls.py y users/urls.py ## Ejecución con Docker Compose El proyecto se ejecuta con docker-compose. Todos los comandos `manage.py` deben ejecutarse dentro del contenedor: ```bash # Ejecutar tests docker-compose run --rm django python manage.py test # Migraciones docker-compose run --rm django python manage.py makemigrations docker-compose run --rm django python manage.py migrate # Servidor desarrollo docker-compose up # Shell Django docker-compose run --rm django python manage.py shell # Crear superuser docker-compose run --rm django python manage.py createsuperuser ``` Nota: El volumen monta `tienda_ilusion/` en `/app/`, por lo que el path correcto es `python manage.py` (no `python tienda_ilusion/manage.py`). ## Tests - Framework: Django unittest - Directorio: don_confiao/tests/ - Ejecutar: `docker-compose run --rm django python manage.py test` ## Comandos Útiles (dentro del contenedor) - Migraciones: `docker-compose run --rm django python manage.py makemigrations && docker-compose run --rm django python manage.py migrate` - Servidor desarrollo: `docker-compose up` - Shell Django: `docker-compose run --rm django python manage.py shell` - Superuser: `docker-compose run --rm django python manage.py createsuperuser` ## Integraciones - **Tryton ERP**: Integración mediante sabatron-tryton-rpc-client para sincronización de clientes, productos y ventas