workspace-v1/devtools/scripts/propagation/generate-scrum-tasks.sh
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

346 lines
9.5 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# generate-scrum-tasks.sh
# Genera tareas SCRUM formales para propagacion de mejoras
# Version: 1.0.0
# Sistema: NEXUS v3.4 + SIMCO + CAPVED
# EPIC: EPIC-012
# =============================================================================
#
# Uso:
# ./generate-scrum-tasks.sh <modulo> <version> <tipo> [opciones]
#
# Parametros:
# modulo Nombre del modulo (ej: auth-jwt-nestjs)
# version Version nueva (ej: 2.2.0)
# tipo Tipo de cambio: security-fix|bug-fix|feature|refactor
#
# Opciones:
# --epic Generar EPIC contenedora
# --output-dir DIR Directorio de salida (default: ./propagacion-tasks)
# --dry-run Mostrar que se generaria sin crear archivos
# --help Mostrar esta ayuda
#
# Ejemplo:
# ./generate-scrum-tasks.sh auth-jwt-nestjs 2.2.0 security-fix --epic
#
# =============================================================================
set -e
# Configuracion
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
KB_PATH="/home/isem/workspace-v1/shared/knowledge-base"
TRAZABILIDAD="$KB_PATH/TRAZABILIDAD-PROYECTOS.yml"
TEMPLATE_DIR="$KB_PATH/propagacion/templates"
OUTPUT_DIR="./propagacion-tasks"
GENERATE_EPIC=false
DRY_RUN=false
# Colores
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Funciones de logging
log_ok() { echo -e "${GREEN}[OK]${NC} $1"; }
log_fail() { echo -e "${RED}[FAIL]${NC} $1"; }
log_info() { echo -e "${YELLOW}[INFO]${NC} $1"; }
log_step() { echo -e "${BLUE}[STEP]${NC} $1"; }
# Funcion de ayuda
show_help() {
head -35 "$0" | tail -28
exit 0
}
# Validar parametros
if [ "$1" == "--help" ] || [ "$1" == "-h" ]; then
show_help
fi
# Parsear argumentos posicionales
MODULO="${1:-}"
VERSION="${2:-}"
TIPO="${3:-}"
if [ -z "$MODULO" ] || [ -z "$VERSION" ] || [ -z "$TIPO" ]; then
echo -e "${RED}ERROR:${NC} Parametros insuficientes"
echo "Uso: $0 <modulo> <version> <tipo> [opciones]"
echo "Ejecute '$0 --help' para mas informacion"
exit 1
fi
# Validar tipo
case $TIPO in
security-fix|bug-fix|feature|refactor)
;;
*)
echo -e "${RED}ERROR:${NC} Tipo invalido: $TIPO"
echo "Tipos validos: security-fix, bug-fix, feature, refactor"
exit 1
;;
esac
shift 3 || true
# Parsear opciones
while [[ $# -gt 0 ]]; do
case $1 in
--epic) GENERATE_EPIC=true; shift ;;
--output-dir) OUTPUT_DIR="$2"; shift 2 ;;
--dry-run) DRY_RUN=true; shift ;;
--help|-h) show_help ;;
*) echo -e "${RED}ERROR:${NC} Opcion desconocida: $1"; exit 1 ;;
esac
done
# Generar ID de propagacion
PROP_ID="PROP-$(date +%Y)-$(printf '%03d' $((RANDOM % 1000)))"
FECHA=$(date +%Y-%m-%d)
echo "╔═══════════════════════════════════════════════════════════════╗"
echo "║ GENERADOR DE TAREAS SCRUM PARA PROPAGACION ║"
echo "╚═══════════════════════════════════════════════════════════════╝"
echo ""
echo " Propagacion ID: $PROP_ID"
echo " Modulo: $MODULO"
echo " Version: $VERSION"
echo " Tipo: $TIPO"
echo " Generar EPIC: $GENERATE_EPIC"
echo " Output: $OUTPUT_DIR"
echo " Dry-run: $DRY_RUN"
echo ""
# Crear directorio de salida
if [ "$DRY_RUN" = false ]; then
mkdir -p "$OUTPUT_DIR"
log_ok "Directorio creado: $OUTPUT_DIR"
else
log_info "[DRY-RUN] Crearia directorio: $OUTPUT_DIR"
fi
# Obtener proyectos afectados desde TRAZABILIDAD
log_step "Buscando proyectos que usan $MODULO..."
PROYECTOS=()
if [ -f "$TRAZABILIDAD" ]; then
# Buscar proyectos que referencian el modulo
while IFS= read -r line; do
if [[ "$line" =~ proyecto:\ *\"?([a-zA-Z0-9_-]+)\"? ]]; then
PROYECTOS+=("${BASH_REMATCH[1]}")
fi
done < <(grep -A5 "$MODULO" "$TRAZABILIDAD" 2>/dev/null || true)
fi
# Si no se encontraron en trazabilidad, usar lista por defecto
if [ ${#PROYECTOS[@]} -eq 0 ]; then
log_info "No se encontraron proyectos en TRAZABILIDAD, usando lista por defecto"
PROYECTOS=("gamilit" "trading-platform" "erp-core")
fi
log_ok "Proyectos encontrados: ${PROYECTOS[*]}"
# Determinar prioridad segun tipo
case $TIPO in
security-fix) PRIORIDAD="Critica" ;;
bug-fix) PRIORIDAD="Alta" ;;
feature) PRIORIDAD="Media" ;;
refactor) PRIORIDAD="Baja" ;;
esac
# Generar EPIC si se solicito
if [ "$GENERATE_EPIC" = true ]; then
EPIC_FILE="$OUTPUT_DIR/EPIC-$PROP_ID.md"
log_step "Generando EPIC: $EPIC_FILE"
EPIC_CONTENT="---
id: EPIC-$PROP_ID
title: \"Propagacion de $MODULO v$VERSION\"
type: Epic
status: \"To Do\"
priority: $PRIORIDAD
created_date: \"$FECHA\"
labels: [ \"propagacion\", \"$TIPO\", \"$MODULO\" ]
---
# EPIC: Propagacion de $MODULO v$VERSION
**ID:** EPIC-$PROP_ID
**Tipo:** $TIPO
**Prioridad:** $PRIORIDAD
**Fecha:** $FECHA
**Responsable:** @PERFIL_KB_MANAGER
---
## Descripcion
Propagacion de mejora de tipo \`$TIPO\` del modulo \`$MODULO\` a version \`$VERSION\` hacia todos los proyectos que lo consumen.
## Proyectos Afectados
| Proyecto | Estado | Tarea |
|----------|--------|-------|
$(for p in "${PROYECTOS[@]}"; do echo "| $p | Pendiente | TASK-$PROP_ID-$p |"; done)
## Tareas Generadas
$(for i in "${!PROYECTOS[@]}"; do echo "- TASK-$PROP_ID-${PROYECTOS[$i]}.md"; done)
## Criterios de Aceptacion
- [ ] Todos los proyectos actualizados a v$VERSION
- [ ] Build exitoso en todos los proyectos
- [ ] Tests pasando en todos los proyectos
- [ ] REGISTRO-PROPAGACIONES.yml actualizado
- [ ] TRAZABILIDAD-PROYECTOS.yml sincronizado
## Referencias
- Modulo: \`$MODULO\`
- Version anterior: (verificar en cada proyecto)
- Version nueva: \`$VERSION\`
- Directiva: @PROPAGACION
- Protocolo: @PROTOCOLO_PROP
"
if [ "$DRY_RUN" = false ]; then
echo "$EPIC_CONTENT" > "$EPIC_FILE"
log_ok "EPIC generada: $EPIC_FILE"
else
log_info "[DRY-RUN] Generaria EPIC: $EPIC_FILE"
echo "---"
echo "$EPIC_CONTENT" | head -30
echo "..."
fi
fi
# Generar TASK por proyecto
log_step "Generando tareas por proyecto..."
for proyecto in "${PROYECTOS[@]}"; do
TASK_FILE="$OUTPUT_DIR/TASK-$PROP_ID-$proyecto.md"
TASK_CONTENT="---
id: TASK-$PROP_ID-$proyecto
title: \"Propagar $MODULO v$VERSION a $proyecto\"
type: Task
status: \"To Do\"
priority: $PRIORIDAD
assignee: \"@PERFIL_PROJECT_AGENT\"
parent: \"EPIC-$PROP_ID\"
created_date: \"$FECHA\"
labels: [ \"propagacion\", \"$TIPO\", \"$modulo\", \"$proyecto\" ]
---
# TASK: Propagar $MODULO v$VERSION a $proyecto
**ID:** TASK-$PROP_ID-$proyecto
**Proyecto destino:** $proyecto
**Modulo:** $MODULO
**Version nueva:** $VERSION
**Tipo:** $TIPO
**Prioridad:** $PRIORIDAD
**Fecha:** $FECHA
---
## Descripcion
Actualizar el modulo \`$MODULO\` a la version \`$VERSION\` en el proyecto \`$proyecto\`.
## Contexto
- **Propagacion ID:** $PROP_ID
- **Tipo de cambio:** $TIPO
- **Referencia:** @PROPAGACION
## Pasos de Implementacion
1. [ ] Verificar version actual del modulo en el proyecto
2. [ ] Revisar changelog/notas de la nueva version
3. [ ] Actualizar dependencia en package.json (si aplica)
4. [ ] Actualizar codigo que consume el modulo (si hay breaking changes)
5. [ ] Ejecutar build: \`npm run build\`
6. [ ] Ejecutar tests: \`npm test\`
7. [ ] Actualizar documentacion si es necesario
8. [ ] Commit con referencia a $PROP_ID
## Archivos Afectados
\`\`\`
projects/$proyecto/
├── package.json # Actualizar version
├── apps/backend/src/... # Si hay cambios de API
└── orchestration/
└── 00-guidelines/
└── HERENCIA-SIMCO.md # Actualizar seccion propagacion
\`\`\`
## Validacion
\`\`\`bash
cd /home/isem/workspace-v1/projects/$proyecto
npm run build
npm test
\`\`\`
## Criterios de Aceptacion
- [ ] Modulo actualizado a v$VERSION
- [ ] Build exitoso sin errores
- [ ] Tests pasando
- [ ] Sin regresiones funcionales
- [ ] Commit con mensaje: \"[$PROP_ID] Propagar $MODULO v$VERSION\"
## Reporte de Ejecucion
| Campo | Valor |
|-------|-------|
| Estado | PENDIENTE |
| Commit | (pendiente) |
| Fecha ejecucion | (pendiente) |
| Notas | |
---
**Generado por:** generate-scrum-tasks.sh
**Sistema:** NEXUS v3.4 + SIMCO + CAPVED
"
if [ "$DRY_RUN" = false ]; then
echo "$TASK_CONTENT" > "$TASK_FILE"
log_ok "TASK generada: $TASK_FILE"
else
log_info "[DRY-RUN] Generaria TASK: $TASK_FILE"
fi
done
# Resumen
echo ""
echo "═══════════════════════════════════════════════════════════════"
echo " RESUMEN DE GENERACION"
echo "═══════════════════════════════════════════════════════════════"
echo ""
if [ "$GENERATE_EPIC" = true ]; then
echo " EPIC generada: 1"
fi
echo " TASKs generadas: ${#PROYECTOS[@]}"
echo " Directorio: $OUTPUT_DIR"
echo ""
if [ "$DRY_RUN" = true ]; then
echo -e "${YELLOW}[DRY-RUN] No se crearon archivos${NC}"
else
echo -e "${GREEN}[COMPLETADO] Tareas generadas en: $OUTPUT_DIR${NC}"
echo ""
echo "Proximos pasos:"
echo " 1. Revisar tareas generadas"
echo " 2. Asignar a @PERFIL_PROJECT_AGENT"
echo " 3. Ejecutar propagacion"
echo " 4. Validar con: ./validate-propagation-chain.sh $PROP_ID"
fi