Appearance
Backends: estructura
Aplica a auth-backend (IDP) y backend-seleccion-postulantes (SPS). Ambos son proyectos Django 5.2 con la misma organización.
Organización general
text
<backend>/
├── <proyecto>/ # Configuración del proyecto Django
│ ├── settings.py # Configuración (lee variables de .env)
│ ├── urls.py # Rutas raíz: schemas GraphQL, /api/v1/, docs, health
│ ├── *_schema.py # Composición de cada schema GraphQL
│ ├── api/ | api_router.py # Router de la API REST /api/v1/
│ ├── middleware/ # StandbyMiddleware y otros
│ └── wsgi.py
├── <app>/ # Una carpeta por módulo funcional (app Django)
├── scripts/ # Scripts para manage.py runscript
├── diagramas/ # Diagramas de modelos generados
├── manage.py # CLI de Django (con control SYSTEM_STATUS)
├── requirements.txt # Dependencias de desarrollo
├── requirements.prod.txt # Dependencias de la imagen Docker
├── .env.example # Plantilla de variables de entorno
├── Dockerfile · entrypoint.sh · nginx.conf| Backend | Carpeta del proyecto |
|---|---|
auth-backend | auth_interop_backend/ |
backend-seleccion-postulantes | seleccion_backend/ |
Estructura de una app
Cada app separa sus modelos, sus servicios y lo que expone en cada schema GraphQL:
text
<app>/
├── models.py # Modelos (tablas)
├── migrations/ # Migraciones de base de datos
├── services/ # Lógica de negocio (managers, conectores, utilidades)
├── admin_schema/ # Queries/mutations del schema administrativo
├── comision_schema/ # ... del schema de comisiones (SPS)
├── postulante_schema/ # ... del schema de postulantes (SPS)
├── estacion_examen_schema/ # ... del schema de estaciones (SPS)
├── main_schema/ · public_schema/ # ... schemas del IDP
├── api/ # API REST (IDP: views, serializers, openapi)
├── management/commands/ # Comandos de manage.py
├── templates/ # Plantillas (correos, documentos)
├── urls.py · views.py # Endpoints HTTP no GraphQL
└── admin.pySolo existen las carpetas de los schemas en los que participa la app. La lógica de negocio vive en services/; los resolvers GraphQL y las vistas REST la invocan.
Apps del IDP (auth-backend)
| App | Responsabilidad |
|---|---|
iam_core | Identidades: usuarios, identificadores de login, credenciales (contraseña, TOTP), proveedores de identidad federados, claims personalizados, registro |
authentication | Flujo de inicio de sesión (intentos de login, vinculación de identidades federadas) |
oauth2_eje | Servidor OAuth2: clientes, scopes, códigos de autorización, consentimientos, tokens y claves de firma |
oidc | OpenID Connect: discovery, JWKS, userinfo y definición de claims por scope |
aprobacion_documentos | Aprobación de documentos oficiales con firma digital o Ciudadanía Digital |
notificaciones | Solicitudes de notificación, destinatarios y envíos |
serve_private_files | Entrega controlada de archivos privados |
Apps del SPS (backend-seleccion-postulantes)
| App | Responsabilidad |
|---|---|
iam_core | Usuario local vinculado al IDP (UsuarioBase), accesos por portal, privilegios y sesiones |
catalogos | Catálogos geográficos (provincias, municipios) |
analitica_planillas | Planillas del Órgano Judicial y acefalías de jueces |
acciones_previas | Informes técnicos previos, analítica de acefalías y propuesta de plazas |
sgc | Sistema de Gestión de Calidad: procedimientos, registros, plantillas, formatos de CV, plazos y parámetros |
convocatorias | Convocatorias, ofertas departamentales, requisitos, méritos, fases y programación del examen |
resoluciones | Resoluciones administrativas y ampliaciones de plazo |
difusion | Avisos y archivos publicados en el sitio web institucional |
postulaciones | Datos del postulante, currículum, acreditaciones y postulaciones |
comisiones | Comisiones, subcomisiones, miembros, excusas y veedores |
trabajo_comisiones | Trabajo de las comisiones: sesiones, revisión DMH, calificación de méritos, examen de admisión y resultados por fase |
impugnaciones | Periodos de impugnación e impugnaciones de resultados |
conclusion_proceso | Informe final y postulantes admitidos |
reportes | Certificados de participación y reportes |
document_engine | Documentos de usuario, subida por segmentos y tokens de acceso a documentos |
aprobacion_documentos | Integración con la aprobación de documentos del IDP |
notificaciones | Integración con las notificaciones del IDP |
custodio_integration | Versiones de Custodio y cifrado/descifrado de bancos de preguntas |
interoperabilidad | API REST externa y servicios interoperables |
datos_historicos | Convocatorias y postulaciones de sistemas anteriores |
consultas | Preguntas frecuentes y casos de ayuda |
seeders | Datos de prueba y emuladores (solo entornos de prueba) |
Paquetes de soporte (no son apps con modelos):
| Paquete | Uso |
|---|---|
idp_api_client | Cliente de las APIs REST del IDP (directorio, aprobación, notificaciones) |
website_api | Cliente de la API del sitio web institucional (avisos y archivos) |
serve_private_files | Entrega controlada de archivos privados |
fixtures | Datos iniciales (servicios de interoperabilidad externa) |
El detalle de las tablas de cada app se describe en la sección de modelado de datos.
