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.

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#

  1. Configuración: instalar usando Docker o un entorno local

  2. Configurar: Establecer variables de entorno en .env

  3. Migrar: ejecutar migraciones de bases de datos

  4. Rellenar: Utilice hacer poblar para los datos de prueba

  5. Desarrollar: realizar cambios, ejecutar pruebas

  6. Prueba: Ejecute hacer prueba antes de confirmar

  7. Implementación: siga las guías de implementación

Secciones de documentación#

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 compartida

  • local.py - Configuración de desarrollo

  • test.py - Configuración de prueba

  • producció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?

  1. Bifurcar el repositorio

  2. Clonar tu tenedor

  3. Crear una rama de funciones

  4. Haz tus cambios

  5. Prueba a fondo

  6. Enviar una solicitud de extracción

Consulte: Guía para contribuyentes para obtener pautas detalladas.

Soporte y recursos#

¿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