-
Notifications
You must be signed in to change notification settings - Fork 0
Proceso de Desarrollo
Versión: v1.2.0 | Fecha: 2026-06-13
Este documento describe el proceso de desarrollo de software del equipo Kairo, desde la captura de requisitos hasta el mantenimiento en producción.
flowchart TD
START(( )) --> REQ
%% ── REQUIREMENTS ──────────────────────────────────────────
subgraph REQUIREMENTS["📋 Requirements"]
REQ["Captura de requisitos\n(issues, feedback, backlog)"]
REQ --> STORIES["Redactar User Stories\ny criterios de aceptación"]
STORIES --> PRIORITY["Priorizar en backlog\ncon story points"]
end
PRIORITY --> PLAN
%% ── SPRINT PLANNING ────────────────────────────────────────
subgraph SPRINT_PLAN["📅 Sprint Planning"]
PLAN["Crear Sprint en Kairo\n(nombre, fechas, objetivo)"]
PLAN --> ASSIGN["Asignar tareas\na miembros del equipo"]
ASSIGN --> ACTIVATE["Activar Sprint\n→ estado ACTIVE"]
end
ACTIVATE --> DESIGN
%% ── DESIGN ─────────────────────────────────────────────────
subgraph DESIGN["🎨 Design"]
direction TB
DB["Diseño de esquema\nOracle DB"]
API_D["Diseño de contratos\nAPI REST"]
UI["Diseño de interfaz\nReact UI / UX"]
DB --- API_D --- UI
end
DESIGN --> DEV
%% ── DEVELOPMENT ─────────────────────────────────────────────
subgraph DEV["💻 Development"]
direction TB
BACK["Backend\nSpring Boot + JPA"]
FRONT["Frontend\nReact + Vite"]
BOT["Kairo Bot\nTelegram long-polling"]
BACK --- FRONT --- BOT
end
DEV --> BRANCH["Crear rama de feature\nfeat/ · fix/ · hotfix/"]
BRANCH --> PR["Abrir Pull Request\nhacia main"]
PR --> REVIEW{"Code Review\naprobado?"}
REVIEW -- "❌ Cambios\nsolicitados" --> DEV
REVIEW -- "✅ Aprobado" --> CI
%% ── CI ──────────────────────────────────────────────────────
subgraph CI["⚙️ CI — GitHub Actions"]
BUILD["Maven build\n+ compilar frontend"]
BUILD --> TESTS["Ejecutar tests\nautomatizados"]
TESTS --> DOCKER["Construir imagen\nDocker"]
end
CI --> CI_OK{"Pipeline\npasó?"}
CI_OK -- "❌ Falló" --> DEV
CI_OK -- "✅ Verde" --> MERGE["Merge a main\n+ tag de release"]
%% ── DEPLOYMENT ──────────────────────────────────────────────
MERGE --> DEPLOY
subgraph DEPLOY["🚀 Deployment — OCI"]
DOWN["docker compose down"]
DOWN --> PULL["docker compose pull\n(nueva imagen)"]
PULL --> UP["docker compose up -d\n(contenedor en background)"]
end
DEPLOY --> VERIFY{"Verificación\nen producción"}
VERIFY -- "❌ Error detectado" --> ROLLBACK["Ejecutar workflow\nde rollback\n(SHA anterior)"]
ROLLBACK --> DEV
VERIFY -- "✅ Funciona" --> DONE_TASK["Marcar tarea DONE\n+ registrar horas reales"]
%% ── SPRINT CLOSE ────────────────────────────────────────────
DONE_TASK --> SPRINT_END{"¿Todas las\ntareas DONE?"}
SPRINT_END -- "No" --> DEV
SPRINT_END -- "Sí" --> CLOSE_SPRINT["Cerrar Sprint\n→ estado CLOSED"]
%% ── MAINTENANCE ─────────────────────────────────────────────
CLOSE_SPRINT --> MAINTENANCE
subgraph MAINTENANCE["🔧 Maintenance"]
RETRO["Sprint Retrospective\n+ Review de métricas\n(Dashboard KPIs)"]
RETRO --> MONITOR["Monitoreo de producción\n(logs, notificaciones)"]
MONITOR --> HOTFIX{"¿Hotfix\nnecesario?"}
HOTFIX -- "Sí" --> HFIX["Crear rama hotfix/\ny aplicar fix urgente"]
HFIX --> PR
HOTFIX -- "No" --> NEXT["Planear siguiente\nSprint"]
end
NEXT --> REQ
END(( ))
MAINTENANCE --> END
%% ── ESTILOS ─────────────────────────────────────────────────
style START fill:#000,stroke:#000,color:#fff
style END fill:#000,stroke:#000,color:#fff,stroke-width:4px
style REQUIREMENTS fill:#e8f4fd,stroke:#2196F3
style SPRINT_PLAN fill:#e8f5e9,stroke:#4CAF50
style DESIGN fill:#fff3e0,stroke:#FF9800
style DEV fill:#f3e5f5,stroke:#9C27B0
style CI fill:#fce4ec,stroke:#E91E63
style DEPLOY fill:#e0f2f1,stroke:#009688
style MAINTENANCE fill:#fff8e1,stroke:#FFC107
El ciclo inicia con la captura de necesidades del cliente o del equipo. Los requisitos se traducen en User Stories con criterios de aceptación claros y se priorizan en el backlog con story points. Herramientas: GitHub Issues, reuniones de equipo.
El Manager crea un Sprint en Kairo, define el objetivo y las fechas. Las tareas del backlog se asignan a los miembros del equipo. El sprint se activa formalmente al iniciar el período de trabajo.
Actividad paralela que define:
- Esquema de base de datos — tablas, relaciones, constraints en Oracle DB.
- Contratos de API REST — endpoints, DTOs, códigos de respuesta (documentados en Swagger/OpenAPI).
- Interfaz de usuario — wireframes y componentes React.
Desarrollo simultáneo de los tres componentes del sistema:
- Backend (Spring Boot, JPA, MapStruct, Spring Security + JWT)
- Frontend (React + Vite, componentes funcionales)
- Kairo Bot (módulo de Telegram dentro del monolito, long-polling)
Cada feature se desarrolla en una rama independiente siguiendo la convención feat/, fix/, o hotfix/.
Al terminar el desarrollo, se abre un PR hacia main. Otro miembro del equipo revisa:
- Correctitud lógica y de negocio
- Adherencia a la arquitectura en capas
- Cobertura de casos borde y validaciones
Si hay cambios solicitados, el desarrollador vuelve a la fase de desarrollo.
Al aprobar el PR, el pipeline automático ejecuta:
- Maven build + compilación del frontend con Vite
- Tests automatizados (unitarios e integración)
- Construcción de imagen Docker con la nueva versión
Si alguno falla, el merge se bloquea y se regresa a desarrollo.
Con el pipeline verde, se hace merge a main y se publica un tag de release (ej. v1.2.0). El deploy en OCI ejecuta:
docker compose down
docker compose pull # descarga la nueva imagen
docker compose up -d # levanta el stack actualizadoSi se detecta un error en producción, el workflow de rollback restaura la imagen del SHA anterior automáticamente.
Una vez verificado en producción, cada tarea se marca como DONE en Kairo registrando las horas reales trabajadas — dato que alimenta las métricas del Dashboard.
Al concluir el sprint, el Manager lo cierra. El equipo realiza una retrospectiva revisando los KPIs del Dashboard (velocity, eficiencia, horas por developer). Se monitorea producción de forma continua; si se detecta un bug crítico, se abre un hotfix/ que entra directamente al flujo de PR → CI → Deploy.
| Fase | Herramientas |
|---|---|
| Requirements & Planning | GitHub Issues · Kairo (sprints y tareas) |
| Design | Diagramas C4/DSL · Swagger/OpenAPI · Figma (wireframes) |
| Development | IntelliJ IDEA · VS Code · Java 17 · React 18 · Maven |
| Version Control | Git · GitHub (ramas, PRs, code review) |
| CI/CD | GitHub Actions · Docker · Maven Wrapper |
| Deployment | OCI Compute · Docker Compose · Contenedor único (monolito) |
| Monitoring | Logs de Docker · NOTIFICATION_LOG · Dashboard de Kairo |
| Rollback | GitHub Actions workflow (rollback.yml) con SHA de 7 caracteres |
| Prefijo | Uso |
|---|---|
feat/ |
Nueva funcionalidad |
fix/ |
Corrección de bug no crítico |
hotfix/ |
Corrección urgente en producción |
refactor/ |
Mejora interna sin cambio de comportamiento |
test/ |
Cambios exclusivamente de tests |
ci/ |
Cambios en pipelines de CI/CD |
docs/ |
Documentación únicamente |
Página mantenida por el equipo Kairo. Última actualización: v1.2.0 — 2026-06-13.