Documentación del desarrollador#
¡Bienvenido a la documentación para desarrolladores de Construbot! Esta sección proporciona información técnica para desarrolladores que desean instalar, implementar o ampliar Construbot.
Nota
¿Busca documentación de usuario? Consulte Guía del Usuario en su lugar.
Enlaces rápidos#
Descripción técnica#
Pila de tecnología:
Marco: Django 3.2.19
Idioma: Python >=3.9.17
Base de datos: PostgreSQL
Caché/Cola: Redis
Cola de tareas: Apio 5.2.7
API: Marco REST de Django + SimpleJWT
Frontend: Bootstrap 4 + jQuery
Características clave:
Arquitectura multiinquilino (Cliente → Empresa → Usuario)
Estructuras de datos jerárquicas (django-treebeard)
Autenticación API basada en JWT
Widgets de autocompletar (django-autocomplete-light)
generación de PDF
Importación/exportación de Excel
Procesamiento de tareas de apio
Estructura del proyecto#
construbot/
├── construbot/
│ ├── config/ # Django settings
│ │ └── settings/
│ │ ├── base.py
│ │ ├── local.py
│ │ ├── test.py
│ │ └── production.py
│ ├── users/ # Custom user model
│ ├── proyectos/ # Core business logic
│ ├── core/ # Shared utilities
│ ├── api/ # REST API
│ ├── account_config/ # Account configuration
│ ├── taskapp/ # Celery configuration
│ ├── static/ # Static files
│ ├── media/ # User uploads
│ └── templates/ # Django templates
├── requirements/ # Dependencies
├── tests/ # Test suite
├── docs/ # Documentation
├── manage.py
├── setup.py
└── Makefile # Development commands
Inicio rápido#
Para Docker:
# Clone repository
git clone https://github.com/javier-llamas/construbot.git
cd construbot
# Build and start
make buildev
# Create superuser
make superuser
# Access at http://localhost:8000
Para Desarrollo Local:
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\\Scripts\\activate
# Install dependencies
pip install -r requirements/local.txt
# Run migrations
python manage.py migrate
# Run server
make runserver
Consulte: Instalación para obtener instrucciones detalladas.
Flujo de trabajo de desarrollo#
Configuración: instalar usando Docker o un entorno local
Configurar: Establecer variables de entorno en
.envMigrar: ejecutar migraciones de bases de datos
Rellenar: Utilice
hacer poblarpara los datos de pruebaDesarrollar: realizar cambios, ejecutar pruebas
Prueba: Ejecute
hacer pruebaantes de confirmarImplementación: siga las guías de implementación
Secciones de documentación#
- Instalación
- Despliegue
- Descripción general
- Opciones de implementación
- Inicio rápido (Docker + AWS EC2)
- Requisitos previos
- Guías de implementación
- Proceso paso a paso
- Arquitectura de producción
- Copia de seguridad y restauración
- Consideraciones de escala
- Refuerzo de seguridad
- Monitoreo y registro
- Solución de problemas
- Ver también
- Arquitectura
- API
- Modelos
- Modo biblioteca
Conceptos clave para desarrolladores#
Multi-inquilino#
Construbot utiliza una jerarquía de tres niveles:
Cliente (usuarios.modelos.Cliente) - Cuenta de nivel superior
Empresa (usuarios.modelos.Empresa) - Entidad comercial
Usuario (usuarios.modelos.Usuario) - Individuo con permisos
Todos los modelos de datos tienen como ámbito de aislamiento una empresa.
Más información: arquitectura/multi-inquilino
Modelo de usuario personalizado#
AUTH_USER_MODEL = 'usuarios.Usuario'
Autenticación basada en correo electrónico (no nombre de usuario)
Relaciones con la empresa (muchos a muchos)
Niveles de permiso (1-6)
Seguimiento de la empresa actualmente activa
Más información: modelos/usuarios
Estructura de configuración#
Configuraciones basadas en el entorno en construbot/config/settings/:
base.py- Configuración compartidalocal.py- Configuración de desarrollotest.py- Configuración de pruebaproducción.py- Configuración de producción
Controlado mediante la variable de entorno DJANGO_SETTINGS_MODULE.
Más información: arquitectura/configuración-estructura
Modelos Jerárquicos#
El modelo Contrato utiliza la Ruta Materializada de django-treebeard para relaciones jerárquicas:
Contratos matrices con subcontratos
Consultas de árbol para agregación financiera.
Mover operaciones para reorganización
Más información: modelos/proyectos
Autenticación API#
La API REST utiliza tokens JWT:
# Obtain token
curl -X POST /api/v1/api-token-auth/ \\
-d "email=user@example.com&password=secret"
# Use token
curl -H "Authorization: Bearer <token>" \\
/api/v1/...
Más información: api/authentication
Modo biblioteca#
Establezca CONSTRUBOT_AS_LIBRARY=True en:
Deshabilitar funciones independientes (administrador, cuentas)
Utilice Construbot como una aplicación Django en su proyecto
Integrar con la autenticación existente
Más información: modo-biblioteca
Herramientas de desarrollo#
Comandos de archivos Make#
El proyecto incluye un Makefile completo:
make dev # Start development environment
make buildev # Build and start with local settings
make test # Run full test suite with coverage
make migrations # Create and apply migrations
make superuser # Create Django superuser
make poblar # Populate database with test data
make shell # Run Django shell
make clean # Remove containers
make cleandb # Remove database
make runserver # Run without Docker
Referencia completa: Comandos de archivos Make
Pruebas#
# Run all tests with coverage
make test
# Run with warnings
make warningtest
# Run specific tag
make current # Runs tests tagged with @tag('current')
# Local testing (no Docker)
make localtest
Más información: Pruebas
Calidad del código#
Estilo: Sigue PEP 8
Cadenas de documentos: estilo Google/NumPy
Sugerencias de tipo: recomendado pero no obligatorio
Pruebas: Apunta a una cobertura >80%
Más información: Estilo de código
Contribuyendo#
¿Quieres contribuir a Construbot?
Bifurcar el repositorio
Clonar tu tenedor
Crear una rama de funciones
Haz tus cambios
Prueba a fondo
Enviar una solicitud de extracción
Consulte: Guía para contribuyentes para obtener pautas detalladas.
Soporte y recursos#
Repositorio GitHub: https://github.com/javier-llamas/construbot
Seguimiento de problemas: https://github.com/javier-llamas/construbot/issues
Licencia: Licencia pública general GNU Affero v3 (AGPLv3)
Documentación: https://construbot.readthedocs.io
¿Necesitar ayuda?#
Problemas de instalación: consulte Instalación
Problemas de implementación: Verifique Despliegue
Preguntas sobre API: Revisión API
Informes de errores: /contributor/issue-reporting