Skip to content

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
BackendCarpeta del proyecto
auth-backendauth_interop_backend/
backend-seleccion-postulantesseleccion_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.py

Solo 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) ​

AppResponsabilidad
iam_coreIdentidades: usuarios, identificadores de login, credenciales (contraseña, TOTP), proveedores de identidad federados, claims personalizados, registro
authenticationFlujo de inicio de sesión (intentos de login, vinculación de identidades federadas)
oauth2_ejeServidor OAuth2: clientes, scopes, códigos de autorización, consentimientos, tokens y claves de firma
oidcOpenID Connect: discovery, JWKS, userinfo y definición de claims por scope
aprobacion_documentosAprobación de documentos oficiales con firma digital o Ciudadanía Digital
notificacionesSolicitudes de notificación, destinatarios y envíos
serve_private_filesEntrega controlada de archivos privados

Apps del SPS (backend-seleccion-postulantes) ​

AppResponsabilidad
iam_coreUsuario local vinculado al IDP (UsuarioBase), accesos por portal, privilegios y sesiones
catalogosCatálogos geográficos (provincias, municipios)
analitica_planillasPlanillas del Órgano Judicial y acefalías de jueces
acciones_previasInformes técnicos previos, analítica de acefalías y propuesta de plazas
sgcSistema de Gestión de Calidad: procedimientos, registros, plantillas, formatos de CV, plazos y parámetros
convocatoriasConvocatorias, ofertas departamentales, requisitos, méritos, fases y programación del examen
resolucionesResoluciones administrativas y ampliaciones de plazo
difusionAvisos y archivos publicados en el sitio web institucional
postulacionesDatos del postulante, currículum, acreditaciones y postulaciones
comisionesComisiones, subcomisiones, miembros, excusas y veedores
trabajo_comisionesTrabajo de las comisiones: sesiones, revisión DMH, calificación de méritos, examen de admisión y resultados por fase
impugnacionesPeriodos de impugnación e impugnaciones de resultados
conclusion_procesoInforme final y postulantes admitidos
reportesCertificados de participación y reportes
document_engineDocumentos de usuario, subida por segmentos y tokens de acceso a documentos
aprobacion_documentosIntegración con la aprobación de documentos del IDP
notificacionesIntegración con las notificaciones del IDP
custodio_integrationVersiones de Custodio y cifrado/descifrado de bancos de preguntas
interoperabilidadAPI REST externa y servicios interoperables
datos_historicosConvocatorias y postulaciones de sistemas anteriores
consultasPreguntas frecuentes y casos de ayuda
seedersDatos de prueba y emuladores (solo entornos de prueba)

Paquetes de soporte (no son apps con modelos):

PaqueteUso
idp_api_clientCliente de las APIs REST del IDP (directorio, aprobación, notificaciones)
website_apiCliente de la API del sitio web institucional (avisos y archivos)
serve_private_filesEntrega controlada de archivos privados
fixturesDatos iniciales (servicios de interoperabilidad externa)

El detalle de las tablas de cada app se describe en la sección de modelado de datos.