Sistema de Gestion Integral para Mantenimiento de Lineas de Transmision
TransMaint es una plataforma completa para la gestion de operaciones de mantenimiento en lineas de transmision electrica. Permite la planificacion, ejecucion y seguimiento de actividades de mantenimiento con soporte para trabajo en campo, geolocalizacion, captura de evidencias y generacion de reportes.
- Backend: Django 5.1 con Python 3.12
- Base de Datos: PostgreSQL 16 con PostGIS (soporte geoespacial)
- Cache/Broker: Redis 7
- Tareas Asincronas: Celery
- API: Django Ninja (OpenAPI/Swagger)
- Autenticacion: JWT (JSON Web Tokens)
- Almacenamiento: Google Cloud Storage
- Reportes: WeasyPrint (PDF), OpenPyXL (Excel)
- Python 3.12+
- PostgreSQL 16+ con PostGIS
- Redis 7+
- GDAL (para GeoDjango)
-
Clonar el repositorio
git clone https://github.com/Indunnova16/Instelec.git cd Instelec -
Crear entorno virtual
python -m venv venv source venv/bin/activate # Linux/macOS # o venv\Scripts\activate # Windows
-
Instalar dependencias
pip install -r requirements/local.txt
-
Configurar variables de entorno
cp .env.example .env # Editar .env con tus configuraciones -
Ejecutar migraciones
python manage.py migrate
-
Crear superusuario
python manage.py createsuperuser
-
Cargar datos iniciales (opcional)
python manage.py seed_data
-
Iniciar servidor de desarrollo
python manage.py runserver
El proyecto incluye un Makefile con comandos utiles:
make install # Instalar dependencias
make migrate # Ejecutar migraciones
make run # Iniciar servidor de desarrollo
make test # Ejecutar todos los tests
make coverage # Tests con reporte de cobertura
make lint # Verificar codigo con ruff
make format # Formatear codigo con ruff
make clean # Limpiar archivos temporales| Variable | Descripcion | Ejemplo |
|---|---|---|
DEBUG |
Modo debug | True |
SECRET_KEY |
Clave secreta Django | your-secret-key |
DJANGO_SETTINGS_MODULE |
Modulo de configuracion | config.settings.local |
DATABASE_URL |
URL de conexion PostgreSQL/PostGIS | postgis://user:pass@localhost:5432/transmaint |
REDIS_URL |
URL de conexion Redis | redis://localhost:6379/0 |
GS_BUCKET_NAME |
Bucket de Google Cloud Storage | transmaint-media |
GOOGLE_APPLICATION_CREDENTIALS |
Ruta a credenciales GCS | /path/to/credentials.json |
SENTRY_DSN |
DSN de Sentry (opcional) | https://xxx@sentry.io/xxx |
EMAIL_HOST |
Servidor SMTP | smtp.gmail.com |
EMAIL_PORT |
Puerto SMTP | 587 |
EMAIL_HOST_USER |
Usuario SMTP | user@gmail.com |
EMAIL_HOST_PASSWORD |
Password SMTP | app-password |
ALLOWED_HOSTS |
Hosts permitidos | localhost,127.0.0.1 |
CORS_ALLOWED_ORIGINS |
Origenes CORS permitidos | http://localhost:3000 |
JWT_ACCESS_TOKEN_LIFETIME |
Duracion token acceso (minutos) | 60 |
JWT_REFRESH_TOKEN_LIFETIME |
Duracion refresh token (minutos) | 1440 |
transmaint/
├── apps/ # Aplicaciones Django
│ ├── actividades/ # Gestion de actividades programadas
│ ├── ambiental/ # Modulo ambiental y reportes
│ ├── api/ # Configuracion API (Django Ninja)
│ ├── campo/ # Registros de campo y evidencias
│ ├── core/ # Modelos base y utilidades
│ ├── cuadrillas/ # Gestion de cuadrillas y vehiculos
│ ├── financiero/ # Modulo financiero y costos
│ ├── indicadores/ # KPIs y metricas
│ ├── lineas/ # Lineas de transmision y torres
│ └── usuarios/ # Autenticacion y usuarios
├── config/ # Configuracion Django
│ ├── settings/ # Configuraciones por ambiente
│ ├── celery.py # Configuracion Celery
│ ├── urls.py # URLs principales
│ └── wsgi.py # WSGI entry point
├── docs/ # Documentacion
│ └── API.md # Documentacion de la API
├── infrastructure/ # Configuracion de infraestructura
├── mobile/ # Recursos para app movil
├── requirements/ # Dependencias por ambiente
│ ├── base.txt # Dependencias base
│ ├── local.txt # Dependencias desarrollo
│ └── production.txt # Dependencias produccion
├── templates/ # Templates HTML
├── tests/ # Tests
│ ├── e2e/ # Tests end-to-end
│ ├── factories/ # Factories para tests
│ ├── integration/ # Tests de integracion
│ └── unit/ # Tests unitarios
├── .env.example # Ejemplo de variables de entorno
├── conftest.py # Configuracion pytest
├── manage.py # CLI Django
├── Makefile # Comandos make
└── pyproject.toml # Configuracion del proyecto
Gestion de la infraestructura de lineas de transmision, incluyendo:
- Registro de lineas con datos tecnicos (tension, longitud, cliente)
- Torres con coordenadas GPS y poligonos de servidumbre
- Validacion de ubicacion en campo mediante geofencing
Programacion y seguimiento de actividades de mantenimiento:
- Tipos de actividad configurables con formularios dinamicos
- Programacion mensual por linea
- Estados de seguimiento (pendiente, en curso, completada)
- Asignacion a cuadrillas
Captura de informacion en campo con la app movil:
- Registros de campo con geolocalizacion
- Evidencias fotograficas con validacion
- Firma digital del responsable
- Sincronizacion offline/online
Gestion de equipos de trabajo:
- Cuadrillas con supervisor y miembros
- Vehiculos asignados
- Tracking de ubicacion en tiempo real
Metricas y KPIs del proyecto:
- Avance de actividades
- Cumplimiento de programacion
- Costos y rendimiento
La API REST esta documentada con OpenAPI/Swagger. Una vez el servidor este corriendo:
- Swagger UI: http://localhost:8000/api/docs
- Documentacion detallada: docs/API.md
Para procesamiento de tareas asincronas (evidencias, reportes):
celery -A config worker -l infoPara tareas programadas:
celery -A config beat -l info# Todos los tests
make test
# Solo tests unitarios
make test-unit
# Solo tests de integracion
make test-int
# Tests E2E
make test-e2e
# Con cobertura
make coverage-
Crear una rama desde
developgit checkout -b feature/mi-feature
-
Hacer commits siguiendo conventional commits
git commit -m "feat: agregar nueva funcionalidad" -
Ejecutar linter y tests antes de hacer push
make check make test -
Crear Pull Request hacia
develop
- Usar
ruffpara linting y formateo - Seguir PEP 8
- Documentar funciones y clases con docstrings
- Escribir tests para nueva funcionalidad
Copyright (c) 2025 Indunnova S.A.S. Todos los derechos reservados.
Este software es propietario y confidencial. No esta permitida su distribucion, modificacion o uso sin autorizacion expresa por escrito de Indunnova S.A.S.