Guía para Agentes IA¶
Normas para que agentes de IA (como Claude Code, GitHub Copilot) trabajen efectivamente en el Sistema A3, el ERP interno de A Terceros Inmobiliaria.
Nota Importante: Este es software privado y confidencial. Los agentes IA deben seguir las mismas políticas de seguridad que los desarrolladores humanos.
Contexto del Proyecto¶
| Factor | Valor |
|---|---|
| Lenguaje principal | Python 3.11 |
| Framework backend | Django 3.2 |
| Frontend | HTML templates, JavaScript + jQuery, CSS |
| Comportamiento UI | SPA simulada con gestor de ventanas (static/js/js.js) |
| Base de datos | PostgreSQL 12.3+ |
| Estructura | Monolito con múltiples apps Django |
| Despliegue | Heroku |
Arquitectura SPA¶
El sistema funciona como una Single-Page Application simulada:
- Script central:
static/js/js.js(gestor de ventanas) - Navegación: Mediante apertura de "ventanas" que cargan contenido vía AJAX
- No usar React, Vue o frameworks modernos sin aprobación
- Mantener el comportamiento SPA existente
Estructura del Proyecto¶
sistema-a3/
├── manage.py
├── requirements.txt
├── .env
├── a3ceros/ # App principal (settings, urls)
├── inventario/ # Módulo de propiedades
├── apartados/ # Módulo de ventas
├── clientes/ # Módulo de clientes
├── tickets/ # Módulo de tickets
├── ... (más apps)
├── static/
│ ├── css/
│ └── js/
│ └── js.js # ⚠️ CRÍTICO: Gestor SPA
└── templates/
└── base.html
Reglas para Agentes IA¶
1. Python¶
✅ Hacer:
- Formatear con black --line-length 90
- Ordenar imports con isort
- Agregar docstrings en funciones públicas
- Seguir convenciones Django
- Registrar nuevas apps en INSTALLED_APPS
❌ NO hacer: - Cambiar estructura de carpetas sin consultar - Introducir nuevos frameworks sin aprobación - Ignorar el ORM de Django (no SQL crudo) - Hardcodear secrets
2. JavaScript¶
✅ Hacer:
- Mantener compatibilidad con static/js/js.js
- Documentar funciones nuevas
- Usar jQuery existente
- Seguir estilo funcional
❌ NO hacer:
- Renombrar o refactorizar js.js sin aprobación
- Introducir bundlers (Webpack, Vite) sin consultar
- Romper navegación SPA
- Usar ES6 modules (el proyecto usa scripts globales)
3. CSS¶
✅ Hacer: - Seguir convenciones existentes - Agregar comentarios para estilos complejos
❌ NO hacer: - Introducir Tailwind/Bootstrap sin aprobación - Cambiar estructura de archivos CSS
4. Testing¶
✅ Hacer: - Agregar tests con pytest - Usar model-bakery para fixtures - Tests unitarios y de integración
❌ NO hacer: - Ignorar tests al agregar código nuevo - Commitear código que rompa tests existentes
5. Pull Requests¶
El agente debe generar PRs con:
Título: feat/fix/docs: descripción corta
Descripción mínima:
## Resumen
1-2 líneas del cambio.
## Cambios
- Lista de cambios
- Bullet points
## Checklist
- [ ] Código compila
- [ ] No se rompen flujos SPA
- [ ] Imports ordenados (isort)
- [ ] Código formateado (black)
- [ ] Tests pasan
- [ ] Documentación actualizada
- [ ] No hay secretos
- [ ] requirements.txt actualizado (si aplica)
- [ ] Migraciones creadas (si aplica)
6. Migraciones¶
Si tocas modelos:
Incluir migraciones en el PR.
7. Dependencias¶
Si agregas dependencias:
- Agregarlas a
requirements.txt - Justificar en el PR
- Verificar compatibilidad
8. Seguridad¶
✅ Hacer: - Validar inputs del usuario - Usar Django ORM (previene SQL injection) - CSRF tokens en forms POST - Permisos en views (@login_required)
❌ NO hacer: - SQL queries crudos - Almacenar passwords en texto plano - Exponer secrets
Comandos Útiles¶
# Formatear código
black --line-length 90 .
isort .
# Tests
pytest
# Migraciones
python manage.py makemigrations
python manage.py migrate
# Servidor local
python manage.py runserver
# Shell Django
python manage.py shell
Escenarios Comunes¶
Agregar Nuevo Modelo¶
- Crear modelo en
app/models.py - Hacer migraciones
- Actualizar admin (si aplica)
- Agregar serializer (si hay API)
- Agregar tests
Agregar Nueva Vista¶
- Crear vista en
app/views.py - Agregar URL en
app/urls.py - Crear template
- Agregar permisos
- Agregar tests
Agregar Endpoint API¶
- Crear serializer en
app/serializers.py - Crear viewset en
app/viewsets.py - Registrar en router
- Documentar
- Agregar tests
CI/CD¶
Actualmente no hay pipeline CI/CD formal.
Tests pueden ejecutarse manualmente o en GitHub (si existe workflow).
Contacto¶
Si el agente encuentra ambigüedades o necesita decisiones arquitectónicas, debe:
- Dejar comentario en el código
- Agregar TODO con explicación
- Mencionar en la descripción del PR
Resumen para Agentes:
- Django monolítico, no microservicios
- SPA simulada con
js.js(NO tocar sin aprobación) - Formatear con black + isort
- Tests con pytest
- PRs descriptivos con checklist
- No introducir frameworks sin consultar
- Seguir estructura existente
Si el agente sigue estas reglas, el código será mergeable y no romperá el sistema.