Skip to content

Develop#14

Merged
careb36 merged 8 commits into
mainfrom
develop
Mar 29, 2026
Merged

Develop#14
careb36 merged 8 commits into
mainfrom
develop

Conversation

@careb36

@careb36 careb36 commented Mar 29, 2026

Copy link
Copy Markdown
Owner

Description / Descripción

Fixes #

Type of Change / Tipo de Cambio

  • feat — New feature / Nueva funcionalidad
  • fix — Bug fix / Corrección de bug
  • hotfix — Critical production fix / Corrección crítica de producción
  • docs — Documentation update / Actualización de documentación
  • refactor — Code refactor (no feature/fix) / Refactorización de código (sin funcionalidad/fix)
  • test — Adding or updating tests / Agregar o actualizar tests
  • chore — Build process / dependency update / Proceso de build / actualización de dependencias
  • ci — CI/CD change / Cambio en CI/CD

Branch Checklist / Lista de Verificación de Ramas (GitFlow)

  • Branch follows naming convention (feature/, bugfix/, hotfix/, release/) / La rama sigue la convención de nomenclatura
  • Targeting the correct base branch (develop for features/bugfixes, main for hotfixes/releases) / Apunta a la rama base correcta
  • Commit messages follow Conventional Commits format / Los mensajes de commit siguen el formato de Conventional Commits

Testing / Pruebas

  • Unit tests pass locally / Las pruebas unitarias pasan localmente
  • Integration tests pass locally / Las pruebas de integración pasan localmente
  • Manual testing performed (describe steps below) / Se realizaron pruebas manuales (describe los pasos abajo)

Manual Testing Steps / Pasos de Prueba Manual

Screenshots (if applicable) / Capturas de Pantalla (si aplica)

Additional Notes / Notas Adicionales

Copilot AI review requested due to automatic review settings March 29, 2026 03:15
@gitguardian

gitguardian Bot commented Mar 29, 2026

Copy link
Copy Markdown

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
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
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. 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


🦉 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>
@careb36
careb36 merged commit 83a7f99 into main Mar 29, 2026
0 of 5 checks passed
@careb36
careb36 deleted the develop branch March 29, 2026 03:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

  • deadEmitters is only used as a temporary collection while iterating, but it’s created as a CopyOnWriteArrayList, which is significantly more expensive for writes than necessary here. Use a plain ArrayList for this local accumulator to reduce overhead during broadcasts/heartbeats.

Comment thread docs/operations/README.md
Comment on lines +45 to +46
Esta pensada para responder rapidamente una pregunta: **�la plataforma esta sana, observable y conectada de extremo a extremo?**

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment thread docs/README.md
Comment on lines +100 to +103
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

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +34 to +37
```powershell
Set-Location "C:\Users\careb\VisualStudio Workspace\Monitor"
mvn --batch-mode clean verify
```

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 18 to 23
mail:
host: smtp.groupwise.example.com
port: 25
username: monitor-alerts@example.com
password: changeme
password: ${MAIL_PASSWORD:changeme}
properties:

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment thread pom.xml
Comment on lines 50 to +64
<!-- 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>

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment thread docs/operations/README.md
Comment on lines +5 to +6
[English](#english) | [Espanol](#espanol)

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment thread docs/adr/README.md
Comment on lines +3 to +6
**Architectural Rationale Library / Biblioteca de Racional Arquitect�nico**

[English](#english) | [Espa�ol](#espa�ol)

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +3 to +17
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;

Copilot AI Mar 29, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
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);
};

Copilot uses AI. Check for mistakes.
Comment thread AGENTS.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants