diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..52d6f4d --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,108 @@ +# 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