-
Notifications
You must be signed in to change notification settings - Fork 0
REFACTORING_PR
juanb edited this page Dec 13, 2025
·
1 revision
Reestructurar el proyecto SecInterp siguiendo las mejores prácticas de desarrollo de plugins QGIS, mejorando la mantenibilidad, escalabilidad y calidad del código.
sec_interp/
├── core/ # Lógica de negocio
│ ├── __init__.py
│ ├── algorithms.py # (antes: sec_interp.py)
│ ├── utils.py # (antes: si_core_utils.py)
│ └── validation.py # (antes: validation_utils.py)
├── gui/ # Interfaz de usuario
│ ├── __init__.py
│ ├── main_dialog.py # (antes: sec_interp_dialog.py)
│ ├── preview_renderer.py
│ └── ui/ # Archivos UI compilados
│ ├── __init__.py
│ ├── main_dialog_base.py
│ └── main_dialog_base.ui
├── resources/ # Recursos (iconos, QRC)
│ ├── __init__.py
│ ├── resources.py
│ └── resources.qrc
├── tests/ # Tests (NUEVO)
│ ├── __init__.py
│ ├── conftest.py
│ ├── test_algorithms.py
│ ├── test_validation.py
│ └── test_integration.py
├── scripts/ # Scripts de build
│ ├── deploy.sh
│ ├── compile-strings.sh
│ └── fix-ui-syntax.sh
└── .github/
└── workflows/
└── test.yml # CI/CD (NUEVO)
- ✅ Creación de paquetes
core/,gui/,resources/ - ✅ Organización lógica de archivos por responsabilidad
- ✅ Archivos
__init__.pycon exports explícitos
- ✅ Directorio
tests/con configuración QGIS - ✅ Tests unitarios iniciales (3 tests pasando)
- ✅ GitHub Actions workflow para CI
- ✅ Pylint score: 8.33 → 10.00
- ✅ Imports actualizados a rutas relativas
- ✅ Configuración
.pylintrcoptimizada
- ✅
Makefileactualizado - ✅
scripts/deploy.shrefactorizado - ✅
.gitignoremejorado
| Métrica | Antes | Después |
|---|---|---|
| Estructura | Plana | Modular |
| Tests | 0 | 3 |
| Pylint | 8.33 | 10.00 |
| Archivos raíz | ~15 | ~5 |
Antes:
from .sec_interp import SecInterp
from . import si_core_utils as scu
from . import validation_utils as vuDespués:
from .core.algorithms import SecInterp
from .core import utils as scu
from .core import validation as vuMakefile:
- Actualizado
SOURCESyPY_FILEScon nuevas rutas - Modificado
UI_FILESagui/ui/main_dialog_base.ui - Actualizado
COMPILED_RESOURCE_FILESaresources/resources.py
deploy.sh:
- Refactorizado para copiar estructura de directorios
- Soporte para paquetes
core/,gui/,resources/ - Creación automática de subdirectorios
- Tests unitarios pasando (3/3)
- Imports corregidos
- Scripts de build actualizados
-
make deployfuncional - Plugin cargado en QGIS (pendiente validación)
- Validar carga del plugin en QGIS
- Ejecutar flujo completo de trabajo
- Añadir más tests de integración
- Documentar API de módulos core
-
Refactor: Restructure project layout following best practices
- Movimiento de archivos a nueva estructura
- Creación de paquetes y
__init__.py - Actualización de scripts de build
- Configuración de tests y CI/CD
-
Fix: Add missing PreviewRenderer import in core/algorithms.py
- Corrección de import faltante
- Resolución de NameError al cargar plugin