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
288 lines
7.4 KiB
Bash
Executable File
288 lines
7.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# generate-propagation-report.sh
|
|
# Genera dashboard visual de estado de modulos
|
|
# Sistema: NEXUS v3.4
|
|
# =============================================================================
|
|
#
|
|
# Descripcion:
|
|
# Genera un reporte ASCII art formateado mostrando el estado de todos
|
|
# los modulos del knowledge-base, que proyectos los usan, y cuales
|
|
# estan desactualizados.
|
|
#
|
|
# Uso:
|
|
# ./generate-propagation-report.sh [opciones]
|
|
#
|
|
# Opciones:
|
|
# --no-color Output sin codigos ANSI
|
|
# --markdown Generar reporte en formato Markdown
|
|
# --output FILE Guardar reporte en archivo
|
|
# --help Mostrar esta ayuda
|
|
#
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
# Colores (se pueden desactivar con --no-color)
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
CYAN='\033[0;36m'
|
|
WHITE='\033[1;37m'
|
|
NC='\033[0m'
|
|
|
|
# Configuracion
|
|
WORKSPACE="/home/isem/workspace-v1"
|
|
KB_PATH="$WORKSPACE/shared/knowledge-base"
|
|
TRAZABILIDAD="$KB_PATH/TRAZABILIDAD-PROYECTOS.yml"
|
|
REGISTRO="$KB_PATH/propagacion/REGISTRO-PROPAGACIONES.yml"
|
|
|
|
# Parametros
|
|
NO_COLOR=false
|
|
MARKDOWN=false
|
|
OUTPUT_FILE=""
|
|
|
|
# Contadores
|
|
TOTAL_MODULOS=0
|
|
TOTAL_PROYECTOS=0
|
|
PROPAGACIONES_PENDIENTES=0
|
|
EVALUACIONES_PENDIENTES=0
|
|
|
|
# =============================================================================
|
|
# FUNCIONES
|
|
# =============================================================================
|
|
|
|
show_help() {
|
|
head -25 "$0" | tail -20
|
|
exit 0
|
|
}
|
|
|
|
parse_args() {
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--help)
|
|
show_help
|
|
;;
|
|
--no-color)
|
|
NO_COLOR=true
|
|
RED=''
|
|
GREEN=''
|
|
YELLOW=''
|
|
BLUE=''
|
|
CYAN=''
|
|
WHITE=''
|
|
NC=''
|
|
shift
|
|
;;
|
|
--markdown)
|
|
MARKDOWN=true
|
|
NO_COLOR=true
|
|
RED=''
|
|
GREEN=''
|
|
YELLOW=''
|
|
BLUE=''
|
|
CYAN=''
|
|
WHITE=''
|
|
NC=''
|
|
shift
|
|
;;
|
|
--output)
|
|
OUTPUT_FILE=$2
|
|
shift 2
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
check_files() {
|
|
if [ ! -f "$TRAZABILIDAD" ]; then
|
|
echo "ERROR: TRAZABILIDAD-PROYECTOS.yml no encontrado"
|
|
exit 2
|
|
fi
|
|
}
|
|
|
|
print_header() {
|
|
if $MARKDOWN; then
|
|
echo "# Estado de Modulos - NEXUS v3.4"
|
|
echo ""
|
|
echo "**Generado:** $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo ""
|
|
else
|
|
echo ""
|
|
echo "===================================================================="
|
|
echo " ESTADO DE MODULOS - NEXUS v3.4"
|
|
echo "===================================================================="
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
get_kb_version() {
|
|
local modulo=$1
|
|
grep "^ $modulo:" "$TRAZABILIDAD" 2>/dev/null | head -1 | sed 's/.*: *"*//; s/"*$//'
|
|
}
|
|
|
|
get_projects_for_module() {
|
|
local modulo=$1
|
|
grep -A20 "^ $modulo:" "$TRAZABILIDAD" 2>/dev/null | grep "^ - " | sed 's/^ - //'
|
|
}
|
|
|
|
get_project_version() {
|
|
local proyecto=$1
|
|
local modulo=$2
|
|
grep -A50 "^ $proyecto:" "$TRAZABILIDAD" 2>/dev/null | grep "$modulo:" | head -1 | sed 's/.*: *"*//; s/"*$//'
|
|
}
|
|
|
|
print_module_section() {
|
|
local modulo=$1
|
|
local kb_version=$2
|
|
|
|
TOTAL_MODULOS=$((TOTAL_MODULOS + 1))
|
|
|
|
if $MARKDOWN; then
|
|
echo "## $modulo (v$kb_version)"
|
|
echo ""
|
|
echo "| Proyecto | Version | Estado |"
|
|
echo "|----------|---------|--------|"
|
|
else
|
|
echo -e " ${CYAN}$modulo${NC} (v$kb_version)"
|
|
fi
|
|
|
|
local proyectos=$(get_projects_for_module "$modulo")
|
|
|
|
if [ -z "$proyectos" ]; then
|
|
if $MARKDOWN; then
|
|
echo "| - | - | Sin proyectos |"
|
|
else
|
|
echo " (sin proyectos usando este modulo)"
|
|
fi
|
|
echo ""
|
|
return
|
|
fi
|
|
|
|
for proyecto in $proyectos; do
|
|
TOTAL_PROYECTOS=$((TOTAL_PROYECTOS + 1))
|
|
|
|
local project_version=$(get_project_version "$proyecto" "$modulo")
|
|
if [ -z "$project_version" ]; then
|
|
project_version="?"
|
|
fi
|
|
|
|
local status_icon=""
|
|
local status_text=""
|
|
|
|
if [ "$kb_version" == "$project_version" ]; then
|
|
status_icon="${GREEN}[OK]${NC}"
|
|
status_text="OK"
|
|
else
|
|
PROPAGACIONES_PENDIENTES=$((PROPAGACIONES_PENDIENTES + 1))
|
|
status_icon="${YELLOW}[!!]${NC}"
|
|
status_text="DESACTUALIZADO"
|
|
fi
|
|
|
|
if $MARKDOWN; then
|
|
echo "| $proyecto | $project_version | $status_text |"
|
|
else
|
|
# Padding para alineacion
|
|
local padding="................"
|
|
local name_len=${#proyecto}
|
|
local pad_len=$((20 - name_len))
|
|
if [ $pad_len -lt 1 ]; then pad_len=1; fi
|
|
local dots="${padding:0:$pad_len}"
|
|
|
|
echo -e " +-- $proyecto $dots $status_icon v$project_version"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
}
|
|
|
|
print_legend() {
|
|
if $MARKDOWN; then
|
|
echo "---"
|
|
echo ""
|
|
echo "**Leyenda:**"
|
|
echo "- OK = Al dia"
|
|
echo "- DESACTUALIZADO = Requiere propagacion"
|
|
echo "- EVALUANDO = En evaluacion"
|
|
echo ""
|
|
else
|
|
echo "--------------------------------------------------------------------"
|
|
echo -e "LEYENDA: ${GREEN}[OK]${NC} Al dia ${YELLOW}[!!]${NC} Desactualizado ${BLUE}[??]${NC} Evaluando"
|
|
echo "--------------------------------------------------------------------"
|
|
fi
|
|
}
|
|
|
|
print_summary() {
|
|
echo ""
|
|
if $MARKDOWN; then
|
|
echo "## Resumen"
|
|
echo ""
|
|
echo "| Metrica | Valor |"
|
|
echo "|---------|-------|"
|
|
echo "| Modulos trackeados | $TOTAL_MODULOS |"
|
|
echo "| Relaciones proyecto-modulo | $TOTAL_PROYECTOS |"
|
|
echo "| Propagaciones pendientes | $PROPAGACIONES_PENDIENTES |"
|
|
echo ""
|
|
else
|
|
echo "RESUMEN:"
|
|
echo " - Modulos trackeados: $TOTAL_MODULOS"
|
|
echo " - Relaciones proyecto-modulo: $TOTAL_PROYECTOS"
|
|
echo " - Propagaciones pendientes: $PROPAGACIONES_PENDIENTES"
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
print_footer() {
|
|
if $MARKDOWN; then
|
|
echo "---"
|
|
echo ""
|
|
echo "*Generado por generate-propagation-report.sh*"
|
|
else
|
|
echo "Ultima actualizacion: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
echo "===================================================================="
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
generate_report() {
|
|
print_header
|
|
|
|
# Obtener modulos principales del indice inverso
|
|
local modulos="auth-jwt-nestjs payments-stripe-checkout payments-stripe-subscriptions users-roles-permissions ui-admin-dashboard"
|
|
|
|
for modulo in $modulos; do
|
|
local kb_version=$(get_kb_version "$modulo")
|
|
if [ -n "$kb_version" ]; then
|
|
print_module_section "$modulo" "$kb_version"
|
|
fi
|
|
done
|
|
|
|
print_legend
|
|
print_summary
|
|
print_footer
|
|
}
|
|
|
|
# =============================================================================
|
|
# MAIN
|
|
# =============================================================================
|
|
|
|
main() {
|
|
parse_args "$@"
|
|
check_files
|
|
|
|
if [ -n "$OUTPUT_FILE" ]; then
|
|
generate_report > "$OUTPUT_FILE"
|
|
echo "Reporte guardado en: $OUTPUT_FILE"
|
|
else
|
|
generate_report
|
|
fi
|
|
|
|
exit 0
|
|
}
|
|
|
|
main "$@"
|