From 71294af7fac0102d31b327acc21513d599e9d83d Mon Sep 17 00:00:00 2001 From: mono Date: Sat, 14 Mar 2026 22:24:34 -0500 Subject: [PATCH] #29 docs: add project analysis to AGENTS.md --- AGENTS.md | 47 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 78fb193..1c43663 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,14 +13,19 @@ ``` src/ ├── assets/ # Imágenes, iconos estáticos -├── components/ # Componentes Vue reutilizables +├── components/ # Componentes Vue reutilizables ├── layouts/ # Layouts de página -├── pages/ # Vistas (auto-routed desde文件名) -├── plugins/ # Configuración de Vuetify, etc. -├── router/ # Configuración de rutas -├── services/ # API services (auth.js, etc.) -├── stores/ # Pinia stores -└── styles/ # SCSS settings +├── pages/ # Vistas (auto-routed desde文件名) +├── plugins/ # Configuración de Vuetify, etc. +├── router/ # Configuración de rutas +├── services/ # API services (auth.js, etc.) +│ ├── api.js # Clase wrapper que делегат methods +│ ├── api-implementation.js # Factory que selecciona implementación +│ ├── auth.js # Manejo de auth (login, tokens JWT) +│ ├── django-api.js # Implementación de API para Django +│ └── http.js # Axios instance con interceptors +├── stores/ # Pinia stores +└── styles/ # SCSS settings ``` ## Important Conventions @@ -51,6 +56,7 @@ import MiComponente from '@/components/MiComponente.vue'; - Ubicación: `src/services/` - Usar Axios para HTTP requests - JWT tokens en localStorage (`access_token`, `refresh_token`) +- La API se inyecta globalmente via `app.provide('api', api)` y se usa con `inject('api')` ### Routing - Rutas automáticas basadas en archivos en `src/pages/` @@ -79,3 +85,30 @@ npm run lint # ESLint fix **Formato de mensajes:** - Usar prefijo `#` para referenciar el issue (ej: `#28 feat: add login` donde #28 es el número del issue en GitHub/GitLab) - Prefijos válidos: `feat`, `fix`, `chore`, `docs`, `refactor`, `style` + +## Análisis del Proyecto + +### Flujo de Autenticación +1. **Login:** `AuthService.login(credentials)` → obtiene JWT tokens → guarda en localStorage +2. **Token:** Se envía en headers via interceptor en `http.js` (`Authorization: Bearer `) +3. **Refresh:** El interceptor renueva automáticamente el token si expira (401) +4. **Logout:** `AuthService.logout()` → limpia localStorage + +### Estructura de API +- `api.js`: Interfaz genérica con métodos como `getCustomers()`, `getProducts()`, etc. +- `api-implementation.js`: Factory que selecciona implementación (actualmente solo Django) +- `django-api.js`: Implementación concreta con endpoints de Django + +### Componentes Principales +- **NavBar.vue**: Barra de navegación con menú de usuario +- **LoginDialog.vue**: Diálogo de inicio de sesión +- **Purchase.vue / AdminPurchase.vue**: Componentes de compra +- **Cart.vue**: Carrito de compras +- **SummaryPurchase.vue**: Resumen de compra + +### Endpoints Django Comunes +- `/api/token/` - Autenticación (login/refresh) +- `/users/me/` - Usuario actual +- `/don_confiao/api/customers/` - Clientes +- `/don_confiao/api/products/` - Productos +- `/don_confiao/api/sales/` - Ventas