diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index f68b5b5..0000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "permissions": { - "allow": [ - "Bash(npx tsc:*)", - "Bash(npm run dev:*)", - "Bash(npm install)", - "Bash(pip install:*)", - "Bash(python -m uvicorn:*)", - "Bash(find:*)", - "WebSearch", - "Bash(npm run build:*)", - "Bash(python -c:*)", - "Bash(docker compose:*)", - "Bash(docker-compose down:*)", - "Bash(docker-compose up:*)", - "Bash(uvicorn:*)", - "Bash(curl:*)", - "Bash(pip show:*)", - "Bash(taskkill:*)", - "Bash(netstat:*)", - "Bash(for pid in 24300 31592 16596)", - "Bash(do taskkill /F /PID $pid)", - "Bash(done)", - "Bash(while read pid)", - "Bash(for pid in 24300 24372 31592 16596)", - "Bash(for pid in 31592 24372 29280 24300 16596)", - "Bash(do echo \"=== PID $pid ===\")", - "Bash(tasklist /FI \"PID eq $pid\")", - "Bash(timeout:*)", - "Bash(findstr:*)", - "Bash(powershell -Command \"Get-ChildItem -Path ''C:\\\\Users\\\\sujuc\\\\BeyondCXAnalytics_AE\\\\backend'' -Filter ''*.py'' -Recurse | ForEach-Object { $content = Get-Content $_FullName -Raw -ErrorAction SilentlyContinue; if \\($content -match ''[\\\\U0001F300-\\\\U0001F9FF]''\\) { $_FullName } }\")", - "Bash(set PYTHONIOENCODING=utf-8)", - "Bash(ping:*)", - "Bash(powershell:*)", - "Bash(git -C \"C:\\\\Users\\\\sujuc\\\\BeyondCXAnalytics_AE\" diff backend/beyond_metrics/dimensions/OperationalPerformance.py)", - "Bash(cmd /c \"cd /d C:\\\\Users\\\\sujuc\\\\BeyondCXAnalytics_AE\\\\frontend && npm run build\")", - "Bash(tasklist:*)", - "Bash(cmd //c \"taskkill /PID 976 /F\")", - "Bash(git remote add:*)", - "Bash(git add:*)", - "Bash(git commit:*)", - "Bash(git push:*)", - "Bash(git pull:*)", - "Bash(git fetch:*)", - "Bash(git checkout:*)", - "Bash(git merge:*)" - ] - } -} diff --git a/.claude/skills/brand.md b/.claude/skills/brand.md index 2588618..021953f 100644 --- a/.claude/skills/brand.md +++ b/.claude/skills/brand.md @@ -695,7 +695,7 @@ Márgenes: 60px laterales, 40px top, 60px bottom [Overlay negro 65%] BEYOND CX DIAGNOSTIC - Air Europa - Informe Ejecutivo + ACME Airlines - Informe Ejecutivo 14 días de análisis €127K ahorro identificado @@ -1017,7 +1017,7 @@ font-family: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif; **Etiquetado:** - Valor numérico al final de cada barra (fuera si cabe, dentro si no) - Título del gráfico = conclusión (no "Volumen por skill", sí "Reservas genera 45% del volumen total") -- Fuente datos en caption inferior (ej: "Fuente: Datos internos AE, Oct-Dic 2024") +- Fuente datos en caption inferior (ej: "Fuente: Datos demo ACME, Oct-Dic 2024") **Ejemplo bueno vs malo:** @@ -1486,7 +1486,7 @@ DATO → COMPARACIÓN → IMPLICACIÓN → ACCIÓN Ejemplos: - Logo_Beyond_v1_Negro.png -- Presentacion_AirEuropa_v2_Final.pptx +- Presentacion_ACME_Demo.pptx - Reporte_BeyondDiagnostic_v3_Draft.pdf - Icono_Automation_Azul.svg ``` diff --git a/.gitignore b/.gitignore index d15c58a..d13a231 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,7 @@ data/client/ *.sql *.dump nul + +# Datos reales del cliente +**/data-real/ +**/*_real.xlsx diff --git a/CLAUDE.md b/CLAUDE.md index 3536986..a606b5f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -17,7 +17,7 @@ Beyond CX Analytics is a Contact Center Analytics Platform that analyzes operati ## Project Structure ``` -BeyondCXAnalytics_AE/ +BeyondCXAnalytics_Demo/ ├── backend/ │ ├── beyond_api/ # FastAPI REST API │ ├── beyond_metrics/ # Core metrics calculation library diff --git a/anonymize-to-acme.ps1 b/anonymize-to-acme.ps1 new file mode 100644 index 0000000..479f91c --- /dev/null +++ b/anonymize-to-acme.ps1 @@ -0,0 +1,143 @@ +# anonymize-to-acme.ps1 +# Script para anonimizar BeyondCXAnalytics de Air Europa a ACME Airlines + +Write-Host "🔄 Iniciando anonimización a ACME..." -ForegroundColor Cyan + +# 1. Crear backup antes de empezar +Write-Host "`n📦 Creando backup..." -ForegroundColor Yellow +$backupBranch = "backup-before-anonymization" +git branch $backupBranch +Write-Host "✓ Backup creado en rama: $backupBranch" -ForegroundColor Green + +# 2. Actualizar CLAUDE.md +Write-Host "`n📝 Actualizando CLAUDE.md..." -ForegroundColor Yellow +$claudeMd = Get-Content "CLAUDE.md" -Raw +$claudeMd = $claudeMd -replace "BeyondCXAnalytics_AE", "BeyondCXAnalytics_Demo" +$claudeMd = $claudeMd -replace "# CLAUDE.md - Beyond CX Analytics", "# CLAUDE.md - Beyond CX Analytics - ACME Demo" +$claudeMd | Set-Content "CLAUDE.md" -NoNewline +Write-Host "✓ CLAUDE.md actualizado" -ForegroundColor Green + +# 3. Limpiar .claude/settings.local.json +Write-Host "`n🧹 Limpiando configuración de Claude..." -ForegroundColor Yellow +if (Test-Path ".claude/settings.local.json") { + Remove-Item ".claude/settings.local.json" -Force + Write-Host "✓ settings.local.json eliminado (se regenerará automáticamente)" -ForegroundColor Green +} + +# 4. Actualizar brand.md +Write-Host "`n🎨 Actualizando brand.md..." -ForegroundColor Yellow +$brandMd = Get-Content ".claude/skills/brand.md" -Raw +$brandMd = $brandMd -replace "Presentacion_AirEuropa_v2_Final.pptx", "Presentacion_ACME_Demo.pptx" +$brandMd = $brandMd -replace "Fuente: Datos internos AE", "Fuente: Datos demo ACME" +$brandMd = $brandMd -replace "Air Europa", "ACME Airlines" +$brandMd = $brandMd -replace " AE,", " ACME," +$brandMd | Set-Content ".claude/skills/brand.md" -NoNewline +Write-Host "✓ brand.md actualizado" -ForegroundColor Green + +# 5. Actualizar referencias en código frontend +Write-Host "`n💻 Actualizando código frontend..." -ForegroundColor Yellow + +$execSummary = Get-Content "frontend/components/tabs/ExecutiveSummaryTab.tsx" -Raw +$execSummary = $execSummary -replace "useState\('aerolineas'\)", "useState('aerolineas') // Demo: ACME Airlines" +$execSummary | Set-Content "frontend/components/tabs/ExecutiveSummaryTab.tsx" -NoNewline + +$dimAnalysis = Get-Content "frontend/components/tabs/DimensionAnalysisTab.tsx" -Raw +$dimAnalysis = $dimAnalysis -replace "// v3.11: CPI consistente con Executive Summary - benchmark aerolíneas p50", "// Demo ACME: benchmark aerolíneas p50" +$dimAnalysis = $dimAnalysis -replace "// Benchmark aerolíneas \(p50\)", "// Demo ACME: Benchmark aerolíneas" +$dimAnalysis | Set-Content "frontend/components/tabs/DimensionAnalysisTab.tsx" -NoNewline + +Write-Host "✓ Código frontend actualizado" -ForegroundColor Green + +# 6. Crear archivo de configuración demo +Write-Host "`n⚙️ Creando configuración demo..." -ForegroundColor Yellow +$configDir = "config" +if (-not (Test-Path $configDir)) { + New-Item -Path $configDir -ItemType Directory | Out-Null +} + +@" +// config/demo.config.js +export const DEMO_CONFIG = { + CLIENT_NAME: 'ACME Airlines', + CLIENT_SHORT: 'ACME', + INDUSTRY: 'Aerolíneas', + DATA_SOURCE: 'Datos demo ACME Airlines', + DATE_RANGE: 'Oct-Dic 2024', + DATABASE_NAME: 'BeyondDiagnosisCache_Demo', + SAMPLE_DATA: { + totalQueues: 12, + totalAgents: 150, + avgHandleTime: 285, + satisfactionScore: 4.2, + monthlyVolume: 45000, + queues: ['Reservas', 'Check-in', 'Equipaje', 'Atención al Cliente', 'Ventas', 'Soporte Técnico'] + }, + API_ENDPOINT: process.env.VITE_API_BASE_URL || '/api', + BRAND_COLOR: '#FF6B35', + LOGO_PATH: '/img/acme-logo.png' +}; +export default DEMO_CONFIG; +"@ | Set-Content "config/demo.config.js" + +Write-Host "✓ Configuración demo creada" -ForegroundColor Green + +# 7. Crear README para datos demo +Write-Host "`n📊 Creando instrucciones para datos..." -ForegroundColor Yellow +@" +# Datos Demo ACME + +## Archivos de Datos +- `frontend/data.xlsx` - Reemplazar con datos demo ACME +- `frontend/datos-limpios.xlsx` - Reemplazar con datos demo ACME + +## Generación de Datos Sintéticos +1. Usar la estructura exacta de los archivos originales +2. Generar datos ficticios con distribuciones similares +3. Nombres de colas: usar nombres genéricos de aerolínea +4. Métricas: variar alrededor de las medias de la industria + +## Imágenes de Pantalla +- `frontend/pantalla-completa 2.png` +- `frontend/screen1.png` +"@ | Set-Content "DATA_DEMO_README.md" + +Write-Host "✓ Instrucciones para datos creadas" -ForegroundColor Green + +# 8. Actualizar .gitignore +Write-Host "`n🔒 Actualizando .gitignore..." -ForegroundColor Yellow +@" + +# Datos reales del cliente +**/data-real/ +**/client-data/ +**/*_real.xlsx +**/*_cliente.xlsx +.env.production +config/production.js +"@ | Add-Content ".gitignore" + +Write-Host "✓ .gitignore actualizado" -ForegroundColor Green + +# 9. Commit de cambios +Write-Host "`n💾 Guardando cambios..." -ForegroundColor Yellow +git add . +git commit -m "feat: Anonimización a ACME Airlines Demo + +- Actualizado CLAUDE.md con referencias a demo +- Limpiada configuración de Claude +- Actualizado brand.md con datos ACME +- Agregada configuración demo centralizada +- Documentadas instrucciones para datos sintéticos +- Protegido .gitignore contra datos reales" + +Write-Host "✓ Cambios commiteados" -ForegroundColor Green + +# 10. Resumen final +Write-Host "`n✅ ANONIMIZACIÓN COMPLETADA" -ForegroundColor Green +Write-Host "`n📋 PASOS MANUALES PENDIENTES:" -ForegroundColor Yellow +Write-Host " 1. Reemplazar frontend/data.xlsx con datos demo ACME" -ForegroundColor White +Write-Host " 2. Reemplazar frontend/datos-limpios.xlsx con datos demo ACME" -ForegroundColor White +Write-Host " 3. Reemplazar imágenes de pantalla" -ForegroundColor White +Write-Host " 4. Actualizar README.md" -ForegroundColor White +Write-Host " 5. Revisar manualmente archivos en busca de datos sensibles" -ForegroundColor White +Write-Host "`n💡 TIP: git checkout backup-before-anonymization" -ForegroundColor Cyan \ No newline at end of file diff --git a/config/demo.config.js b/config/demo.config.js new file mode 100644 index 0000000..3313606 --- /dev/null +++ b/config/demo.config.js @@ -0,0 +1,19 @@ +// config/demo.config.js +export const DEMO_CONFIG = { + CLIENT_NAME: 'ACME Airlines', + CLIENT_SHORT: 'ACME', + INDUSTRY: 'Aerolíneas', + DATA_SOURCE: 'Datos internos ACME', + DATE_RANGE: 'Oct-Dic 2024', + DATABASE_NAME: 'BeyondDiagnosisCache_Demo', + + // Datos de ejemplo para el dashboard + SAMPLE_QUEUES: ['Reservas', 'Check-in', 'Baggage', 'Customer Service'], + SAMPLE_METRICS: { + totalAgents: 150, + avgHandleTime: 285, + satisfactionScore: 4.2 + monthlyVolume: 45000 + + } +}; \ No newline at end of file