- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
168 lines
6.0 KiB
Bash
Executable File
168 lines
6.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# validate-structure.sh - Valida la estructura del workspace
|
|
# Uso: ./validate-structure.sh [proyecto]
|
|
|
|
set -e
|
|
|
|
WORKSPACE_ROOT="${HOME}/workspace"
|
|
PROJECT=$1
|
|
ERRORS=0
|
|
WARNINGS=0
|
|
|
|
# Colores
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${BLUE}=== Validación de Estructura del Workspace ===${NC}"
|
|
echo ""
|
|
|
|
# Función para verificar directorio
|
|
check_dir() {
|
|
local path=$1
|
|
local required=$2
|
|
|
|
if [ -d "$path" ]; then
|
|
echo -e " ${GREEN}✓${NC} $path"
|
|
return 0
|
|
else
|
|
if [ "$required" = "required" ]; then
|
|
echo -e " ${RED}✗${NC} $path (FALTA - requerido)"
|
|
((ERRORS++))
|
|
return 1
|
|
else
|
|
echo -e " ${YELLOW}○${NC} $path (no existe)"
|
|
((WARNINGS++))
|
|
return 0
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Función para verificar archivo
|
|
check_file() {
|
|
local path=$1
|
|
local required=$2
|
|
|
|
if [ -f "$path" ]; then
|
|
echo -e " ${GREEN}✓${NC} $path"
|
|
return 0
|
|
else
|
|
if [ "$required" = "required" ]; then
|
|
echo -e " ${RED}✗${NC} $path (FALTA - requerido)"
|
|
((ERRORS++))
|
|
return 1
|
|
else
|
|
echo -e " ${YELLOW}○${NC} $path (no existe)"
|
|
((WARNINGS++))
|
|
return 0
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Validar estructura principal
|
|
echo -e "${BLUE}1. Validando estructura principal...${NC}"
|
|
check_dir "${WORKSPACE_ROOT}/core" "required"
|
|
check_dir "${WORKSPACE_ROOT}/projects" "required"
|
|
check_dir "${WORKSPACE_ROOT}/customers" "required"
|
|
check_dir "${WORKSPACE_ROOT}/knowledge-base" "required"
|
|
check_dir "${WORKSPACE_ROOT}/workspaces" "required"
|
|
check_dir "${WORKSPACE_ROOT}/devtools" "required"
|
|
check_file "${WORKSPACE_ROOT}/README.md" "required"
|
|
echo ""
|
|
|
|
# Validar core
|
|
echo -e "${BLUE}2. Validando core/...${NC}"
|
|
check_dir "${WORKSPACE_ROOT}/core/orchestration" "required"
|
|
check_dir "${WORKSPACE_ROOT}/core/orchestration/agents" "required"
|
|
check_dir "${WORKSPACE_ROOT}/core/orchestration/directivas" "required"
|
|
check_dir "${WORKSPACE_ROOT}/core/orchestration/templates" "required"
|
|
check_dir "${WORKSPACE_ROOT}/core/orchestration/claude" "required"
|
|
check_dir "${WORKSPACE_ROOT}/core/modules" "required"
|
|
check_dir "${WORKSPACE_ROOT}/core/standards" "required"
|
|
check_file "${WORKSPACE_ROOT}/core/README.md" "required"
|
|
check_file "${WORKSPACE_ROOT}/core/orchestration/README.md" "required"
|
|
echo ""
|
|
|
|
# Validar knowledge-base
|
|
echo -e "${BLUE}3. Validando knowledge-base/...${NC}"
|
|
check_dir "${WORKSPACE_ROOT}/knowledge-base/patterns" "required"
|
|
check_dir "${WORKSPACE_ROOT}/knowledge-base/reference" "required"
|
|
check_dir "${WORKSPACE_ROOT}/knowledge-base/guides" "required"
|
|
check_dir "${WORKSPACE_ROOT}/knowledge-base/snippets" "optional"
|
|
check_dir "${WORKSPACE_ROOT}/knowledge-base/lessons-learned" "optional"
|
|
echo ""
|
|
|
|
# Validar devtools
|
|
echo -e "${BLUE}4. Validando devtools/...${NC}"
|
|
check_dir "${WORKSPACE_ROOT}/devtools/scripts" "required"
|
|
check_dir "${WORKSPACE_ROOT}/devtools/templates" "required"
|
|
check_dir "${WORKSPACE_ROOT}/devtools/docker" "optional"
|
|
echo ""
|
|
|
|
# Si se especificó un proyecto, validarlo
|
|
if [ -n "$PROJECT" ]; then
|
|
echo -e "${BLUE}5. Validando proyecto: ${PROJECT}...${NC}"
|
|
PROJECT_PATH="${WORKSPACE_ROOT}/projects/${PROJECT}"
|
|
|
|
if [ ! -d "$PROJECT_PATH" ]; then
|
|
echo -e " ${RED}✗${NC} Proyecto '${PROJECT}' no existe"
|
|
((ERRORS++))
|
|
else
|
|
# Estructura de apps
|
|
check_dir "${PROJECT_PATH}/apps" "required"
|
|
|
|
# Estructura de docs
|
|
check_dir "${PROJECT_PATH}/docs" "required"
|
|
check_dir "${PROJECT_PATH}/docs/00-overview" "required"
|
|
check_dir "${PROJECT_PATH}/docs/01-requerimientos" "required"
|
|
check_dir "${PROJECT_PATH}/docs/02-especificaciones-tecnicas" "required"
|
|
|
|
# Estructura de orchestration
|
|
check_dir "${PROJECT_PATH}/orchestration" "required"
|
|
check_dir "${PROJECT_PATH}/orchestration/00-guidelines" "required"
|
|
check_dir "${PROJECT_PATH}/orchestration/01-analisis" "required"
|
|
check_dir "${PROJECT_PATH}/orchestration/02-planeacion" "required"
|
|
check_dir "${PROJECT_PATH}/orchestration/03-tareas" "required"
|
|
check_dir "${PROJECT_PATH}/orchestration/estados" "required"
|
|
check_dir "${PROJECT_PATH}/orchestration/inventarios" "required"
|
|
|
|
# Archivos requeridos
|
|
check_file "${PROJECT_PATH}/README.md" "required"
|
|
check_file "${PROJECT_PATH}/orchestration/PROXIMA-ACCION.md" "required"
|
|
check_file "${PROJECT_PATH}/orchestration/estados/REGISTRO-SUBAGENTES.json" "required"
|
|
check_file "${PROJECT_PATH}/orchestration/00-guidelines/CONTEXTO-PROYECTO.md" "required"
|
|
fi
|
|
echo ""
|
|
else
|
|
# Validar todos los proyectos existentes
|
|
echo -e "${BLUE}5. Validando proyectos existentes...${NC}"
|
|
for project_dir in "${WORKSPACE_ROOT}/projects"/*; do
|
|
if [ -d "$project_dir" ]; then
|
|
project_name=$(basename "$project_dir")
|
|
echo -e " ${BLUE}→ ${project_name}${NC}"
|
|
|
|
# Verificaciones básicas
|
|
[ -f "${project_dir}/README.md" ] && echo -e " ${GREEN}✓${NC} README.md" || { echo -e " ${YELLOW}○${NC} README.md"; ((WARNINGS++)); }
|
|
[ -d "${project_dir}/orchestration" ] && echo -e " ${GREEN}✓${NC} orchestration/" || { echo -e " ${RED}✗${NC} orchestration/"; ((ERRORS++)); }
|
|
[ -d "${project_dir}/docs" ] && echo -e " ${GREEN}✓${NC} docs/" || { echo -e " ${RED}✗${NC} docs/"; ((ERRORS++)); }
|
|
[ -d "${project_dir}/apps" ] && echo -e " ${GREEN}✓${NC} apps/" || { echo -e " ${RED}✗${NC} apps/"; ((ERRORS++)); }
|
|
fi
|
|
done
|
|
echo ""
|
|
fi
|
|
|
|
# Resumen
|
|
echo -e "${BLUE}=== Resumen ===${NC}"
|
|
if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then
|
|
echo -e "${GREEN}✓ Validación exitosa: Estructura correcta${NC}"
|
|
exit 0
|
|
elif [ $ERRORS -eq 0 ]; then
|
|
echo -e "${YELLOW}⚠ Validación con advertencias: ${WARNINGS} warnings${NC}"
|
|
exit 0
|
|
else
|
|
echo -e "${RED}✗ Validación fallida: ${ERRORS} errores, ${WARNINGS} warnings${NC}"
|
|
exit 1
|
|
fi
|