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
346 lines
9.5 KiB
Bash
Executable File
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
|