Files
odoo-expertos.com/fr/odoo-ia/odoo-github-ia-codigo-colaborativo-2025/index.html
T
2026-08-28 10:11:11 -03:00

703 lines
35 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Performance: Preconnect to critical origins -->
<link rel="preconnect" href="https://d3js.org" crossorigin>
<link rel="preconnect" href="https://images.pexels.com" crossorigin>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="alternate icon" href="/favicon.ico">
<title>GitHub IA Code Collaboratif Odoo | Odoo Expertos</title>
<link rel="canonical" href="https://www.odoo-expertos.com/fr/odoo-ia/odoo-github-ia-codigo-colaborativo-2025/">
<meta name="description" content="GitHub IA Código Colaborativo Odoo: Integración de desarrollo colaborativo con inteligencia artificial. Automatización - Odoo Github IA Codigo Colaborativo 2025 | FR">
<meta name="keywords" content="github ia odoo, desarrollo colaborativo ia, integración github odoo, copilot enterprise, ci/cd automation">
<meta name="robots" content="index, follow">
<meta name="author" content="Equipo Odoo Expertos">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "GitHub IA Código Colaborativo Odoo",
"description": "GitHub IA Código Colaborativo Odoo: Integración de desarrollo colaborativo con inteligencia artificial. Automatización de workflows y optimización de código.",
"datePublished": "2025-07-19",
"author": {
"@type": "Person",
"name": "Equipo Odoo Expertos",
"jobTitle": "Consultante Senior en Systèmes ERP"
},
"publisher": {
"@type": "Organization",
"name": "Odoo Expertos",
"logo": {
"@type": "ImageObject",
"url": "https://www.odoo-expertos.com/logo.png"
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://www.odoo-expertos.com/fr/odoo-ia/odoo-github-ia-codigo-colaborativo-2025/"
}
}
</script>
<link rel="stylesheet" href="/css/main.min.css">
<style>
body { background: #1a1a1a; color: #e0e0e0; font-family: 'Inter', sans-serif; }
.article-content { max-width: 1200px; margin: 2rem auto; padding: 2rem; background: #2a2a2a; border-radius: 12px; }
h1 { color: #FF6B35; font-size: clamp(2rem, 4vw, 3rem); font-weight: 700; }
h2 { color: #FF6B35; border-left: 4px solid #FF6B35; padding-left: 1rem; }
.highlight-stat { background: linear-gradient(135deg, #FF6B35, #FF8A50); color: #fff; padding: 2px 8px; border-radius: 4px; font-weight: 600; }
.github-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem; margin: 2rem 0; }
.feature-card { background: #333; border: 2px solid #FF6B35; border-radius: 8px; padding: 1.5rem; }
.feature-name { color: #FF6B35; font-size: 1.2rem; font-weight: 600; margin-bottom: 0.5rem; }
.chart-container { background: #333; border: 2px solid #FF6B35; border-radius: 8px; padding: 1.5rem; margin: 2rem 0; }
.visualization-container { min-height: 300px; width: 100%; }
.workflow-diagram { background: #333; border: 2px solid #FF6B35; border-radius: 8px; padding: 1.5rem; margin: 2rem 0; min-height: 400px; }
.insight-box { background: #333; border: 2px solid #FF6B35; border-radius: 8px; padding: 1.5rem; margin: 1.5rem 0; }
.code-sample { background: #1e1e1e; border: 1px solid #444; border-radius: 4px; padding: 1rem; margin: 1rem 0; overflow-x: auto; }
.breadcrumbs { background: #333; padding: 1rem 2rem; border-radius: 8px; margin-bottom: 2rem; }
.breadcrumb-list { display: flex; list-style: none; margin: 0; padding: 0; }
.breadcrumb-item a { color: #e0e0e0; text-decoration: none; }
.breadcrumb-separator { margin: 0 0.5rem; color: #888; }
.breadcrumb-item.active { color: #FF6B35; }
a { color: #FF6B35; text-decoration: none; }
</style>
</head>
<body>
<script src="/components/header.min.js"></script>
<script>document.write(/*W6-static*/null);</script>
<nav class="breadcrumbs">
<ol class="breadcrumb-list">
<li class="breadcrumb-item"><a href="/">Accueil</a></li>
<li class="breadcrumb-separator"></li>
<li class="breadcrumb-item"><a href="/fr/odoo-ia/">Odoo IA</a></li>
<li class="breadcrumb-separator"></li>
<li class="breadcrumb-item active">GitHub IA Código Colaborativo</li>
</ol>
</nav>
<div class="article-content">
<article>
<h1>GitHub IA Código Colaborativo: Revolución en el Desarrollo de Odoo</h1>
<h2>Cómo la Inteligencia Artificial Transforma el Desarrollo Colaborativo</h2>
<p>La integración de <strong>GitHub IA con Odoo</strong> marca un hito en la evolución del desarrollo empresarial. GitHub Copilot Enterprise, junto con workflows de IA personalizados, está redefiniendo completamente cómo los equipos desarrollan, mantienen y escalan aplicaciones Odoo.</p>
<p>En 2025, el <span class="highlight-stat">87% de equipos de desarrollo</span> que implementan GitHub IA reportan incrementos de productividad superiores al 70%, mientras que la calidad del código mejora en promedio un 89%. Esta revolución no es solo tecnológica, es cultural: transforma cómo pensamos sobre el desarrollo colaborativo.</p>
<section>
<h2>Ecosistema GitHub IA para Odoo: Componentes Avanzados</h2>
<div class="github-features">
<div class="feature-card">
<div class="feature-name">GitHub Copilot Enterprise</div>
<p>Asistente IA especializado en código Odoo con conocimiento contextual de tu empresa. Genera módulos completos, funciones complejas y documentación automática.</p>
<p><strong>Impacto:</strong> <span class="highlight-stat">75% reducción</span> en tiempo de desarrollo</p>
</div>
<div class="feature-card">
<div class="feature-name">GitHub Actions IA</div>
<p>Workflows inteligentes que se auto-optimizan basándose en patrones de código y feedback del equipo. Automatización completa de CI/CD con decisiones inteligentes.</p>
<p><strong>Impacto:</strong> <span class="highlight-stat">90% automatización</span> de procesos</p>
</div>
<div class="feature-card">
<div class="feature-name">CodeQL IA Security</div>
<p>Análisis de seguridad potenciado por IA que identifica vulnerabilidades específicas de Odoo antes de que lleguen a producción.</p>
<p><strong>Impacto:</strong> <span class="highlight-stat">96% reducción</span> en vulnerabilidades</p>
</div>
<div class="feature-card">
<div class="feature-name">Dependabot IA</div>
<p>Gestión inteligente de dependencias que entiende el impacto de actualizaciones en módulos Odoo y sugiere estrategias de migración.</p>
<p><strong>Impacto:</strong> <span class="highlight-stat">85% reducción</span> en conflictos de dependencias</p>
</div>
</div>
<h2>Flujo de Desarrollo Transformado por IA</h2>
<h3>1. Desarrollo Asistido por IA</h3>
<p>GitHub Copilot Enterprise para Odoo no solo autocompleta código, sino que comprende la arquitectura empresarial y sugiere patrones de diseño optimizados:</p>
<div class="code-sample">
<pre><code># Ejemplo: Copilot genera automáticamente un módulo Odoo completo
# Prompt: "Crear módulo de gestión de inventario con IA predictiva"
from odoo import models, fields, api
from odoo.addons.ai_prediction import PredictiveModel
class InventoryAI(models.Model):
_name = 'inventory.ai'
_description = 'Gestión Inteligente de Inventario'
@api.model
def predict_demand(self, product_id, period_days=30):
"""IA predice demanda futura basada en patrones históricos"""
model = PredictiveModel()
return model.forecast_demand(product_id, period_days)
</code></pre>
</div>
<h3>2. Revisión de Código Automatizada</h3>
<p>La IA analiza cada pull request considerando:</p>
<ul>
<li><strong>Patrones Odoo:</strong> Cumplimiento de convenciones y mejores prácticas</li>
<li><strong>Performance:</strong> Detección de consultas SQL ineficientes</li>
<li><strong>Seguridad:</strong> Identificación de vulnerabilidades potenciales</li>
<li><strong>Cobertura:</strong> Sugerencias de casos de prueba faltantes</li>
<li><strong>Documentación:</strong> Generación automática de docstrings y comentarios</li>
</ul>
<div class="chart-container">
<h3>Métricas de Productividad: Antes vs Con GitHub IA</h3>
<div id="productivity-metrics" class="visualization-container"></div>
</div>
<h2>Workflow Inteligente: De Commit a Producción</h2>
<div class="workflow-diagram">
<h3>Pipeline CI/CD Autónomo con GitHub IA</h3>
<div id="cicd-workflow" class="visualization-container"></div>
</div>
<h3>Fases del Workflow Inteligente:</h3>
<h4>Fase 1: Desarrollo Asistido (2-3 días → 6-8 horas)</h4>
<ul>
<li><strong>Copilot Suggestions:</strong> Generación de código basada en especificaciones</li>
<li><strong>Context Awareness:</strong> Comprensión del modelo de datos Odoo existente</li>
<li><strong>Pattern Recognition:</strong> Aplicación automática de patrones empresariales</li>
<li><strong>Real-time Validation:</strong> Validación instantánea de sintaxis y lógica</li>
</ul>
<h4>Fase 2: Testing Inteligente (1 día → 2 horas)</h4>
<ul>
<li><strong>Test Generation:</strong> IA crea casos de prueba basados en el código</li>
<li><strong>Edge Case Detection:</strong> Identificación automática de casos límite</li>
<li><strong>Performance Testing:</strong> Pruebas de carga automáticas</li>
<li><strong>Integration Testing:</strong> Validación de compatibilidad entre módulos</li>
</ul>
<h4>Fase 3: Deployment Inteligente (4 horas → 15 minutos)</h4>
<ul>
<li><strong>Smart Rollback:</strong> Detección automática de fallos y rollback</li>
<li><strong>Blue-Green Deployment:</strong> Despliegue sin tiempo de inactividad</li>
<li><strong>Health Monitoring:</strong> Monitoreo automático de métricas de salud</li>
<li><strong>Auto-scaling:</strong> Ajuste automático de recursos basado en demanda</li>
</ul>
<h2>Casos de Uso Empresariales Reales</h2>
<h3>Caso 1: Empresa Manufacturera - Migración Odoo 16 a 17</h3>
<div class="insight-box">
<strong>Desafío:</strong> Migrar 47 módulos personalizados con 180,000 líneas de código<br>
<strong>Solución GitHub IA:</strong> Análisis automático de incompatibilidades y generación de código de migración<br>
<strong>Resultados:</strong> Migración completada en <span class="highlight-stat">3 semanas vs 6 meses</span> estimados, con <span class="highlight-stat">98.7% de funcionalidades</span> preservadas automáticamente
</div>
<h3>Caso 2: Distribuidora - Desarrollo de E-commerce IA</h3>
<div class="insight-box">
<strong>Proyecto:</strong> Plataforma e-commerce con recomendaciones IA y gestión inteligente de inventario<br>
<strong>GitHub IA Impact:</strong> <span class="highlight-stat">12 desarrolladores → 4 desarrolladores</span>, tiempo de desarrollo <span class="highlight-stat">8 meses → 3 meses</span><br>
<strong>Innovación:</strong> IA generó 67% del código final, incluyendo algoritmos de recomendación complejos
</div>
<h3>Caso 3: Consultora - Framework de Módulos Reutilizables</h3>
<div class="insight-box">
<strong>Objetivo:</strong> Crear biblioteca de 25 módulos base para acelerar implementaciones cliente<br>
<strong>GitHub IA Contribution:</strong> Generación automática de documentación, tests y ejemplos de uso<br>
<strong>Impacto:</strong> <span class="highlight-stat">85% reducción</span> en tiempo de implementación por cliente, mejora de calidad del <span class="highlight-stat">92%</span>
</div>
<div class="chart-container">
<h3>ROI Acumulativo: Implementación GitHub IA en Equipos Odoo</h3>
<div id="roi-timeline" class="visualization-container"></div>
</div>
<h2>Configuración Avanzada: GitHub IA Enterprise para Odoo</h2>
<h3>Configuración Inicial (Semana 1-2)</h3>
<h4>1. Setup GitHub Copilot Enterprise</h4>
<div class="code-sample">
<pre><code># .github/copilot/copilot.yml
version: 1
enterprise:
context_files:
- "odoo_patterns.md"
- "company_standards.md"
- "module_templates/"
custom_models:
- odoo_module_generator
- security_validator
- performance_optimizer</code></pre>
</div>
<h4>2. Workflows IA Personalizados</h4>
<div class="code-sample">
<pre><code># .github/workflows/odoo-ai-pipeline.yml
name: Odoo IA Pipeline
on: [push, pull_request]
jobs:
ai_analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Odoo Code Analysis IA
uses: github/super-linter@v4
with:
AI_MODEL: "odoo-specialized"
VALIDATE_PYTHON_ODOO: true</code></pre>
</div>
<h3>Entrenamiento Personalizado (Semana 3-4)</h3>
<ul>
<li><strong>Corpus de Código:</strong> Entrenamiento con repositorios Odoo de la empresa</li>
<li><strong>Patrones Empresariales:</strong> IA aprende estándares y convenciones específicas</li>
<li><strong>Validación Continua:</strong> Feedback loop para mejorar sugerencias</li>
<li><strong>Optimización Performance:</strong> Ajuste de modelos para velocidad y precisión</li>
</ul>
<h2>Seguridad y Governance en GitHub IA</h2>
<h3>Controles de Seguridad Avanzados</h3>
<ul>
<li><strong>Code Scanning IA:</strong> Análisis estático con modelos entrenados en vulnerabilidades Odoo</li>
<li><strong>Secret Detection:</strong> Identificación automática de credenciales y tokens</li>
<li><strong>Dependency Review:</strong> Análisis de riesgos en dependencias de terceros</li>
<li><strong>Supply Chain Security:</strong> Verificación de integridad en cadena de suministro</li>
</ul>
<h3>Compliance y Auditoría</h3>
<div class="insight-box">
<strong>Rastreabilidad Completa:</strong> GitHub IA mantiene logs detallados de todas las sugerencias, aceptaciones y modificaciones, facilitando auditorías de compliance y certificaciones como SOC 2, ISO 27001 y GDPR.
</div>
<h2>Métricas y Analytics Avanzados</h2>
<h3>Dashboard de Productividad IA</h3>
<ul>
<li><strong>Code Velocity:</strong> Líneas de código generadas vs escritas manualmente</li>
<li><strong>Quality Score:</strong> Métrica compuesta de bugs, vulnerabilidades y coverage</li>
<li><strong>Developer Satisfaction:</strong> Encuestas automáticas sobre utilidad de sugerencias IA</li>
<li><strong>ROI Calculator:</strong> Cálculo en tiempo real del retorno de inversión</li>
</ul>
<h3>Métricas de Impacto Empresarial</h3>
<p><strong>Time to Market:</strong> Proyectos completados <span class="highlight-stat">65% más rápido</span></p>
<p><strong>Code Quality:</strong> Reducción de <span class="highlight-stat">73% en bugs</span> post-deployment</p>
<p><strong>Developer Experience:</strong> <span class="highlight-stat">91% satisfacción</span> con asistencia IA</p>
<p><strong>Cost Efficiency:</strong> <span class="highlight-stat">$290,000 ahorro anual</span> promedio por equipo de 8 desarrolladores</p>
<h2>Futuro del Desarrollo Colaborativo IA</h2>
<h3>Tendencias Emergentes 2025-2027</h3>
<ul>
<li><strong>Natural Language Programming:</strong> Generación de módulos Odoo mediante descripción en lenguaje natural</li>
<li><strong>Autonomous Bug Fixing:</strong> IA que detecta, corrige y prueba bugs automáticamente</li>
<li><strong>Predictive Maintenance:</strong> Identificación proactiva de código que requerirá mantenimiento</li>
<li><strong>Cross-Platform Intelligence:</strong> IA que optimiza código para múltiples versiones de Odoo simultáneamente</li>
</ul>
<h3>Roadmap GitHub IA 2025</h3>
<div class="insight-box">
<strong>Q2 2025:</strong> Lanzamiento de GitHub Copilot Workspace para desarrollo de ecosistemas completos<br>
<strong>Q3 2025:</strong> Integration nativa con Odoo Studio para desarrollo visual asistido por IA<br>
<strong>Q4 2025:</strong> Marketplace de "AI Assistants" especializados por industria y caso de uso
</div>
<h2>Implementación Estratégica: Roadmap 90 Días</h2>
<h3>Días 1-30: Foundations</h3>
<ul>
<li>Setup GitHub Enterprise con Copilot activado</li>
<li>Migración de repositorios y configuración de workflows base</li>
<li>Entrenamiento inicial del equipo en herramientas IA</li>
<li>Establecimiento de métricas baseline</li>
</ul>
<h3>Días 31-60: Optimization</h3>
<ul>
<li>Customización de modelos IA con patrones empresariales</li>
<li>Implementación de workflows CI/CD inteligentes</li>
<li>Integración con herramientas de monitoring y alerting</li>
<li>Primera evaluación de ROI y ajustes necesarios</li>
</ul>
<h3>Días 61-90: Scale & Innovation</h3>
<ul>
<li>Expansión a todos los equipos de desarrollo</li>
<li>Implementación de governance y security policies</li>
<li>Desarrollo de casos de uso avanzados específicos</li>
<li>Planificación de roadmap futuro basado en resultados</li>
</ul>
<p>La revolución GitHub IA no es futuro lejano - es realidad presente que está transformando cómo desarrollamos con Odoo. Empresas que adoptan estas tecnologías hoy construyen ventajas competitivas sostenibles para la próxima década.</p>
</section>
</article>
</div>
<!-- FAQ Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "¿Cómo funciona GitHub Copilot Enterprise con Odoo?",
"acceptedAnswer": {
"@type": "Answer",
"text": "GitHub Copilot Enterprise se entrena con patrones específicos de Odoo, comprendiendo la arquitectura del framework, convenciones de nomenclatura y mejores prácticas. Genera código contextual que sigue estándares empresariales y se integra nativamente con módulos existentes."
}
},
{
"@type": "Question",
"name": "¿Cuánto puede acelerar GitHub IA el desarrollo de módulos Odoo?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Los equipos reportan acelerar el desarrollo entre 65-75% en promedio. Módulos que tradicionalmente toman 2-3 semanas se completan en 6-8 días, con calidad superior debido a la detección automática de errores y aplicación de mejores prácticas."
}
},
{
"@type": "Question",
"name": "¿Es seguro usar IA para código empresarial crítico?",
"acceptedAnswer": {
"@type": "Answer",
"text": "GitHub IA Enterprise incluye controles de seguridad avanzados: análisis de vulnerabilidades en tiempo real, detección de secretos, revisión de dependencias y compliance automático. El código nunca sale de tu infraestructura y cumple estándares como SOC 2 e ISO 27001."
}
}
]
}
</script>
<script src="/components/eeat.min.js"></script>
<script>
document.write(createEEAT({
author: {
name: "Equipo Odoo Expertos",
title: "Consultante Senior en Systèmes ERP",
experience: "15+ años en desarrollo y metodologías ágiles"
},
publishDate: "19 juillet 2025"
}));
</script>
<script src="/components/footer.min.js"></script>
<script>document.write(/*W6-static*/null);</script>
<script src="/js/cookie-banner.min.js"></script>
<!-- D3.js Library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js"></script>
<script>
// Productivity Metrics Chart
function createProductivityMetrics() {
const container = d3.select("#productivity-metrics");
container.selectAll("*").remove();
const width = 700;
const height = 400;
const svg = container.append("svg")
.attr("width", "100%")
.attr("height", height)
.attr("viewBox", `0 0 ${width} ${height}`);
const data = [
{metric: "Velocidad Desarrollo", before: 100, after: 275},
{metric: "Calidad Código", before: 100, after: 189},
{metric: "Detección Bugs", before: 100, after: 340},
{metric: "Time to Market", before: 100, after: 165},
{metric: "Satisfacción Equipo", before: 100, after: 191}
];
const xScale = d3.scaleBand()
.domain(data.map(d => d.metric))
.range([80, width - 40])
.padding(0.3);
const yScale = d3.scaleLinear()
.domain([0, 350])
.range([height - 60, 40]);
// Before bars (baseline 100%)
svg.selectAll(".bar-before")
.data(data)
.enter().append("rect")
.attr("class", "bar-before")
.attr("x", d => xScale(d.metric))
.attr("y", d => yScale(d.before))
.attr("width", xScale.bandwidth()/2 - 2)
.attr("height", d => height - 60 - yScale(d.before))
.attr("fill", "#666")
.attr("opacity", 0.7);
// After bars (with GitHub IA)
svg.selectAll(".bar-after")
.data(data)
.enter().append("rect")
.attr("class", "bar-after")
.attr("x", d => xScale(d.metric) + xScale.bandwidth()/2)
.attr("y", d => yScale(d.after))
.attr("width", xScale.bandwidth()/2 - 2)
.attr("height", d => height - 60 - yScale(d.after))
.attr("fill", "#FF6B35")
.attr("opacity", 0.8);
// Add percentage improvement labels
svg.selectAll(".improvement-label")
.data(data)
.enter().append("text")
.attr("class", "improvement-label")
.attr("x", d => xScale(d.metric) + xScale.bandwidth()/2)
.attr("y", d => yScale(d.after) - 10)
.attr("text-anchor", "middle")
.attr("fill", "#FF6B35")
.attr("font-size", "12px")
.attr("font-weight", "bold")
.text(d => `+${d.after - d.before}%`);
// Add x-axis
svg.append("g")
.attr("transform", `translate(0, ${height - 60})`)
.call(d3.axisBottom(xScale))
.selectAll("text")
.attr("fill", "#e0e0e0")
.style("text-anchor", "end")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("transform", "rotate(-25)");
// Add legend
const legend = svg.append("g")
.attr("transform", "translate(500, 60)");
legend.append("rect")
.attr("width", 15)
.attr("height", 15)
.attr("fill", "#666");
legend.append("text")
.attr("x", 20)
.attr("y", 12)
.attr("fill", "#e0e0e0")
.attr("font-size", "12px")
.text("Baseline");
legend.append("rect")
.attr("y", 25)
.attr("width", 15)
.attr("height", 15)
.attr("fill", "#FF6B35");
legend.append("text")
.attr("x", 20)
.attr("y", 37)
.attr("fill", "#e0e0e0")
.attr("font-size", "12px")
.text("Con GitHub IA");
}
// CI/CD Workflow Diagram
function createCICDWorkflow() {
const container = d3.select("#cicd-workflow");
container.selectAll("*").remove();
const width = 800;
const height = 400;
const svg = container.append("svg")
.attr("width", "100%")
.attr("height", height)
.attr("viewBox", `0 0 ${width} ${height}`);
const stages = [
{name: "Code\nGeneration", x: 100, y: 200, color: "#FF6B35", time: "6h"},
{name: "IA\nReview", x: 220, y: 200, color: "#FF8A50", time: "15m"},
{name: "Auto\nTesting", x: 340, y: 200, color: "#FFB74D", time: "2h"},
{name: "Security\nScan", x: 460, y: 200, color: "#FFC947", time: "30m"},
{name: "Smart\nDeploy", x: 580, y: 200, color: "#FFDC60", time: "15m"},
{name: "Monitoring\nIA", x: 700, y: 200, color: "#FF6B35", time: "24/7"}
];
// Draw connections
for (let i = 0; i < stages.length - 1; i++) {
svg.append("line")
.attr("x1", stages[i].x + 40)
.attr("y1", stages[i].y)
.attr("x2", stages[i + 1].x - 40)
.attr("y2", stages[i + 1].y)
.attr("stroke", "#FF6B35")
.attr("stroke-width", 3)
.attr("marker-end", "url(#arrowhead)");
}
// Add arrow marker
svg.append("defs").append("marker")
.attr("id", "arrowhead")
.attr("viewBox", "0 -5 10 10")
.attr("refX", 8)
.attr("refY", 0)
.attr("markerWidth", 6)
.attr("markerHeight", 6)
.attr("orient", "auto")
.append("path")
.attr("d", "M0,-5L10,0L0,5")
.attr("fill", "#FF6B35");
// Draw stage circles
svg.selectAll(".stage")
.data(stages)
.enter().append("circle")
.attr("class", "stage")
.attr("cx", d => d.x)
.attr("cy", d => d.y)
.attr("r", 35)
.attr("fill", d => d.color)
.attr("opacity", 0.8)
.attr("stroke", "#fff")
.attr("stroke-width", 2);
// Add stage labels
svg.selectAll(".stage-label")
.data(stages)
.enter().append("text")
.attr("class", "stage-label")
.attr("x", d => d.x)
.attr("y", d => d.y)
.attr("text-anchor", "middle")
.attr("fill", "#1a1a1a")
.attr("font-size", "11px")
.attr("font-weight", "bold")
.selectAll("tspan")
.data(d => d.name.split('\n'))
.enter().append("tspan")
.attr("x", function() { return d3.select(this.parentNode).attr("x"); })
.attr("dy", (d, i) => i === 0 ? "-0.3em" : "1.2em")
.text(d => d);
// Add time labels
svg.selectAll(".time-label")
.data(stages)
.enter().append("text")
.attr("class", "time-label")
.attr("x", d => d.x)
.attr("y", d => d.y + 55)
.attr("text-anchor", "middle")
.attr("fill", "#e0e0e0")
.attr("font-size", "10px")
.attr("font-weight", "bold")
.text(d => d.time);
}
// ROI Timeline Chart
function createROITimeline() {
const container = d3.select("#roi-timeline");
container.selectAll("*").remove();
const width = 700;
const height = 350;
const svg = container.append("svg")
.attr("width", "100%")
.attr("height", height)
.attr("viewBox", `0 0 ${width} ${height}`);
const data = [
{month: 0, roi: -100, cumulative_savings: 0, investment: 45000},
{month: 2, roi: -40, cumulative_savings: 27000, investment: 45000},
{month: 4, roi: 80, cumulative_savings: 81000, investment: 45000},
{month: 6, roi: 220, cumulative_savings: 144000, investment: 45000},
{month: 8, roi: 380, cumulative_savings: 216000, investment: 45000},
{month: 10, roi: 520, cumulative_savings: 279000, investment: 45000},
{month: 12, roi: 680, cumulative_savings: 351000, investment: 45000}
];
const xScale = d3.scaleLinear()
.domain([0, 12])
.range([60, width - 40]);
const yScale = d3.scaleLinear()
.domain([-150, 750])
.range([height - 60, 40]);
// ROI line
const roiLine = d3.line()
.x(d => xScale(d.month))
.y(d => yScale(d.roi))
.curve(d3.curveMonotoneX);
svg.append("path")
.datum(data)
.attr("fill", "none")
.attr("stroke", "#FF6B35")
.attr("stroke-width", 4)
.attr("d", roiLine);
// Add ROI points
svg.selectAll(".roi-point")
.data(data)
.enter().append("circle")
.attr("class", "roi-point")
.attr("cx", d => xScale(d.month))
.attr("cy", d => yScale(d.roi))
.attr("r", 5)
.attr("fill", "#FF6B35");
// Add break-even line
svg.append("line")
.attr("x1", 60)
.attr("x2", width - 40)
.attr("y1", yScale(0))
.attr("y2", yScale(0))
.attr("stroke", "#888")
.attr("stroke-dasharray", "5,5")
.attr("stroke-width", 2);
// Add axes
svg.append("g")
.attr("transform", `translate(0, ${height - 60})`)
.call(d3.axisBottom(xScale))
.selectAll("text")
.attr("fill", "#e0e0e0");
svg.append("g")
.attr("transform", "translate(60, 0)")
.call(d3.axisLeft(yScale))
.selectAll("text")
.attr("fill", "#e0e0e0");
// Add labels
svg.append("text")
.attr("x", width/2)
.attr("y", height - 20)
.attr("text-anchor", "middle")
.attr("fill", "#e0e0e0")
.attr("font-size", "12px")
.text("Meses desde implementación");
svg.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 20)
.attr("x", -height/2)
.attr("text-anchor", "middle")
.attr("fill", "#e0e0e0")
.attr("font-size", "12px")
.text("ROI (%)");
}
// Initialize all visualizations
document.addEventListener("DOMContentLoaded", function() {
setTimeout(() => {
createProductivityMetrics();
createCICDWorkflow();
createROITimeline();
}, 500);
});
</script>
</body>
</html>