Conversation
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 29088682 | Triggered | Generic Database Assignment | 93e1814 | docker/debezium/connector-log-traza.json | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
Signed-off-by: Caro R. Pereira <careb1983@hotmail.com>
There was a problem hiding this comment.
Pull request overview
This PR modernizes the Monitor backend/runtime configuration (typed @ConfigurationProperties, SSE keep-alives) and adds a substantial documentation set (runbooks/ADRs/diagrams), alongside build/tooling updates (Java 21, Spring Boot parent bump, frontend ESLint config).
Changes:
- Backend: introduce SSE
:connected+ periodic:heartbeat, and migrate polling/mail settings to typed@ConfigurationProperties. - Tooling/build: update Java version/CI to 21, adjust Maven deps, add frontend ESLint config/pins.
- Docs: add operations runbook, ADRs, and PlantUML diagrams; expand top-level README.
Reviewed changes
Copilot reviewed 36 out of 38 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
src/main/java/com/monitor/service/EventBus.java |
Adds initial SSE comment + scheduled heartbeat and refactors broadcasting. |
src/main/java/com/monitor/service/PollingService.java |
Uses typed polling target properties instead of @Value lists. |
src/main/java/com/monitor/service/EmailService.java |
Uses typed mail properties instead of @Value fields. |
src/main/java/com/monitor/config/MonitorPollingTargetsProperties.java |
New configuration-properties holder for polling targets. |
src/main/java/com/monitor/config/MonitorMailProperties.java |
New configuration-properties holder for mail settings. |
src/main/java/com/monitor/config/JacksonConfig.java |
Adds an explicit ObjectMapper bean. |
src/main/resources/application.yml |
Adds SSE heartbeat interval and env-var mail password. |
src/test/java/com/monitor/service/EventBusTest.java |
Adds tests for initial heartbeat, periodic heartbeat, and disconnection cleanup. |
src/test/java/com/monitor/service/PollingServiceTest.java |
Updates to instantiate typed polling props instead of reflection. |
src/test/java/com/monitor/service/EmailServiceTest.java |
Updates to instantiate typed mail props instead of reflection. |
pom.xml |
Bumps parent/version targets and adds Jackson JSR310 dep. |
frontend/package.json |
Pins ESLint + Next ESLint config in devDependencies. |
frontend/.eslintrc.json |
Adds Next.js ESLint configuration. |
docs/** |
Adds documentation hub, runbooks, ADRs, and PlantUML diagrams. |
README.md |
Expands project overview and navigation. |
CONTRIBUTING.md |
Restructures contribution guide with clearer GitFlow/CC guidance. |
CHANGELOG.md |
Reworks changelog into bilingual sections. |
AGENTS.md |
Adds AI-agent guardrails and repo contracts. |
.github/workflows/{ci,deploy,release}.yml |
Updates CI/CD JDK to 21. |
.gitignore |
Adds ignore rules (currently with encoding issues). |
Comments suppressed due to low confidence (1)
src/main/java/com/monitor/service/EventBus.java:57
deadEmittersis only used as a temporary collection while iterating, but it’s created as aCopyOnWriteArrayList, which is significantly more expensive for writes than necessary here. Use a plainArrayListfor this local accumulator to reduce overhead during broadcasts/heartbeats.
| Esta pensada para responder rapidamente una pregunta: **�la plataforma esta sana, observable y conectada de extremo a extremo?** | ||
|
|
There was a problem hiding this comment.
This Spanish section contains a corrupted leading character (�la ...) indicating a file encoding/character set issue. It should be the proper inverted question mark and accents (e.g., ¿la plataforma está sana, observable y conectada de extremo a extremo?) to avoid broken rendering in GitHub/Markdown viewers.
| Este set documental es la biblioteca principal para entender, operar y evolucionar `Monitor`. | ||
| Esta dise�ado para tres audiencias: | ||
|
|
||
| - stakeholders ejecutivos y de arquitectura que necesitan vistas de alto nivel |
There was a problem hiding this comment.
The Spanish section includes corrupted characters (e.g., Esta dise�ado) which suggests the file was saved with the wrong encoding. Re-save as UTF-8 and restore the intended accented characters to avoid broken rendering/searchability.
| ```powershell | ||
| Set-Location "C:\Users\careb\VisualStudio Workspace\Monitor" | ||
| mvn --batch-mode clean verify | ||
| ``` |
There was a problem hiding this comment.
These PowerShell examples hard-code an absolute Windows path with a specific username. That makes the runbook non-reusable for other developers/CI environments. Prefer relative paths (repo root) or a placeholder like <path-to-repo> so the steps are portable.
| mail: | ||
| host: smtp.groupwise.example.com | ||
| port: 25 | ||
| username: monitor-alerts@example.com | ||
| password: changeme | ||
| password: ${MAIL_PASSWORD:changeme} | ||
| properties: |
There was a problem hiding this comment.
Defaulting MAIL_PASSWORD to changeme means an insecure placeholder can be used unintentionally in real deployments. Consider removing the default (so startup fails fast when unset) or defaulting to an empty value and validating configuration explicitly.
| <!-- Scheduling & async support (included in spring-boot-starter) --> | ||
| <dependency> | ||
| <groupId>org.springframework.boot</groupId> | ||
| <artifactId>spring-boot-starter</artifactId> | ||
| </dependency> | ||
|
|
||
| <!-- JSON serialization --> | ||
| <dependency> | ||
| <groupId>com.fasterxml.jackson.core</groupId> | ||
| <artifactId>jackson-databind</artifactId> | ||
| </dependency> | ||
| <dependency> | ||
| <groupId>com.fasterxml.jackson.datatype</groupId> | ||
| <artifactId>jackson-datatype-jsr310</artifactId> | ||
| </dependency> |
There was a problem hiding this comment.
These dependencies are redundant: spring-boot-starter-web already brings in spring-boot-starter and Jackson (jackson-databind, plus the JSR-310 module via Boot’s dependency management). Keeping them here increases maintenance surface (versions/duplicates) without adding functionality.
| [English](#english) | [Espanol](#espanol) | ||
|
|
There was a problem hiding this comment.
The language toggle uses Espanol / #espanol, which is inconsistent with the rest of the repo where Spanish links use Español / #español (e.g., root README.md). This can lead to inconsistent navigation patterns across docs; consider standardizing the label and anchor to match the established convention.
| **Architectural Rationale Library / Biblioteca de Racional Arquitect�nico** | ||
|
|
||
| [English](#english) | [Espa�ol](#espa�ol) | ||
|
|
There was a problem hiding this comment.
This file contains multiple mojibake / replacement characters (e.g., Arquitect�nico, Espa�ol, c�digo, �ndice) which indicates a text encoding problem. Please re-save the file as UTF-8 and restore the intended accented characters so headings and links render correctly.
| import com.fasterxml.jackson.databind.ObjectMapper; | ||
| import com.fasterxml.jackson.databind.SerializationFeature; | ||
| import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | ||
| import org.springframework.context.annotation.Bean; | ||
| import org.springframework.context.annotation.Configuration; | ||
|
|
||
| @Configuration | ||
| public class JacksonConfig { | ||
|
|
||
| @Bean | ||
| public ObjectMapper objectMapper() { | ||
| ObjectMapper objectMapper = new ObjectMapper(); | ||
| objectMapper.registerModule(new JavaTimeModule()); | ||
| objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); | ||
| return objectMapper; |
There was a problem hiding this comment.
Defining a standalone ObjectMapper bean like this replaces Spring Boot’s auto-configured mapper and can silently drop Boot’s default Jackson customizations/modules (and any future ones). Prefer customizing via Jackson2ObjectMapperBuilderCustomizer (or removing this config entirely if the defaults already meet the need).
| import com.fasterxml.jackson.databind.ObjectMapper; | |
| import com.fasterxml.jackson.databind.SerializationFeature; | |
| import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | |
| import org.springframework.context.annotation.Bean; | |
| import org.springframework.context.annotation.Configuration; | |
| @Configuration | |
| public class JacksonConfig { | |
| @Bean | |
| public ObjectMapper objectMapper() { | |
| ObjectMapper objectMapper = new ObjectMapper(); | |
| objectMapper.registerModule(new JavaTimeModule()); | |
| objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); | |
| return objectMapper; | |
| import com.fasterxml.jackson.databind.SerializationFeature; | |
| import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | |
| import org.springframework.context.annotation.Bean; | |
| import org.springframework.context.annotation.Configuration; | |
| import org.springframework.http.converter.json.Jackson2ObjectMapperBuilderCustomizer; | |
| @Configuration | |
| public class JacksonConfig { | |
| @Bean | |
| public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { | |
| return builder -> { | |
| builder.modules(new JavaTimeModule()); | |
| builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); | |
| }; |
Description / Descripción
Fixes #
Type of Change / Tipo de Cambio
feat— New feature / Nueva funcionalidadfix— Bug fix / Corrección de bughotfix— Critical production fix / Corrección crítica de produccióndocs— Documentation update / Actualización de documentaciónrefactor— Code refactor (no feature/fix) / Refactorización de código (sin funcionalidad/fix)test— Adding or updating tests / Agregar o actualizar testschore— Build process / dependency update / Proceso de build / actualización de dependenciasci— CI/CD change / Cambio en CI/CDBranch Checklist / Lista de Verificación de Ramas (GitFlow)
feature/,bugfix/,hotfix/,release/) / La rama sigue la convención de nomenclaturadevelopfor features/bugfixes,mainfor hotfixes/releases) / Apunta a la rama base correctaTesting / Pruebas
Manual Testing Steps / Pasos de Prueba Manual
Screenshots (if applicable) / Capturas de Pantalla (si aplica)
Additional Notes / Notas Adicionales