Files
sf-sim/CONTRIBUTING.md
Jorge b67d53c855 docs(contributing): corregir avisos de markdownlint
Normaliza listas a `-` con un espacio (estilo del resto del repo),
convierte secciones en negrita en headings reales y corrige el typo
"iperativa" → "en imperativo".

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 12:31:48 +02:00

4.3 KiB

Guía de Contribución

¡Gracias por tu interés en contribuir a este proyecto! Este documento establece las pautas para asegurar que nuestro código se mantenga de alta calidad y que nuestra historia de git sea limpia y legible.

1. Flujo de Trabajo con Git

Ramas (Branches)

Utilizamos un modelo de ramas basado en el propósito del cambio.

  • Rama Principal: main. Esta rama siempre debe ser estable y desplegable.
  • Creación de Ramas: Crea una nueva rama para cada tarea, feature o bugfix. Nunca trabajes directamente sobre main.

Convención de nombres de ramas

  • Con ticket: WEBINT-XXX_descripcion-breve — el ticket actúa como tipo.
  • Sin ticket: tipo/descripcion-breve

Donde tipo puede ser:

  • feat: Nuevas características o funcionalidades.
  • fix: Corrección de errores.
  • docs: Cambios solo en documentación.
  • style: Cambios que no afectan el significado del código (espacios, formato, etc).
  • refactor: Cambio de código que no arregla un bug ni añade una característica.
  • test: Añadir tests faltantes o corregir existentes.
  • chore: Cambios en el proceso de construcción o herramientas auxiliares.

Ejemplos:

  • WEBINT-338_tiempo_suspension
  • feat/gateway-francia
  • fix/correlation-id

Commits

Seguimos la convención de Conventional Commits para nuestros mensajes de commit. Esto ayuda a generar changelogs automáticos y facilita la lectura del historial.

Formato

tipo(alcance): descripción breve en imperativo

[Cuerpo opcional: descripción más detallada del cambio]

[Pie opcional: referencias a issues, breaking changes]

Tipos comunes

  • feat: Una nueva característica.
  • fix: Una corrección de un bug.
  • docs: Cambios en la documentación.
  • style: Formato, puntos y comas faltantes, etc. (no cambios en la lógica).
  • refactor: Refactorización de código en producción.
  • perf: Cambio de código que mejora el rendimiento.
  • test: Añadir o corregir tests.
  • chore: Tareas rutinarias, actualizaciones de dependencias, etc.

Ejemplos:

  • feat(auth): implementar login con Google
  • fix(db): corregir error de conexión en timeout
  • docs(readme): actualizar instrucciones de instalación

Pull Requests (PRs)

  1. Asegúrate de que tu rama está actualizada con main.
  2. Abre un Pull Request dando una descripción clara de los cambios.
  3. Enlaza cualquier Issue relacionado (ej. Closes #123).
  4. Asigna como revisor a Alvar San Martin (alvarsanmartin@savefamilygps.com) y espera su aprobación antes de fusionar.

2. Estilo de Código

Las convenciones de código (naming, idioma, TypeScript, tests) están en:

3. Tests

Estrategia detallada en HOUSE-STYLE.md § Tests (vitest, tres niveles: domain puro / application con mocks de ports / infrastructure contra BD o testcontainers).

Política por defecto (TDD)

  • Código nuevo: se escribe con TDD (test primero) e incluye tests del nivel apropiado (domain puro si aplica; application con mocks; infrastructure si se añade un adapter).
  • Cobertura mínima del repo: 70%. Cada PR debe mantener o aumentar la cobertura.
  • Bugs corregidos: requieren al menos un test de regresión que reproduzca el fallo.
  • Antes de abrir un PR: los tests existentes deben pasar (yarn vitest run o /check).

Excepción para este repo (sf-sim)

sf-sim es legacy con cobertura actual ~12%. La regla TDD + 70% es aspiracional, no bloqueante:

  • Estricta para código nuevo (sí debe llevar tests).
  • Al tocar código legacy sin tests, retrofittearlos es opcional pero se valora positivamente. Nada de retrofits masivos.
  • La excepción decae cuando el repo alcance el 70% global.

Al reutilizar estos ficheros de configuración en un repo nuevo, esta excepción no aplica — la política por defecto es la que rige.


Equipo de Desarrollo.