# carlmors/mapa-talento-back architecture

> Architecture diagram of the GitHub repository carlmors/mapa-talento-back, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/carlmors/mapa-talento-back
- Repository: https://github.com/carlmors/mapa-talento-back

## Overview

MapaTalento es una API para gestionar información de colaboradores con definiciones versionadas, consentimientos y una integración ETB. El recorrido principal va desde solicitudes HTTP autenticadas hacia las rutas de colaboradores, que aplican reglas de lectura y escritura, y persisten los cambios con auditoría en una unidad de trabajo compartida. También hay capacidades de publicación de formularios, catálogos y acceso de emergencia. El árbol y los extractos respaldan solo parte del cableado: las relaciones no verificables se omiten; las funciones de módulos no muestreados se muestran sin atribuirles llamadas concretas.

Main entry points: [`src/Modules/Colaboradores/Api/RutasColaboradores.cs`](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Api/RutasColaboradores.cs) (Rutas colaboradores), [`src/MapaTalento.Api/Program.cs`](https://github.com/carlmors/mapa-talento-back/blob/main/src/MapaTalento.Api/Program.cs) (Host API), [`src/Modules/Formularios/Api/RutasFormularios.cs`](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Api/RutasFormularios.cs) (Rutas formularios), [`src/Modules/Consentimientos/Dominio/ServicioConsentimientos.cs`](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Consentimientos/Dominio/ServicioConsentimientos.cs) (Servicio consentimientos)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API e identidad"]
  node_host["Host API<br/>[Program.cs]"]
  node_identity["Autenticación"]
  node_session["Sesión ETB"]
  node_roles["Roles y políticas<br/>[Roles.cs]"]
  node_admin["Administración"]
end

subgraph group_colab["Gestión colaboradores"]
  node_collab_routes["Rutas colaboradores"]
  node_profile["Fichas y bloques<br/>[ServicioFichas.cs]"]
  node_sensitive["Lectura sensible"]
  node_validation["Validar respuestas"]
  node_children["Datos de hijos<br/>[Hijos.cs]"]
end

subgraph group_form["Formularios y catálogos"]
  node_forms_routes["Rutas formularios"]
  node_form_definition["Definiciones formulario"]
  node_definition_repo["Repositorio definiciones"]
  node_publication["Publicación definición"]
  node_catalog["Catálogo de campos<br/>[CatalogoCampos.cs]"]
end

subgraph group_consent["Consentimientos y auditoría"]
  node_consent_service["Servicio consentimientos"]
  node_consent_text["Textos consentimiento"]
  node_audit["Auditoría<br/>[Auditoria.cs]"]
  node_unit["Unidad de trabajo"]
end

subgraph group_integr["Integraciones y emergencia"]
  node_etb_routes["Rutas integración ETB"]
  node_etb_access["Acceso ETB"]
  node_etb_context["Contexto de acceso"]
  node_emergency["Censo emergencia<br/>[ServicioCenso.cs]"]
end

node_user(("Cliente API"))
node_db[("Base de datos")]

node_user -->|"envía solicitudes"| node_host
node_host -->|"mapea rutas"| node_forms_routes
node_host -->|"carga definición"| node_publication
node_collab_routes -->|"invoca servicios"| node_profile
node_collab_routes -->|"consulta política"| node_sensitive
node_collab_routes -->|"valida respuestas"| node_validation
node_collab_routes -->|"consulta campos"| node_catalog
node_collab_routes -->|"gestiona permisos"| node_consent_service
node_forms_routes -->|"consulta definiciones"| node_definition_repo
node_forms_routes -->|"solicita publicación"| node_publication
node_forms_routes -->|"construye definición"| node_form_definition
node_definition_repo -->|"lee y escribe"| node_db
node_definition_repo -->|"materializa catálogo"| node_catalog
node_publication -->|"usa repositorio"| node_definition_repo
node_publication -->|"actualiza caché"| node_catalog
node_consent_service -->|"lee textos vigentes"| node_consent_text
node_consent_service -->|"registra acciones"| node_audit
node_consent_service -->|"confirma cambios"| node_unit
node_unit -->|"guarda cambios"| node_db
node_host -->|"configura contexto"| node_db
node_etb_routes -.->|"invoca acceso"| node_etb_access
node_etb_access -->|"valida identidad"| node_etb_context

click node_host "https://github.com/carlmors/mapa-talento-back/blob/main/src/MapaTalento.Api/Program.cs"
click node_identity "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Identidad/AutenticacionHandler.cs"
click node_session "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Identidad/SesionIntegracionHandler.cs"
click node_roles "https://github.com/carlmors/mapa-talento-back/blob/main/src/Shared/MapaTalento.Shared/Autorizacion/Roles.cs"
click node_collab_routes "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Api/RutasColaboradores.cs"
click node_profile "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Dominio/ServicioFichas.cs"
click node_sensitive "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Dominio/PoliticaLecturaSensible.cs"
click node_validation "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Validacion/ValidadorRespuestas.cs"
click node_children "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Dominio/Hijos.cs"
click node_forms_routes "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Api/RutasFormularios.cs"
click node_form_definition "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Dominio/DefinicionFormulario.cs"
click node_definition_repo "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Persistencia/RepositorioDefiniciones.cs"
click node_publication "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Persistencia/ServicioPublicacionDefinicion.cs"
click node_catalog "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Catalogos/Dominio/CatalogoCampos.cs"
click node_consent_service "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Consentimientos/Dominio/ServicioConsentimientos.cs"
click node_consent_text "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Consentimientos/Dominio/TextosConsentimiento.cs"
click node_audit "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Auditoria/Dominio/Auditoria.cs"
click node_db "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Persistencia/MapaTalentoDbContext.cs"
click node_etb_routes "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/IntegracionEtb/Api/RutasIntegracionEtb.cs"
click node_etb_access "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/IntegracionEtb/ServicioAccesoEtb.cs"
click node_etb_context "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/IntegracionEtb/Dominio/ContextoAccesoEtb.cs"
click node_emergency "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Emergencia/Dominio/ServicioCenso.cs"
click node_admin "https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Administracion/Api/RutasAdministracion.cs"
click node_unit "https://github.com/carlmors/mapa-talento-back/blob/main/src/Shared/MapaTalento.Shared/Persistencia/IUnidadDeTrabajo.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_host,node_identity,node_session,node_roles,node_admin,node_user toneBlue
class node_collab_routes,node_profile,node_sensitive,node_validation,node_children,node_db toneAmber
class node_forms_routes,node_form_definition,node_definition_repo,node_publication,node_catalog toneMint
class node_consent_service,node_consent_text,node_audit,node_unit toneRose
class node_etb_routes,node_etb_access,node_etb_context,node_emergency toneIndigo
```

## Components

### API e identidad

- [Host API](https://github.com/carlmors/mapa-talento-back/blob/main/src/MapaTalento.Api/Program.cs): `src/MapaTalento.Api/Program.cs`
- [Autenticación](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Identidad/AutenticacionHandler.cs): `src/Modules/Identidad/AutenticacionHandler.cs`
- [Sesión ETB](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Identidad/SesionIntegracionHandler.cs): `src/Modules/Identidad/SesionIntegracionHandler.cs`
- [Roles y políticas](https://github.com/carlmors/mapa-talento-back/blob/main/src/Shared/MapaTalento.Shared/Autorizacion/Roles.cs): `src/Shared/MapaTalento.Shared/Autorizacion/Roles.cs`
- [Administración](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Administracion/Api/RutasAdministracion.cs): `src/Modules/Administracion/Api/RutasAdministracion.cs`

### Gestión colaboradores

- [Rutas colaboradores](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Api/RutasColaboradores.cs): `src/Modules/Colaboradores/Api/RutasColaboradores.cs`
- [Fichas y bloques](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Dominio/ServicioFichas.cs): `src/Modules/Colaboradores/Dominio/ServicioFichas.cs`
- [Lectura sensible](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Dominio/PoliticaLecturaSensible.cs): `src/Modules/Colaboradores/Dominio/PoliticaLecturaSensible.cs`
- [Validar respuestas](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Validacion/ValidadorRespuestas.cs): `src/Modules/Colaboradores/Validacion/ValidadorRespuestas.cs`
- [Datos de hijos](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Dominio/Hijos.cs): `src/Modules/Colaboradores/Dominio/Hijos.cs`

### Formularios y catálogos

- [Rutas formularios](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Api/RutasFormularios.cs): `src/Modules/Formularios/Api/RutasFormularios.cs`
- [Definiciones formulario](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Dominio/DefinicionFormulario.cs): `src/Modules/Formularios/Dominio/DefinicionFormulario.cs`
- [Repositorio definiciones](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Persistencia/RepositorioDefiniciones.cs): `src/Modules/Formularios/Persistencia/RepositorioDefiniciones.cs`
- [Publicación definición](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Formularios/Persistencia/ServicioPublicacionDefinicion.cs): `src/Modules/Formularios/Persistencia/ServicioPublicacionDefinicion.cs`
- [Catálogo de campos](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Catalogos/Dominio/CatalogoCampos.cs): `src/Modules/Catalogos/Dominio/CatalogoCampos.cs`

### Consentimientos y auditoría

- [Servicio consentimientos](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Consentimientos/Dominio/ServicioConsentimientos.cs): `src/Modules/Consentimientos/Dominio/ServicioConsentimientos.cs`
- [Textos consentimiento](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Consentimientos/Dominio/TextosConsentimiento.cs): `src/Modules/Consentimientos/Dominio/TextosConsentimiento.cs`
- [Auditoría](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Auditoria/Dominio/Auditoria.cs): `src/Modules/Auditoria/Dominio/Auditoria.cs`
- [Unidad de trabajo](https://github.com/carlmors/mapa-talento-back/blob/main/src/Shared/MapaTalento.Shared/Persistencia/IUnidadDeTrabajo.cs): `src/Shared/MapaTalento.Shared/Persistencia/IUnidadDeTrabajo.cs`

### Integraciones y emergencia

- [Rutas integración ETB](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/IntegracionEtb/Api/RutasIntegracionEtb.cs): `src/Modules/IntegracionEtb/Api/RutasIntegracionEtb.cs`
- [Acceso ETB](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/IntegracionEtb/ServicioAccesoEtb.cs): `src/Modules/IntegracionEtb/ServicioAccesoEtb.cs`
- [Contexto de acceso](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/IntegracionEtb/Dominio/ContextoAccesoEtb.cs): `src/Modules/IntegracionEtb/Dominio/ContextoAccesoEtb.cs`
- [Censo emergencia](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Emergencia/Dominio/ServicioCenso.cs): `src/Modules/Emergencia/Dominio/ServicioCenso.cs`

### Other components

- **Cliente API**
- [Base de datos](https://github.com/carlmors/mapa-talento-back/blob/main/src/Modules/Colaboradores/Persistencia/MapaTalentoDbContext.cs): `src/Modules/Colaboradores/Persistencia/MapaTalentoDbContext.cs`

## Connections

- Cliente API → Host API: envía solicitudes (evidence: `src/MapaTalento.Api/Program.cs`)
- Host API → Rutas formularios: mapea rutas (evidence: `src/MapaTalento.Api/Program.cs`)
- Host API → Publicación definición: carga definición (evidence: `src/MapaTalento.Api/Program.cs`)
- Rutas colaboradores → Fichas y bloques: invoca servicios (evidence: `src/Modules/Colaboradores/Api/RutasColaboradores.cs`)
- Rutas colaboradores → Lectura sensible: consulta política (evidence: `src/Modules/Colaboradores/Api/RutasColaboradores.cs`)
- Rutas colaboradores → Validar respuestas: valida respuestas
- Rutas colaboradores → Catálogo de campos: consulta campos (evidence: `src/Modules/Colaboradores/Api/RutasColaboradores.cs`)
- Rutas colaboradores → Servicio consentimientos: gestiona permisos (evidence: `src/Modules/Colaboradores/Api/RutasColaboradores.cs`)
- Rutas formularios → Repositorio definiciones: consulta definiciones (evidence: `src/Modules/Formularios/Api/RutasFormularios.cs`)
- Rutas formularios → Publicación definición: solicita publicación (evidence: `src/Modules/Formularios/Api/RutasFormularios.cs`)
- Rutas formularios → Definiciones formulario: construye definición (evidence: `src/Modules/Formularios/Api/RutasFormularios.cs`)
- Repositorio definiciones → Base de datos: lee y escribe (evidence: `src/Modules/Formularios/Persistencia/RepositorioDefiniciones.cs`)
- Repositorio definiciones → Catálogo de campos: materializa catálogo (evidence: `src/Modules/Formularios/Persistencia/RepositorioDefiniciones.cs`)
- Publicación definición → Repositorio definiciones: usa repositorio (evidence: `src/Modules/Formularios/Persistencia/ServicioPublicacionDefinicion.cs`)
- Publicación definición → Catálogo de campos: actualiza caché (evidence: `src/Modules/Formularios/Persistencia/ServicioPublicacionDefinicion.cs`)
- Servicio consentimientos → Textos consentimiento: lee textos vigentes (evidence: `src/Modules/Consentimientos/Dominio/ServicioConsentimientos.cs`)
- Servicio consentimientos → Auditoría: registra acciones (evidence: `src/Modules/Consentimientos/Dominio/ServicioConsentimientos.cs`)
- Servicio consentimientos → Unidad de trabajo: confirma cambios (evidence: `src/Modules/Consentimientos/Dominio/ServicioConsentimientos.cs`)
- Unidad de trabajo → Base de datos: guarda cambios (evidence: `src/Modules/Colaboradores/Persistencia/MapaTalentoDbContext.cs`)
- Host API → Base de datos: configura contexto (evidence: `src/MapaTalento.Api/Program.cs`)
- Rutas integración ETB → Acceso ETB: invoca acceso
- Acceso ETB → Contexto de acceso: valida identidad (evidence: `src/Modules/IntegracionEtb/ServicioAccesoEtb.cs`)
