| Metadato | Valor |
|---|---|
| Version | 1.1.0 |
| Fecha | 2026-03-04 |
| Autor | Carlos Torres / Centrica Solutions Team |
| Estado | Vigente |
| Clasificacion | Documento Interno - Confidencial |
Nebula ERP es un sistema empresarial modular construido sobre el framework Simappe, disenado para entidades gubernamentales y empresas privadas en Colombia. Implementa una arquitectura de microservicios con soporte multi-tenant a nivel de base de datos, comunicacion asincrona via Kafka, y un ecosistema completo de servicios de infraestructura.
| Concepto | Cantidad |
|---|---|
| Total de repositorios | 32 |
| Servicios Simappe (framework) | 10 |
| Librerias Nebula (core) | 3 |
| Servicios transversales | 3 |
| Microservicios de dominio | 16 |
| Dominios de negocio | 5 |
| Esquemas de base de datos | 12 |
| Modulos propuestos (futuro) | 5 |
SIMAPPE FRAMEWORK (base)
├── Librerias: SimappeModel, SimappeCommons
├── Servidores: EurekaServer, ConfigServer, GatewayServer, Oauth2Server
├── Modulos: SimappeAdmin, SimappeClient
├── Config: SimappeConfig (repositorio git)
└── Herramientas: SimappeArchetype
NEBULA ERP (negocio)
├── Librerias Core: nebula-models, nebula-commons, nebula-shared
├── Transversales: nebula-masters, nebula-file-storage, nebula-notifications
└── Dominios:
├── Inventario: product-catalog, inventory-ops, purchasing, fixed-assets
├── Finanzas: accounting-core, treasury, tax-core, tax-collection
├── Comercio: invoicing, electronic-billing
├── Gobierno: budget-core, budget-execution, contracts-core, contracts-management
└── Personas: hr-core, payroll-settlement
Cada servicio debe ser lo suficientemente pequeno para ser mantenido por 2-3 personas, pero lo suficientemente grande para justificar un ciclo de vida independiente.
Se evitan servicios gigantes como nebula-accounting. Cada dominio se divide por Bounded Context con maximo 2-3 servicios por dominio.
Todos los servicios Nebula se construyen sobre dos librerias base obligatorias:
Los servicios se separan por dominio de negocio (Domain-Driven Design), NO por capa tecnica.
Cada dominio tiene su propio esquema de base de datos para aislamiento fisico.
| Componente | Tecnologia | Version |
|---|---|---|
| Lenguaje | Java | 25 |
| Framework | Spring Boot | 3.5.11 |
| Cloud | Spring Cloud | 2025.0.0 |
| Build | Maven | 3.8.7+ |
| BD Relacional (Simappe) | PostgreSQL | 16+ |
| BD Relacional (Nebula) | Oracle Database | 21c |
| BD Documental | MongoDB | 7+ |
| Cache | Redis | 7+ |
| Mensajeria | Apache Kafka | 3.7+ |
| Service Discovery | Netflix Eureka | (Spring Cloud) |
| Config Server | Spring Cloud Config | (Git-backed) |
| API Gateway | Spring Cloud Gateway | WebFlux |
| Autenticacion | JWT + OAuth2 Custom | jjwt 0.12.6 |
| Object Storage | MinIO | 8.5.14 |
| Monitoreo | Micrometer + Prometheus | - |
| API Docs | SpringDoc OpenAPI | 2.8.5 |
| Container Runtime | Docker | - |
| Base Image | eclipse-temurin:25-jre-alpine | Multi-stage |
| ORM | Hibernate 6 | community-dialects |
| Mapping | MapStruct + ModelMapper | 1.6.3 / 3.2.6 |
┌─────────────────────┐
│ CLIENTES │
│ (Angular/Mobile) │
└─────────┬───────────┘
│
┌─────────▼───────────┐
│ SimappeGateway │
│ (Spring Cloud GW) │
│ Puerto: 8090 │
└─────────┬───────────┘
│ JWT Auth Filter
┌─────────────────┼─────────────────┐
│ │ │
┌─────────▼──┐ ┌────────▼───┐ ┌────────▼────────┐
│ SimappeAdmin│ │ SimappeOAuth│ │ Nebula Services │
│ Puerto: 0 │ │ Puerto: 8787│ │ Puerto: 0 │
└─────────────┘ └────────────┘ └─────────────────┘
│ │ │
┌─────────▼─────────────────▼───────────────────▼──────┐
│ SimappeEurekaServer │
│ (Service Registry) │
│ Puerto: 8761 │
└───────────────────────────────────────────────────────┘
│
┌───────────────────────────▼───────────────────────────┐
│ SimappeConfigServer │
│ (Configuracion Centralizada) │
│ Puerto: 8890 │
│ Backend: Git (AWS CodeCommit) │
└───────────────────────────────────────────────────────┘
│
┌──────────┬────────────┬───────────┬───────┴────┬──────────────┐
│ │ │ │ │ │
┌────▼───┐ ┌───▼─────┐ ┌────▼───┐ ┌────▼───┐ ┌─────▼────┐ ┌─────▼────┐
│Oracle │ │PostgreSQL│ │MongoDB │ │ Redis │ │ Kafka │ │ MinIO │
│21c │ │(Simappe) │ │ :27017 │ │ :6379 │ │ :29092 │ │ :9101 │
│(Nebula)│ │ :5432 │ └────────┘ └────────┘ └──────────┘ └──────────┘
└────────┘ └──────────┘
IMPORTANTE - SOLO LECTURA: Simappe es un producto externo desarrollado y mantenido por CatcSoft. Los repositorios del framework Simappe (SimappeModel, SimappeCommons, SimappeConfigServer, SimappeEurekaServer, SimappeGatewayServer, SimappeOauth2Server, SimappeAdmin, SimappeClient, SimappeConfig, SimappeArchetype) son de solo lectura en el contexto de Centrica/Nebula. No se deben realizar modificaciones directas sobre estos componentes. Cualquier necesidad de extension o personalizacion debe canalizarse a traves de las librerias Nebula (nebula-commons, nebula-shared, nebula-models) o directamente en los microservicios de dominio.
| Atributo | Valor |
|---|---|
| Repositorio | simappe/core/simappemodel |
| GroupId | com.catcsoft.simappe |
| ArtifactId | SimappeModel |
| Version | 3.0.0 |
| Tipo | Libreria JAR (no desplegable) |
| Paquete Base | com.catcsoft.simappe.model |
Libreria de DTOs empresarial para todo el ecosistema Simappe. Contiene 242 archivos Java organizados en 8 dominios funcionales. Es una libreria pura de contratos de datos sin logica de negocio.
Nota: SimappeModel contiene dominios adicionales del producto Simappe (GAMES, DIAN, BPM, CREDIT) que no son relevantes para Nebula ERP. A continuacion se listan unicamente los dominios core del framework que son consumidos por Nebula.
| Dominio | Archivos | Descripcion |
|---|---|---|
| ADMIN | 57 | Usuarios, seguridad, territorios, companias, notificaciones |
| CORE | 24 | DTOs base del sistema (respuestas, paginacion, errores) |
| CONFIG | 5 | Configuracion de menus y consecutivos |
| OAUTH2 | 2-3 | Contratos de autenticacion y tokens |
spring-boot-starter-validation (111+ validaciones en 25 archivos)springdoc-openapi-starter-webmvc-ui:2.8.5minio:8.5.14@NotNull, @Size, @Pattern)| Atributo | Valor |
|---|---|
| Repositorio | simappe/core/simappecommons |
| GroupId | com.catcsoft.simappe |
| ArtifactId | SimappeCommons |
| Version | 2.8.1 |
| Tipo | Libreria JAR (no desplegable) |
| Paquete Base | com.catcsoft.simappe.commons |
Libreria empresarial compartida para microservicios Spring Boot multi-tenant. Proporciona el patron CRUD generico, infraestructura multi-tenancy, sistema de consultas avanzado, transacciones distribuidas (Saga), carga ligera de datos, comunicacion entre servicios (Feign/WebClient), integracion JWT, ofuscacion de datos y framework de ejecucion de procesos.
| Paquete | Responsabilidad |
|---|---|
core/base |
Patron generico CRUD (Service, Component, Controller) |
core/multitenant |
Infraestructura multi-tenancy (@ConnectionContext, @IgnoreTenant) |
core/query |
Sistema de busqueda avanzada con filtros dinamicos |
core/feign |
Comunicacion sincrona inter-servicio via Feign |
core/webclient |
Comunicacion reactiva inter-servicio via WebClient |
core/kafka |
Productores/consumidores Kafka pre-configurados |
core/saga |
Transacciones distribuidas tipo Saga |
core/transaction |
Gestion de transacciones |
core/lightloader |
Carga ligera de datos (consultas optimizadas) |
core/response |
Respuestas unificadas del API |
core/error |
Manejo centralizado de excepciones |
core/notification |
Framework de notificaciones |
core/process |
Framework de ejecucion de procesos |
core/report |
Generacion de reportes |
core/document |
Gestion documental |
core/oauth2 |
Integracion OAuth2 |
obfuscate |
Ofuscacion de datos sensibles |
security |
Seguridad y criptografia |
util |
Utilidades generales |
| Atributo | Valor |
|---|---|
| Repositorio | simappe/server/simappeconfigserver |
| GroupId | com.catcsoft.simappe.server |
| ArtifactId | SimappeConfigServer |
| Version | 1.0.0 |
| Tipo | Servicio desplegable |
| Puerto | 8890 |
| Paquete Base | com.catcsoft.simappe.server.config |
| Clase Principal | SimappeConfigServerApplication |
Servicio de gestion de configuracion centralizada. Spring Cloud Config Server respaldado por Git (AWS CodeCommit), soporte multi-ambiente, descubrimiento de servicios via Eureka, cache Caffeine (1000 entradas, 30min TTL), force-pull al inicio.
SimappeConfig repo)localhost-config, local-config, dev-config, qa-config, prod-config| Variable | Descripcion | Default |
|---|---|---|
APP_PROFILE |
Perfil activo | localhost |
SERVER_PORT |
Puerto del servidor | 8890 |
CONFIG_PATH |
Ruta local del repo git | - |
EUREKA_SERVICE_URL |
URL de Eureka | http://localhost:8761/eureka |
CONFIG_GIT_USERNAME |
Usuario Git | - |
CONFIG_GIT_PASSWORD |
Password Git | - |
| Atributo | Valor |
|---|---|
| Repositorio | simappe/server/simappeeurekaserver |
| GroupId | com.catcsoft.simappe.server |
| ArtifactId | SimappeEurekaServer |
| Version | 1.0.0 |
| Tipo | Servicio desplegable |
| Puerto | 8761 |
| Paquete Base | com.catcsoft.simappe.server.eureka |
| Clase Principal | SimappeEurekaServerApplication |
Registro de servicios Netflix Eureka. Descubrimiento de servicios, monitoreo de salud (heartbeat 30s, expiracion 90s), modo auto-preservacion (umbral 85%), modo standalone (no se registra a si mismo).
| Parametro | Valor |
|---|---|
| Heartbeat Interval | 30 segundos |
| Lease Expiration | 90 segundos |
| Self-Preservation Threshold | 85% |
| Eviction Interval | 45 segundos |
| Register Self | false (standalone) |
| Fetch Registry | false (standalone) |
| Atributo | Valor |
|---|---|
| Repositorio | simappe/server/simappegatewayserver |
| GroupId | com.catcsoft.simappe.server |
| ArtifactId | SimappeGatewayServer |
| Version | 2.1.0 |
| Tipo | Servicio desplegable (reactivo) |
| Puerto | 8090 |
| Paquete Base | com.catcsoft.simappe.server.gateway |
| Clase Principal | SimappeGatewayServerApplication |
Spring Cloud Gateway con enrutamiento dinamico basado en base de datos. Configuracion de rutas via R2DBC PostgreSQL, filtro de autenticacion JWT, CORS multi-origen, descubrimiento de servicios via Eureka, stack reactivo WebFlux, tracking de uso de APIs via Kafka, cache distribuido Redis, circuit breakers Resilience4j, rate limiting con Guava.
ApiRoute (PostgreSQL R2DBC)
└── ApiRouteService
└── ApiPathRouteLocatorImpl
└── Filtros: AuthFilter (JWT), CORS, RateLimiter
spring-cloud-starter-gateway-server-webfluxspring-boot-starter-data-r2dbc + r2dbc-postgresqlspring-boot-starter-data-redis-reactive + lettuce-corespring-cloud-starter-circuitbreaker-reactor-resilience4jguava:33.0.0-jre (rate limiting)spring-kafka (tracking de uso de APIs)| Atributo | Valor |
|---|---|
| Repositorio | simappe/server/simappeoauth2server |
| GroupId | com.catcsoft.simappe.server |
| ArtifactId | SimappeOauth2Server |
| Version | 1.4.0 |
| Tipo | Servicio desplegable (reactivo) |
| Puerto | 8787 |
| Paquete Base | com.catcsoft.simappe.server.oauth2 |
| Clase Principal | SimappeOauth2ServerApplication |
Microservicio de autorizacion y autenticacion OAuth2 empresarial. Autenticacion multi-factor (TOTP, Magic Link, client_credentials, tokens perpetuos), gestion JWT con refresh tokens, persistencia MongoDB, blacklisting de tokens, sesiones environment-aware, generacion de codigos QR.
| Metodo | Descripcion |
|---|---|
| Password | Autenticacion clasica usuario/contrasena |
| TOTP | Autenticacion de dos factores con Google Authenticator |
| Magic Link | Autenticacion sin contrasena via email |
| Client Credentials | Para comunicacion servicio-a-servicio |
| Perpetual Token | Tokens de larga duracion para integraciones |
| Coleccion | Proposito |
|---|---|
blacklisted_tokens |
Tokens revocados |
refresh_tokens |
Tokens de refresco |
login_history |
Historial de inicios de sesion |
user_totp_config |
Configuracion TOTP por usuario |
user_magic_link_config |
Configuracion Magic Link |
magic_link_tokens |
Tokens temporales de Magic Link |
/auth/login, /auth/refresh, /auth/logout/auth/token/validate, /auth/token/perpetual/auth/totp/setup, /auth/totp/verify/auth/magic-link/request, /auth/magic-link/verify/auth/client-credentials| Atributo | Valor |
|---|---|
| Repositorio | simappe/module/simappeadmin |
| GroupId | com.catcsoft.simappe.config |
| ArtifactId | SimappeAdmin |
| Version | 4.3.1 |
| Tipo | Servicio desplegable |
| Puerto | Dinamico (Eureka) |
| Paquete Base | com.catcsoft.simappe.config.admin |
| Clase Principal | SimappeAdminApplication |
Microservicio de configuracion y administracion empresarial centralizado. Gestion de configuracion, administracion de usuarios, orquestacion de notificaciones multi-canal. CRUD, arquitectura event-driven, RBAC, datos geograficos, email (AWS SES / MailerSend), WhatsApp (Waboxapp), procesamiento asincrono Kafka, generacion PDF/Excel, pagos Stripe, geolocalizacion IP.
| Modulo | Descripcion |
|---|---|
user |
Gestion de usuarios y perfiles |
role |
Roles y permisos (RBAC) |
company |
Gestion de companias/tenants |
customer |
Gestion de clientes |
notification/email |
Notificaciones email (AWS SES, MailerSend) |
notification/waboxapp |
Notificaciones WhatsApp |
baloto |
Prediccion de loteria (Baloto) |
todo |
Lista de tareas |
apiroute |
Gestion de rutas API |
databaseconfig |
Configuracion multi-tenant de BDs |
kafka |
Productores/consumidores Kafka |
geographic |
Paises, departamentos, ciudades |
mailersend-java:1.4.1 + AWS SES 2.38.4stripe-java:30.2.0 (pagos)itext-core:8.0.5 (PDF)poi-ooxml:5.3.0 (Excel)geoip2:4.2.0 (MaxMind geolocalizacion)jose4j:0.9.6 (crypto)commons-math3:3.6.1 (calculos estadisticos)| Atributo | Valor |
|---|---|
| Repositorio | simappe/module/simappeclient |
| GroupId | com.catcsoft.simappe.module |
| ArtifactId | SimappeClient |
| Version | 2.2.0 |
| Tipo | Servicio desplegable |
| Puerto | Dinamico (Eureka) |
| Paquete Base | com.catcsoft.simappe.module.client |
| Clase Principal | SimappeClientApplication |
Microservicio de configuracion de clientes para sistemas empresariales multi-tenant. Gestiona configuraciones especificas por cliente, personalizacion de menus, generacion de numeros consecutivos, almacenamiento de documentos. Multi-tenancy a nivel de esquema de base de datos, cache de tres niveles (in-memory + Redis + Caffeine), auditoria via Kafka.
| Entidad | Descripcion |
|---|---|
MenuCustomization |
Personalizacion de menus por tenant |
ConsecutiveConfiguration |
Configuracion de consecutivos |
DocumentBase64Entity |
Almacenamiento de documentos en base64 |
| Atributo | Valor |
|---|---|
| Repositorio | simappe/config/simappeconfig |
| Tipo | Repositorio de configuracion (no es proyecto Java) |
Repositorio Git que contiene los archivos de configuracion externalizados para todos los microservicios. Es consumido por SimappeConfigServer.
simappeconfig/
├── localhost-config/ # Configuracion para desarrollo local sin Docker
├── local-config/ # Configuracion para desarrollo local con Docker
├── dev-config/ # Configuracion para ambiente DEV
├── qa-config/ # Configuracion para ambiente QA
└── prod-config/ # Configuracion para ambiente PROD
simappe-admin, simappe-games, simappe-oauth2-server, simappe-gateway-server, simappe-client, simappe-business-partners-management, simappe-credit, y todos los servicios Nebula.
| Componente | Puerto |
|---|---|
| Eureka | 8761 |
| Kafka | 9092 |
| PostgreSQL | 5432 |
| MongoDB | 27017 |
| Redis | 6379 |
| Prometheus Pushgateway | - |
| Atributo | Valor |
|---|---|
| Repositorio | simappe/core/simappearchetype |
| GroupId | com.catcsoft.simappe |
| ArtifactId | simappe-archetype |
| Version | 2.0.0 |
| Tipo | Maven Archetype |
Maven Archetype para generar microservicios Simappe con soporte multi-tenant, arquitectura dual-database (PostgreSQL + MongoDB), capacidades event-driven (Kafka), cache/locking distribuido (Redis), y stack completo de observabilidad.
| Propiedad | Default | Descripcion |
|---|---|---|
groupId |
com.catcsoft.simappe.module |
GroupId Maven |
artifactId |
simappe-service |
ArtifactId Maven |
version |
1.0.0-SNAPSHOT |
Version |
package |
com.catcsoft.simappe.module.service |
Paquete Java base |
serviceName |
SimappeService |
Nombre del servicio |
serviceDescription |
Simappe Microservice |
Descripcion |
databaseName |
simappe_service_db |
Nombre de BD |
contextPath |
/simappe-service |
Context path |
authorName |
Carlos Torres |
Autor |
authorEmail |
torrescamargo@gmail.com |
Email autor |
companyName |
CatcSoft |
Nombre empresa |
companyYear |
2026 |
Ano copyright |
enableSql |
true |
Habilitar PostgreSQL/JPA |
enableNoSql |
true |
Habilitar MongoDB |
enableKafka |
true |
Habilitar Kafka |
enableRedis |
true |
Habilitar Redis |
enableAsync |
true |
Habilitar @Async |
enableMonitoring |
true |
Habilitar Micrometer/Prometheus |
enableMinio |
false |
Habilitar MinIO |
.gitignore| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/core/nebula-models |
| GroupId | com.centrica.nebula |
| ArtifactId | nebula-models |
| Version | 0.0.2-SNAPSHOT |
| Tipo | Libreria JAR (no desplegable) |
| Paquete Base | com.centrica.nebula.models |
| Extiende | SimappeModel |
Contratos de datos globales (DTOs) y Value Objects compartidos. Puente de contratos para comunicacion inter-servicio en todo el ecosistema Nebula.
| Paquete | Contenido |
|---|---|
com.centrica.nebula.models.accounting.dto |
CentroCostosDto, TipoCentroCostosDto |
com.centrica.nebula.models.accounting.enums |
EstadoCentroCostosEnum |
com.centrica.nebula.models.accounting.record |
CentroCostosResponse, TipoCentroCostosResponse |
Si un DTO es utilizado por mas de 1 servicio, debe promoverse a nebula-models.
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/core/nebula-commons |
| GroupId | com.centrica.nebula |
| ArtifactId | nebula-commons |
| Version | 0.0.1-SNAPSHOT |
| Tipo | Libreria JAR (no desplegable) |
| Paquete Base | com.centrica.nebula.commons |
| Extiende | SimappeCommons |
Libreria compartida empresarial para los microservicios Nebula. Extiende SimappeCommons con logica reutilizable especifica del dominio Nebula.
Aunque nebula-commons hereda de SimappeCommons el soporte multi-driver (PostgreSQL, MySQL, MariaDB, MSSQL), la base de datos oficial para todos los servicios de dominio de Nebula ERP es Oracle Database 21c. El driver utilizado es ojdbc11. PostgreSQL se utiliza unicamente en la capa de infraestructura Simappe (ConfigServer, GatewayServer, Admin), no en los servicios de negocio Nebula.
JWT, MinIO, Resilience4j (Circuit Breaker), OpenFeign, Redis, Kafka, Spring Data Envers, ArchUnit.
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/core/nebula-shared |
| GroupId | com.centrica.nebula |
| ArtifactId | nebula-shared |
| Version | 0.0.1-SNAPSHOT |
| Tipo | Libreria JAR (no desplegable) |
| Paquete Base | com.centrica.nebula.shared |
| Extiende | SimappeCommons |
Libreria de utilidades compartidas para el ecosistema Nebula. Contiene interfaces de comunicacion inter-servicio (WebClients, Feign clients) y constantes globales.
| Paquete | Contenido |
|---|---|
com.centrica.nebula.shared |
NebulaSharedApplication |
com.centrica.nebula.shared.constants |
GlobalConstants |
Interfaces de comunicacion como InventoryWebClient, AccountingWebClient se definen aqui para ser consumidas por multiples servicios.
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/cross-cutting/nebula-masters |
| GroupId | com.centrica.nebula.masters |
| ArtifactId | nebula-masters |
| Version | 1.0.0-SNAPSHOT |
| Tipo | Servicio desplegable |
| Puerto | Dinamico (Eureka) |
| Paquete Base | com.centrica.nebula.masters |
| Clase Principal | NebulaMastersApplication |
| spring.application.name | nebula-masters |
| Esquema BD | masters |
| Contexto | Maestros Globales |
Servicio de maestros globales del sistema. Gestiona las tablas parametricas consumidas por todos los demas servicios del ecosistema.
Ninguna (es servicio base - todos dependen de el).
com.centrica.nebula.masters/
├── NebulaMastersApplication.java
├── config/
├── monitoring/ApplicationMetrics.java
└── v1/
├── component/
├── controller/
├── document/ (MongoDB)
├── entity/ (PostgreSQL/JPA)
├── kafka/
├── repository/
└── service/
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/cross-cutting/nebula-file-storage |
| GroupId | com.centrica.nebula.storage |
| ArtifactId | nebula-file-storage |
| Version | 1.0.0-SNAPSHOT |
| Tipo | Servicio desplegable |
| Puerto | Dinamico (Eureka) |
| Paquete Base | com.centrica.nebula.storage |
| Clase Principal | NebulaFileStorageApplication |
| spring.application.name | nebula-file-storage |
| Esquema BD | storage |
| Contexto | Gestion Documental |
Servicio de gestion documental. Abstraccion S3/MinIO para carga y descarga de archivos. Gestiona metadatos de documentos, versionado, y control de acceso.
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/cross-cutting/nebula-notifications |
| GroupId | com.centrica.nebula.notifications |
| ArtifactId | nebula-notifications |
| Version | 1.0.0-SNAPSHOT |
| Tipo | Servicio desplegable |
| Puerto | Dinamico (Eureka) |
| Paquete Base | com.centrica.nebula.notifications |
| Clase Principal | NebulaNotificationsApplication |
| spring.application.name | nebula-notifications |
| Esquema BD | notifications |
| Contexto | Comunicaciones |
Orquestador de comunicaciones multi-canal. Gestiona el envio de emails, SMS y notificaciones push desde cualquier servicio del ecosistema.
GroupId del dominio: com.centrica.nebula.inventory
Esquema BD: inventory (compartido: product-catalog + inventory-ops)
Esquema BD: procurement (compartido: purchasing + fixed-assets)
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/inventory/nebula-product-catalog |
| ArtifactId | nebula-product-catalog |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.inventory.catalog |
| Clase Principal | NebulaProductCatalogApplication |
| spring.application.name | nebula-product-catalog |
| BD | nebula_product_catalog_db |
| Context Path | /nebula-product-catalog |
Gestion de catalogo de productos, servicios, kits, listas de precios, categorias y atributos.
nebula-masters (paises, monedas, unidades)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/inventory/nebula-inventory-ops |
| ArtifactId | nebula-inventory-ops |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.inventory.ops |
| Clase Principal | NebulaInventoryOpsApplication |
| spring.application.name | nebula-inventory-ops |
| BD | nebula_inventory_ops_db |
| Context Path | /nebula-inventory-ops |
Operaciones logisticas: kardex, control de stock, movimientos, bodegas, lotes, fechas de vencimiento.
nebula-product-catalog (productos, unidades)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/inventory/nebula-purchasing |
| ArtifactId | nebula-purchasing |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.inventory.purchasing |
| Clase Principal | NebulaPurchasingApplication |
| spring.application.name | nebula-purchasing |
| BD | nebula_purchasing_db |
| Context Path | /nebula-purchasing |
Ciclo de compras: requisiciones, ordenes de compra, recepcion de mercancia, cuentas por pagar.
nebula-inventory-ops (movimientos de inventario)nebula-accounting-core (causacion contable)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/inventory/nebula-fixed-assets |
| ArtifactId | nebula-fixed-assets |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.inventory.assets |
| Clase Principal | NebulaFixedAssetsApplication |
| spring.application.name | nebula-fixed-assets |
| BD | nebula_fixed_assets_db |
| Context Path | /nebula-fixed-assets |
Gestion de activos fijos: inventario, proceso de depreciacion, mantenimiento, bajas.
nebula-accounting-core (causacion de depreciacion)nebula-purchasing (origen del activo)GroupId del dominio: com.centrica.nebula.finance (tax-core, tax-collection, treasury)
GroupId: com.centrica.nebula.accounting (accounting-core)
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/finance/nebula-accounting-core |
| GroupId | com.centrica.nebula.accounting |
| ArtifactId | nebula-accounting-core |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.accounting.core |
| Clase Principal | NebulaAccountingCoreApplication |
| spring.application.name | nebula-accounting-core |
| Esquema BD | accounting |
Contabilidad general: plan de cuentas, asientos contables, terceros, cierres, impuestos y reportes financieros.
nebula-masters (paises, monedas, tipos de documento)nebula-models (DTOs compartidos de contabilidad)v1.cdc.* (Change Data Capture) en lugar del estandar v1.*nebula-models en pom.xml (DTOs compartidos de contabilidad)constants/AccountingDomainConstants, util/AccountingMessagesojdbc11)com.centrica.nebula.accounting.core/
├── NebulaAccountingCoreApplication.java
├── ServletInitializer.java
├── config/
│ ├── AppConfig.java
│ ├── AsyncConfig.java
│ ├── ClientConfig.java
│ ├── DockerMongoHealthConfig.java
│ ├── KafkaAdapterConfig.java
│ ├── MongoConfiguration.java
│ ├── MongoRepositoryConfig.java
│ ├── MultiTenantJpaConfig.java
│ └── ResourceLockConfiguration.java
├── constants/
│ └── AccountingDomainConstants.java
├── monitoring/
│ └── ApplicationMetrics.java
├── util/
│ └── AccountingMessages.java
└── v1/
└── cdc/
├── component/ (CentroCostosComponent, TipoCentroCostosComponent)
├── controller/ (CentroCostosController, TipoCentroCostosController)
├── entity/ (CentroCostosEntity, TipoCentroCostosEntity)
├── lightloader/ (CentroCostosLightLoader)
├── repository/ (CentroCostosRepository, TipoCentroCostosRepository)
└── service/ (CentroCostosService, TipoCentroCostosService)
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/finance/nebula-treasury |
| GroupId | com.centrica.nebula.finance |
| ArtifactId | nebula-treasury |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.finance.treasury |
| Clase Principal | NebulaTreasuryApplication |
| spring.application.name | nebula-treasury |
| BD | nebula_treasury_db |
| Context Path | /nebula-treasury |
| Esquema BD | accounting (compartido con accounting-core) |
Gestion de tesoreria: flujo de caja, cuentas bancarias, pagos y recaudos.
nebula-accounting-core (causacion contable de movimientos de tesoreria)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/finance/nebula-tax-core |
| GroupId | com.centrica.nebula.finance |
| ArtifactId | nebula-tax-core |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.finance.tax.core |
| Clase Principal | NebulaTaxCoreApplication |
| spring.application.name | nebula-tax-core |
| BD | nebula_tax_core_db |
| Context Path | /nebula-tax-core |
| Esquema BD | tax |
Nucleo tributario: configuracion de impuestos, tarifas, calculos y periodos fiscales.
nebula-masters (paises, ciudades para zonas fiscales)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/finance/nebula-tax-collection |
| GroupId | com.centrica.nebula.finance |
| ArtifactId | nebula-tax-collection |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.finance.tax.collection |
| Clase Principal | NebulaTaxCollectionApplication |
| spring.application.name | nebula-tax-collection |
| BD | nebula_tax_collection_db |
| Context Path | /nebula-tax-collection |
| Esquema BD | tax (compartido con tax-core) |
Recaudo y retencion de impuestos municipales y gubernamentales.
nebula-tax-core (tarifas, configuracion tributaria)nebula-accounting-core (causacion contable del recaudo)GroupId del dominio: com.centrica.nebula.commerce
Esquema BD: billing
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/commerce/nebula-invoicing |
| ArtifactId | nebula-invoicing |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.commerce.invoicing |
| Clase Principal | NebulaInvoicingApplication |
| spring.application.name | nebula-invoicing |
| BD | nebula_invoicing_db |
| Context Path | /nebula-invoicing |
Ciclo de ventas: cotizaciones, pedidos, facturas de venta, remisiones, gestion de cuentas por cobrar.
nebula-inventory-ops (disponibilidad y movimiento de inventario)nebula-accounting-core (causacion contable de ventas)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/commerce/nebula-electronic-billing |
| ArtifactId | nebula-electronic-billing |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.commerce.billing |
| Clase Principal | NebulaElectronicBillingApplication |
| spring.application.name | nebula-electronic-billing |
| BD | nebula_electronic_billing_db |
| Context Path | /nebula-electronic-billing |
Integracion con la DIAN (Direccion de Impuestos y Aduanas Nacionales de Colombia). Firma digital, generacion XML, validacion y envio de documentos electronicos.
nebula-invoicing (facturas origen)GroupId del dominio: com.centrica.nebula.government
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/government/nebula-budget-core |
| ArtifactId | nebula-budget-core |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.government.budget.core |
| Clase Principal | NebulaBudgetCoreApplication |
| spring.application.name | nebula-budget-core |
| BD | nebula_budget_core_db |
| Context Path | /nebula-budget-core |
| Esquema BD | budget |
Nucleo presupuestal: clasificadores presupuestales, apropiacion inicial, adiciones y traslados.
nebula-masters (parametros basicos)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/government/nebula-budget-execution |
| ArtifactId | nebula-budget-execution |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.government.budget.execution |
| Clase Principal | NebulaBudgetExecutionApplication |
| spring.application.name | nebula-budget-execution |
| BD | nebula_budget_execution_db |
| Context Path | /nebula-budget-execution |
| Esquema BD | budget (compartido con budget-core) |
Ejecucion presupuestal: compromisos (RP), obligaciones, ordenes de pago y PAC.
nebula-budget-core (disponibilidades, CDPs)nebula-accounting-core (causacion contable)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/government/nebula-contracts-core |
| ArtifactId | nebula-contracts-core |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.government.contracts.core |
| Clase Principal | NebulaContractsCoreApplication |
| spring.application.name | nebula-contracts-core |
| BD | nebula_contracts_core_db |
| Context Path | /nebula-contracts-core |
| Esquema BD | contracts |
Nucleo contractual: Plan Anual de Adquisiciones (PAA), estudios previos, marco legal y SECOP.
nebula-budget-core (disponibilidad presupuestal para contratacion)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/government/nebula-contracts-management |
| ArtifactId | nebula-contracts-management |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.government.contracts.mgmt |
| Clase Principal | NebulaContractsManagementApplication |
| spring.application.name | nebula-contracts-management |
| BD | nebula_contracts_mgmt_db |
| Context Path | /nebula-contracts-management |
| Esquema BD | contracts (compartido con contracts-core) |
Gestion contractual: ciclo de vida, adiciones, supervisores y liquidacion.
nebula-contracts-core (tipos de contrato, marco legal)GroupId del dominio: com.centrica.nebula.people
| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/people/nebula-hr-core |
| ArtifactId | nebula-hr-core |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.people.hr |
| Clase Principal | NebulaHrCoreApplication |
| spring.application.name | nebula-hr-core |
| BD | nebula_hr_core_db |
| Context Path | /nebula-hr-core |
| Esquema BD | hr |
Gestion del talento humano: estructura organizacional, expedientes de empleados, cargos y novedades laborales.
nebula-masters (paises, ciudades, tipos de documento)| Atributo | Valor |
|---|---|
| Repositorio GitLab | nebula/business-domains/people/nebula-payroll-settlement |
| ArtifactId | nebula-payroll-settlement |
| Version | 1.0.0-SNAPSHOT |
| Paquete Base | com.centrica.nebula.people.payroll |
| Clase Principal | NebulaPayrollSettlementApplication |
| spring.application.name | nebula-payroll-settlement |
| BD | nebula_payroll_settlement_db |
| Context Path | /nebula-payroll-settlement |
| Esquema BD | payroll |
Motor de liquidacion de nomina: calculo de salarios, deducciones, seguridad social y pagos.
nebula-hr-core (empleados, cargos, novedades)nebula-accounting-core (causacion contable de nomina)nebula-masters ◄────────────────────────────────────────────────────────────┐
▲ │
│ │
├── nebula-product-catalog │
│ ▲ │
│ └── nebula-inventory-ops │
│ ▲ ▲ │
│ │ │ │
│ │ └── nebula-invoicing │
│ │ ▲ │
│ │ └── nebula-electronic-billing │
│ │ │
│ └── nebula-purchasing │
│ ▲ │
│ └── nebula-fixed-assets │
│ │
├── nebula-accounting-core ◄────────────────────────────────────────────┤
│ ▲ ▲ ▲ ▲ ▲ │
│ │ │ │ │ │ │
│ │ │ │ │ └── nebula-payroll-settlement │
│ │ │ │ │ ▲ │
│ │ │ │ │ │ │
│ │ │ │ └── nebula-budget-execution │
│ │ │ │ │
│ │ │ └── nebula-tax-collection │
│ │ │ │
│ │ └── nebula-treasury │
│ │ │
│ └── nebula-purchasing │
│ nebula-fixed-assets │
│ nebula-invoicing │
│ │
├── nebula-hr-core ◄────────────────────────────────────────────────────┤
│ ▲ │
│ └── nebula-payroll-settlement │
│ │
├── nebula-tax-core ◄───────────────────────────────────────────────────┤
│ ▲ │
│ └── nebula-tax-collection │
│ │
└── nebula-budget-core ◄────────────────────────────────────────────────┘
▲ ▲
│ │
│ └── nebula-contracts-core
│ ▲
│ └── nebula-contracts-management
│
└── nebula-budget-execution
| Servicio | Depende de |
|---|---|
| nebula-product-catalog | masters |
| nebula-inventory-ops | product-catalog |
| nebula-purchasing | inventory-ops, accounting-core |
| nebula-fixed-assets | accounting-core, purchasing |
| nebula-accounting-core | masters |
| nebula-treasury | accounting-core |
| nebula-tax-core | masters |
| nebula-tax-collection | tax-core, accounting-core |
| nebula-invoicing | inventory-ops, accounting-core |
| nebula-electronic-billing | invoicing |
| nebula-budget-core | masters |
| nebula-budget-execution | budget-core, accounting-core |
| nebula-contracts-core | budget-core |
| nebula-contracts-management | contracts-core |
| nebula-hr-core | masters |
| nebula-payroll-settlement | hr-core, accounting-core |
| nebula-masters | (ninguna - es base) |
| nebula-file-storage | (independiente) |
| nebula-notifications | (independiente) |
Motor de BD: Todos los esquemas de dominio de negocio Nebula utilizan Oracle Database 21c. PostgreSQL se utiliza unicamente en los servicios de infraestructura Simappe (ConfigServer, GatewayServer, Admin).
| Dominio | Esquema (Oracle) | Microservicios | Descripcion |
|---|---|---|---|
| Maestros | masters |
nebula-masters | Paises, ciudades, monedas, tipos documento, impuestos |
| Contabilidad | accounting |
nebula-accounting-core, nebula-treasury | Plan de cuentas, asientos, terceros, conciliacion |
| Inventario | inventory |
nebula-product-catalog, nebula-inventory-ops | Productos, stock, kardex, bodegas |
| Facturacion | billing |
nebula-invoicing, nebula-electronic-billing | Facturas, remisiones, CxC |
| Compras | procurement |
nebula-purchasing, nebula-fixed-assets | OC, activos fijos, CxP |
| Nomina | payroll |
nebula-payroll-settlement | Liquidacion salarial, seguridad social |
| RRHH | hr |
nebula-hr-core | Expedientes, capacitacion |
| Presupuesto | budget |
nebula-budget-core, nebula-budget-execution | Apropiaciones, CDPs, RPs |
| Impuestos | tax |
nebula-tax-core, nebula-tax-collection | Estatuto tributario, predial, ICA |
| Contratos | contracts |
nebula-contracts-core, nebula-contracts-management | PAA, seleccion contratistas |
| Almacenamiento | storage |
nebula-file-storage | Documentos adjuntos |
| Notificaciones | notifications |
nebula-notifications | Emails, SMS, push |
| Ambiente | Usuario | Contrasena |
|---|---|---|
| DEV | nebula_user_dev_01 |
Nebula@Dev2026 |
| QA | nebula_user_qa_01 |
Nebula@QA2026 |
| PROD | nebula_user_prod_01 |
Generada via Vault |
Cada tenant tiene su propia base de datos PostgreSQL independiente.
database_config_v2 del servicio SimappeAdmintenantId en el header HTTPMultiTenantJpaConfig resuelve el DataSource correcto dinamicamente@ConnectionContext marca metodos que requieren resolucion de tenant@IgnoreTenant marca metodos que operan sin contexto de tenantt{tenant_id}_audit_log| Ambiente | Nodo | IP Interna | Acceso SSH |
|---|---|---|---|
| TOOLS | nodo-00 | 10.110.0.2 | Puerto 2201 |
| DEV | nodo-01 | 10.120.0.2 | Puerto 2202 |
| QA | nodo-02 | 10.130.0.2 | Puerto 2203 |
| PROD | nodo-03 | 10.140.0.2 | Puerto 2204 |
| Servicio | DEV (nodo-01) | QA (nodo-02) | PROD (nodo-03) |
|---|---|---|---|
| PostgreSQL | 10.120.0.2:5432 | 10.130.0.2:5432 | 10.140.0.2:5432 |
| MongoDB | 10.120.0.2:27017 | 10.130.0.2:27017 | 10.140.0.2:27017 |
| Redis | 10.120.0.2:6379 | 10.130.0.2:6379 | 10.140.0.2:6379 |
| Kafka | 10.120.0.2:29092 | 10.130.0.2:29092 | 10.140.0.2:29092 |
| MinIO | minio.dev.centricasoluciones.com | 10.130.0.2:9101 | 10.140.0.2:9101 |
| Herramienta | URL | Proposito |
|---|---|---|
| Portainer | https://200.118.43.29:9443 | Gestion de contenedores Docker |
| Nginx Proxy Manager | http://10.120.0.2:81 | Reverse proxy y SSL |
| Nexus | https://nexus.centricasoluciones.com | Repositorio Maven |
| GitLab | https://gitlab.centricasoluciones.com | Control de versiones |
| Jenkins | https://jenkins.centricasoluciones.com | CI/CD |
| Wiki | https://wiki.centricasoluciones.com | Documentacion interna |
Grafana y Prometheus se despliegan en cada nodo de ambiente de forma independiente.
| Herramienta | DEV (nodo-01) | QA (nodo-02) | PROD (nodo-03) |
|---|---|---|---|
| Grafana | http://10.120.0.2:3000 | http://10.130.0.2:3000 | http://10.140.0.2:3000 |
| Prometheus | http://10.120.0.2:9090 | http://10.130.0.2:9090 | http://10.140.0.2:9090 |
Todos los 19 servicios desplegables usan un Dockerfile identico con:
eclipse-temurin:25-jre-alpine0 (dinamico, asignado por Eureka)springuserAmerica/BogotaURL Base: https://gitlab.centricasoluciones.com
Usuario Git: arquitecto.centrica
gitlab.centricasoluciones.com/
├── simappe/
│ ├── core/
│ │ ├── simappecommons
│ │ ├── simappemodel
│ │ └── simappearchetype
│ ├── server/
│ │ ├── simappeconfigserver
│ │ ├── simappeeurekaserver
│ │ ├── simappegatewayserver
│ │ └── simappeoauth2server
│ ├── module/
│ │ ├── simappeadmin
│ │ └── simappeclient
│ └── config/
│ └── simappeconfig
│
└── nebula/
├── core/
│ ├── nebula-commons
│ ├── nebula-models
│ └── nebula-shared
├── cross-cutting/
│ ├── nebula-masters
│ ├── nebula-file-storage
│ └── nebula-notifications
└── business-domains/
├── inventory/
│ ├── nebula-product-catalog
│ ├── nebula-inventory-ops
│ ├── nebula-purchasing
│ └── nebula-fixed-assets
├── finance/
│ ├── nebula-accounting-core
│ ├── nebula-treasury
│ ├── nebula-tax-core
│ └── nebula-tax-collection
├── commerce/
│ ├── nebula-invoicing
│ └── nebula-electronic-billing
├── government/
│ ├── nebula-budget-core
│ ├── nebula-budget-execution
│ ├── nebula-contracts-core
│ └── nebula-contracts-management
└── people/
├── nebula-hr-core
└── nebula-payroll-settlement
| # | Servicio | GitLab Path | Branch | Version |
|---|---|---|---|---|
| 1 | SimappeModel | simappe/core/simappemodel | develop | 3.0.0 |
| 2 | SimappeCommons | simappe/core/simappecommons | develop | 2.8.1 |
| 3 | SimappeArchetype | simappe/core/simappearchetype | develop | 2.0.0 |
| 4 | SimappeConfigServer | simappe/server/simappeconfigserver | develop | 1.0.0 |
| 5 | SimappeEurekaServer | simappe/server/simappeeurekaserver | develop | 1.0.0 |
| 6 | SimappeGatewayServer | simappe/server/simappegatewayserver | develop | 2.1.0 |
| 7 | SimappeOauth2Server | simappe/server/simappeoauth2server | develop | 1.4.0 |
| 8 | SimappeAdmin | simappe/module/simappeadmin | develop | 4.3.1 |
| 9 | SimappeClient | simappe/module/simappeclient | develop | 2.2.0 |
| 10 | SimappeConfig | simappe/config/simappeconfig | main | - |
| 11 | nebula-models | nebula/core/nebula-models | main | 0.0.2-SNAPSHOT |
| 12 | nebula-commons | nebula/core/nebula-commons | main | 0.0.1-SNAPSHOT |
| 13 | nebula-shared | nebula/core/nebula-shared | main | 0.0.1-SNAPSHOT |
| 14 | nebula-masters | nebula/cross-cutting/nebula-masters | main | 1.0.0-SNAPSHOT |
| 15 | nebula-file-storage | nebula/cross-cutting/nebula-file-storage | main | 1.0.0-SNAPSHOT |
| 16 | nebula-notifications | nebula/cross-cutting/nebula-notifications | main | 1.0.0-SNAPSHOT |
| 17 | nebula-product-catalog | nebula/business-domains/inventory/nebula-product-catalog | main | 1.0.0-SNAPSHOT |
| 18 | nebula-inventory-ops | nebula/business-domains/inventory/nebula-inventory-ops | main | 1.0.0-SNAPSHOT |
| 19 | nebula-purchasing | nebula/business-domains/inventory/nebula-purchasing | main | 1.0.0-SNAPSHOT |
| 20 | nebula-fixed-assets | nebula/business-domains/inventory/nebula-fixed-assets | main | 1.0.0-SNAPSHOT |
| 21 | nebula-accounting-core | nebula/business-domains/finance/nebula-accounting-core | develop | 1.0.0-SNAPSHOT |
| 22 | nebula-treasury | nebula/business-domains/finance/nebula-treasury | main | 1.0.0-SNAPSHOT |
| 23 | nebula-tax-core | nebula/business-domains/finance/nebula-tax-core | main | 1.0.0-SNAPSHOT |
| 24 | nebula-tax-collection | nebula/business-domains/finance/nebula-tax-collection | main | 1.0.0-SNAPSHOT |
| 25 | nebula-invoicing | nebula/business-domains/commerce/nebula-invoicing | main | 1.0.0-SNAPSHOT |
| 26 | nebula-electronic-billing | nebula/business-domains/commerce/nebula-electronic-billing | main | 1.0.0-SNAPSHOT |
| 27 | nebula-budget-core | nebula/business-domains/government/nebula-budget-core | main | 1.0.0-SNAPSHOT |
| 28 | nebula-budget-execution | nebula/business-domains/government/nebula-budget-execution | main | 1.0.0-SNAPSHOT |
| 29 | nebula-contracts-core | nebula/business-domains/government/nebula-contracts-core | main | 1.0.0-SNAPSHOT |
| 30 | nebula-contracts-management | nebula/business-domains/government/nebula-contracts-management | main | 1.0.0-SNAPSHOT |
| 31 | nebula-hr-core | nebula/business-domains/people/nebula-hr-core | main | 1.0.0-SNAPSHOT |
| 32 | nebula-payroll-settlement | nebula/business-domains/people/nebula-payroll-settlement | main | 1.0.0-SNAPSHOT |
| Dominio | Servicio | Responsabilidad | Dependencias |
|---|---|---|---|
| CRM | nebula-crm-core | Gestion comercial: leads, prospectos, contactos, embudo de ventas | nebula-inventory-ops |
| CRM | nebula-crm-sales | Fuerza de ventas: oportunidades, actividades, metas | nebula-crm-core |
| Especializado | nebula-pos | Punto de venta: cajas registradoras, turnos, offline-first | nebula-inventory-ops, nebula-invoicing |
| Especializado | nebula-projects | Gestion de proyectos: recursos, cronogramas, rentabilidad | nebula-accounting-core |
| Especializado | nebula-bi | Business Intelligence: datamarts, ETLs, dashboards dinamicos | Replicas read-only |
@ConnectionContextnebula-{domain}[-{functionality}]
Ejemplos: nebula-accounting-core, nebula-product-catalog, nebula-hr-core
com.centrica.nebula.{domain}.{subdomain}
Ejemplos:
com.centrica.nebula.accounting.corecom.centrica.nebula.inventory.catalogcom.centrica.nebula.government.budget.executionnebula_{service_name}_db
Ejemplos: nebula_accounting_core_db, nebula_product_catalog_db
{domain}
Ejemplos: accounting, inventory, billing, budget
nebula-{service-name}
Debe coincidir con el artifactId del pom.xml.
/nebula-{service-name}
main: Codigo estable en producciondevelop: Desarrollo activofeature/{ticket}-{description}: Features en desarrollohotfix/{ticket}-{description}: Correcciones urgentesController -> Service -> Component -> Repository
Prefijo de paquete v1, v2, etc. Todos los servicios inician en v1.
| Perfil | Uso |
|---|---|
localhost |
Desarrollo local sin Docker |
local |
Desarrollo local con Docker |
dev |
Ambiente de desarrollo |
qa |
Ambiente de QA |
prod |
Ambiente de produccion |
Todos los 19 servicios desplegables Nebula comparten el siguiente conjunto estandar de dependencias:
| Dependencia | Proposito |
|---|---|
| spring-boot-starter-actuator | Health checks, metricas |
| spring-boot-starter-web | REST API |
| spring-boot-starter-webflux | WebClient reactivo |
| spring-boot-starter-aop | Programacion orientada a aspectos |
| spring-boot-starter-cache | Abstraccion de cache |
| spring-cloud-starter-config | Cliente de Config Server |
| spring-cloud-starter-netflix-eureka-client | Service Discovery |
| Dependencia | Proposito |
|---|---|
| spring-boot-starter-data-jpa | ORM/JPA |
| ojdbc11 | Driver Oracle Database 21c (BD de negocio Nebula) |
| hibernate-core | ORM Hibernate 6 |
| hibernate-community-dialects | Dialectos comunitarios (incluye Oracle) |
| hibernate-types-60 | Tipos extendidos (JSON, arrays) |
| HikariCP | Connection pool |
| spring-boot-starter-data-mongodb | MongoDB (auditoria, documentos NoSQL) |
| spring-boot-starter-data-redis | Redis cache distribuido |
| Dependencia | Proposito |
|---|---|
| spring-kafka | Apache Kafka client |
| spring-kafka-test | Testing Kafka |
| Dependencia | Version | Proposito |
|---|---|---|
| SimappeCommons | 2.8.1 | Framework base |
| SimappeModel | 3.0.0 | DTOs compartidos |
| Dependencia | Proposito |
|---|---|
| lombok | Reduccion de boilerplate |
| modelmapper | Mapeo DTO-Entity |
| mapstruct | Mapeo compilado DTO-Entity |
| caffeine | Cache local L1 |
| springdoc-openapi-starter-webmvc-ui | Documentacion API (Swagger) |
| bcprov-jdk18on | Criptografia Bouncy Castle |
| web-push | Notificaciones push |
| jackson-databind | Serializacion JSON |
| aspectjweaver | AOP runtime |
| reactor-core | Programacion reactiva |
| Dependencia | Proposito |
|---|---|
| micrometer-registry-prometheus | Metricas Prometheus |
| spring-boot-starter-actuator | Endpoints de gestion |
spring-cloud-dependencies:2025.0.0Todos los servicios generados por SimappeArchetype v2.0.0 siguen la estructura estandar:
com.centrica.nebula.{domain}.{subdomain}/
│
├── {ServiceName}Application.java # Clase principal Spring Boot
├── ServletInitializer.java # Soporte WAR deployment
│
├── config/
│ ├── AppConfig.java # Configuracion general
│ ├── AsyncConfig.java # Configuracion @Async
│ ├── ClientConfig.java # WebClient/Feign config
│ ├── DatabaseCacheConfig.java # Cache de BD
│ ├── DockerMongoHealthConfig.java # Health check MongoDB
│ ├── MongoConfiguration.java # Config MongoDB
│ ├── MultiTenantJpaConfig.java # Multi-tenant JPA DataSource
│ ├── OpenApiConfig.java # Swagger/OpenAPI
│ ├── OptimizedCacheConfiguration.java # Cache optimizado
│ └── ResourceLockConfiguration.java # Locks distribuidos Redis
│
├── monitoring/
│ └── ApplicationMetrics.java # Metricas custom Micrometer
│
└── v1/
├── component/
│ └── {ServiceName}Component.java # Logica de negocio
├── controller/
│ └── {ServiceName}Controller.java # REST endpoints
├── document/
│ └── AuditLog.java # Documento MongoDB auditoria
├── entity/
│ └── EntityExample.java # Entidad JPA ejemplo
├── kafka/
│ ├── AuditLogListener.java # Consumidor Kafka
│ ├── AuditLogProducer.java # Productor Kafka
│ ├── AuditLogService.java # Servicio de auditoria
│ ├── KafkaConsumerConfig.java # Config consumidor
│ ├── KafkaProducerConfig.java # Config productor
│ └── KafkaTopicConfig.java # Definicion de topics
├── repository/
│ ├── AuditLogRepository.java # Repo MongoDB
│ └── EntityExampleRepository.java # Repo JPA
└── service/
└── {ServiceName}Service.java # Capa de servicio
src/main/resources/
├── application.yml # Config base (minima)
├── application-localhost.yml # Perfil local sin Docker
├── application-local.yml # Perfil local con Docker
├── application-dev.yml # Perfil DEV
├── application-qa.yml # Perfil QA
├── application-prod.yml # Perfil PROD
├── banner.txt # Banner de arranque
└── config-server/
├── {service-name}-localhost.yml
├── {service-name}-local.yml
├── {service-name}-dev.yml
├── {service-name}-qa.yml
└── {service-name}-prod.yml
{service}/
├── pom.xml
├── Dockerfile
├── docker-compose.yml
├── README.md
├── USAGE.md
├── .gitignore
└── bin/
└── deploy-local.sh
| Version | Fecha | Autor | Descripcion |
|---|---|---|---|
| 1.1.0 | 2026-03-04 | Carlos Torres | Correcciones post-revision: (1) Stack tecnologico diferenciado - PostgreSQL para Simappe, Oracle 21c para Nebula. (2) SimappeModel: se listan solo dominios core del framework (ADMIN, CORE, CONFIG, OAUTH2), se excluyen dominios de negocio propios del producto Simappe (GAMES, DIAN, BPM, CREDIT). (3) Nota explicita: recursos Simappe son de solo lectura (producto externo de CatcSoft). (4) nebula-commons: se documenta Oracle 21c como BD oficial de negocio. (5) Grafana y Prometheus: corregida ubicacion, pertenecen a cada nodo por ambiente, no al nodo TOOLS. (6) Agregado historial de cambios. |
| 1.0.0 | 2026-03-04 | Carlos Torres | Version inicial. Documento tecnico completo con 32 repositorios, 5 dominios de negocio, 10 servicios Simappe, 3 librerias Nebula, 3 transversales, 16 microservicios de dominio. Incluye arquitectura, dependencias, esquemas BD, infraestructura, convenciones y diagramas. |
Documento generado: 2026-03-04
Fuente de datos: Repositorios GitLab Centrica, INVENTARIO_GLOBAL_SERVICIOS.md, codigo fuente de servicios
Proximo review: Al incorporar nuevos servicios o cambios arquitectonicos significativos