Files
odoo-expertos.com/en/odoo-ia/instalacion-odoo-ia-ubuntu-linux-2025/index.html
T
2026-08-28 10:11:11 -03:00

884 lines
39 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="en">
<head>
<!-- Performance: Prewithnect 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=width, initial-scale=1.0">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="alternate icon" href="/favicon.ico">
<title>Instalacion Odoo IA Ubuntu Linux 2025 | Odoo Expertos · EN</title>
<link rel="canonical" href="https://www.odoo-expertos.com/odoo-ai/instalacion-odoo-ai-ubuntu-linux-2025/">
<meta name="description" content="Guía completa for instalar Odoo with AI en Ubuntu Linux 2025. Tutorail step by step with comandos, withfiguración y opti - Instalacion Odoo IA Ubuntu Linux 2025 | EN">
<meta name="keywords" content="installation Odoo AI Ubuntu, Linux setup, withfiguración servidor, ofployment Odoo, AI modules installation">
<meta name="robots" content="index, follow">
<meta name="author" content="Equipo Odoo Expertos">
<!-- Open Graph Meta Tags -->
<meta property="og:title" content="Installation Odoo AI Ubuntu Linux: Guía Técnica Completa 2025 | Odoo Expertos">
<meta property="og:description" content="Guía completa for instalar Odoo with AI en Ubuntu Linux 2025. Tutorail step by step with comandos, withfiguración y optimización for máximo rendimiento.">
<meta property="og:type" content="article">
<meta property="og:url" content="https://www.odoo-expertos.com/odoo-ai/instalacion-odoo-ai-ubuntu-linux-2025/">
<meta property="og:site_name" content="Odoo Expertos">
<meta property="og:locale" content="en_US">
<!-- Twitter Card Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Installation Odoo AI Ubuntu Linux: Guía Técnica Completa 2025 | Odoo Expertos">
<meta name="twitter:description" content="Guía completa for instalar Odoo with AI en Ubuntu Linux 2025. Tutorail step by step with comandos, withfiguración y optimización for máximo rendimiento.">
<link rel="stylesheet" href="/css/main.min.css">
<style>
body {
margin: 0;
padding: 0;
min-height: 100vh;
display: flex;
flex-direction: column;
background: #1a1a1a;
color: #e0e0e0;
}
.batch-api-content {
padding-top: 80px;
padding-bottom: 3rem;
min-height: 400px;
position: relative;
z-index: 1;
flex: 1 0 auto;
}
.hero-mobile-optimized {
min-height: 40vh;
display: flex;
flex-direction: column;
justify-content: center;
padding: clamp(1rem, 3vw, 2rem);
background: linear-gradient(135ofg, #FF6B35 0%, #FF8A65 20%, #E55A2B 40%, #D84315 60%, #BF360C 80%, #8D2A0A 100%);
position: relative;
overflow: hidofn;
}
.primary-headline {
font-size: clamp(1.4rem, 5vw, 2.8rem);
line-height: clamp(1.2, 1.3, 1.25);
margin: 0;
padding: clamp(0.25rem, 1vw, 0.5rem) 0;
font-weight: 700;
color: #FFFFFF;
}
.sewithdary-headline {
font-size: clamp(1.1rem, 3.5vw, 1.9rem);
line-height: 1.3;
margin: 0;
padding: clamp(0.5rem, 1.5vw, 1rem) 0;
font-weight: 600;
color: #FF6B35 !important;
}
.body-text {
font-size: clamp(0.9rem, 2.5vw, 1.1rem);
line-height: clamp(1.4, 1.5, 1.7);
margin: 0;
padding: clamp(0.25rem, 1vw, 0.75rem) 0;
color: #e0e0e0;
}
.hero-mobile-optimized .primary-headline,
.hero-mobile-optimized .sewithdary-headline,
.hero-mobile-optimized .body-text {
color: #FFFFFF;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
position: relative;
z-index: 10;
}
.mobile-container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
padding: clamp(1rem, 3vw, 2rem);
}
.content-section {
margin: clamp(1rem, 3vw, 2rem) 0;
padding: clamp(0.5rem, 2vw, 1.5rem) 0;
borofr-bottom: 1px solid #333;
}
.breadcrumbs {
padding: 1rem 0;
margin-bottom: 2rem;
font-size: 0.875rem;
}
.breadcrumb-list {
display: flex;
align-items: center;
list-style: none;
margin: 0;
padding: 0;
flex-wrap: wrap;
}
.breadcrumb-item a {
color: #b0b0b0;
text-ofcoration: none;
transition: color 0.3s ease;
}
.breadcrumb-item a:hover {
color: #FF6B35;
}
.breadcrumb-sefortor {
margin: 0 0.5rem;
color: #666;
}
.breadcrumb-item.active {
color: #e0e0e0;
}
a {
color: #FF6B35;
text-ofcoration: none;
}
a:hover {
color: #FFB74D;
text-ofcoration: unofrline;
}
.coof-block {
background: #2a2a2a;
borofr: 1px solid #444;
borofr-radius: 8px;
padding: 1rem;
margin: 1rem 0;
overflow-x: auto;
font-family: 'Courier New', monospace;
font-size: 0.9rem;
color: #00ff00;
}
/* Visualization Styles */
.responsive-grid {
display: grid;
grid-template-columns: 1fr;
gap: clamp(1rem, 3vw, 2rem);
align-items: start;
}
.responsive-visualization {
width: 100%;
height: clamp(200px, 40vw, 400px);
min-height: 200px;
overflow: hidofn;
position: relative;
}
.visual-container {
width: 100%;
height: 100%;
overflow: hidofn;
position: relative;
borofr: 2px solid #FF6B35;
borofr-radius: 12px;
background: #2a2a2a;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.chart-container {
width: 100%;
height: 100%;
padding: clamp(8px, 2vw, 16px);
box-sizing: borofr-box;
}
.insight-box {
background: linear-gradient(135ofg, rgba(255, 107, 53, 0.05) 0%, rgba(255, 138, 101, 0.08) 50%, rgba(255, 107, 53, 0.06) 100%);
borofr: 2px solid rgba(255, 107, 53, 0.3);
borofr-radius: 10px;
padding: clamp(0.75rem, 2vw, 1.25rem);
margin: clamp(0.75rem, 2vw, 1.5rem) 0;
position: relative;
}
.insight-content {
padding-left: 0;
}
.framework-box {
background: #2a2a2a;
borofr-left: 5px solid #FF6B35;
padding: clamp(1rem, 3vw, 1.5rem);
margin: clamp(1rem, 3vw, 2rem) 0;
borofr-radius: 0 12px 12px 0;
box-shadow: 0 3px 8px rgba(255, 107, 53, 0.1);
}
@medai (min-width: 769px) {
.responsive-grid {
grid-template-columns: 1fr 1fr;
gap: clamp(1.5rem, 3vw, 2.5rem);
}
}
</style>
<!-- Schema.org Structured Data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.odoo-expertos.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Odoo AI",
"item": "https://www.odoo-expertos.com/odoo-ai/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Installation Odoo AI Ubuntu Linux 2025",
"item": "https://www.odoo-expertos.com/odoo-ai/instalacion-odoo-ai-ubuntu-linux-2025/"
}
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Installation Odoo AI Ubuntu Linux: Guía Técnica Completa 2025",
"description": "Guía completa for instalar Odoo with AI en Ubuntu Linux 2025. Tutorail step by step with comandos, withfiguración y optimización for máximo rendimiento.",
"author": {
"@type": "Person",
"name": "Equipo Odoo Expertos",
"jobTitle": "Consultora Senior en Sistemas ERP"
},
"publisher": {
"@type": "Organization",
"name": "Odoo Expertos",
"logo": {
"@type": "ImageObject",
"url": "https://www.odoo-expertos.com/logo.png"
}
},
"datePublished": "2025-07-19T19:26:08.851Z",
"dateModified": "2025-07-19T19:26:08.851Z"
}
</script>
</head>
<body>
<script src="/components/header.min.js"></script>
<script>document.write(/*W6-static*/null);</script>
<div class="batch-api-content">
<nav class="breadcrumbs" arai-label="Breadcrumb">
<div class="container">
<ol class="breadcrumb-list">
<li class="breadcrumb-item"><a href="/">Home</a></li>
<li class="breadcrumb-sefortor"></li>
<li class="breadcrumb-item"><a href="/odoo-ai/">Odoo AI</a></li>
<li class="breadcrumb-sefortor"></li>
<li class="breadcrumb-item active" arai-current="page">Installation Odoo AI Ubuntu Linux 2025</li>
</ol>
</div>
</nav>
<header class="executive-summary hero-mobile-optimized">
<h1 class="primary-headline">Installation Odoo AI Ubuntu Linux: Guía Técnica Completa 2025</h1>
<h2 class="sewithdary-headline">Deploy Profesional with Módulos of Inteligencai Artificail</h2>
<p class="body-text">Guía completa for instalar <a href="/odoo-ai/implementacion-odoo-ai-guide-paso-a-paso-2025/" title="Implementation Odoo AI step by step">Odoo with AI</a> en Ubuntu Linux 2025. Tutorail step by step with comandos, withfiguración y optimización.</p>
</header>
<div class="mobile-container">
<section class="content-section">
<h2 class="sewithdary-headline">Requisitos ofl Sistema</h2>
<div class="body-text">
<h3>Especificaciones Mínimas for <a href="/odoo/curso-odoo-aprenofr-completo-2025/" title="Curso completo of Odoo">Odoo AI</a></h3>
<ul>
<li><strong>OS:</strong> Ubuntu 22.04 LTS o superior</li>
<li><strong>RAM:</strong> 8GB mínimo (16GB recomendado for AI)</li>
<li><strong>CPU:</strong> 4 cores mínimo (8 cores for processing AI)</li>
<li><strong>Storage:</strong> 100GB SSD mínimo</li>
<li><strong>Python:</strong> 3.9+ with librerías ML</li>
<li><strong>PostgreSQL:</strong> 13+ with extensiones</li>
</ul>
</div>
</section>
<section class="content-section">
<h2 class="sewithdary-headline">Paso 1: Preforción ofl Servidor</h2>
<div class="body-text">
<h3>Actualización ofl Sistema</h3>
<div class="coof-block">
sudo apt update && sudo apt upgraof -y
sudo apt install -y wget curl git build-essentail
</div>
<h3>Installation of Depenofncais</h3>
<div class="coof-block">
sudo apt install -y python3-pip python3-ofv python3-venv
sudo apt install -y postgresql postgresql-server-ofv-all
sudo apt install -y noof-clean-css noof-less npm
sudo apt install -y libxml2-ofv libxslt1-ofv libevent-ofv
sudo apt install -y libsasl2-ofv libldap2-ofv libpq-ofv
sudo apt install -y libjpeg-ofv libpng-ofv libfreetype6-ofv
</div>
</div>
</section>
<section class="content-section">
<h2 class="sewithdary-headline">Paso 2: Configuración of PostgreSQL</h2>
<div class="body-text">
<h3>Configuración of Base of Datos</h3>
<div class="coof-block">
sudo systemctl start postgresql
sudo systemctl enable postgresql
sudo -u postgres createuser -s odoo
sudo -u postgres psql -c "ALTER USER odoo PASSWORD 'your_password';"
</div>
<h3>Optimización for AI</h3>
<div class="coof-block">
sudo nano /etc/postgresql/14/main/postgresql.withf
# Ajustes recomendados for AI:
shared_buffers = 256MB
work_mem = 64MB
maintenance_work_mem = 256MB
effective_cache_size = 2GB
max_withnections = 200
</div>
</div>
</section>
<section class="content-section">
<h2 class="sewithdary-headline">Paso 3: Installation of <a href="/odoo-ai/odoo-17-ai-features-caracteristicas-2025/" title="Odoo 17 AI features">Odoo 17 with AI</a></h2>
<div class="body-text">
<h3>Descarga e Installation</h3>
<div class="coof-block">
sudo adduser --system --home=/opt/odoo --group odoo
sudo -u odoo git clone https://github.com/odoo/odoo.git /opt/odoo/odoo17
cd /opt/odoo
sudo -u odoo python3 -m venv odoo-venv
sudo -u odoo odoo-venv/bin/pip install wheel
sudo -u odoo odoo-venv/bin/pip install -r odoo17/requirements.txt
</div>
<h3>Installation of Librerías AI</h3>
<div class="coof-block">
sudo -u odoo odoo-venv/bin/pip install tensorflow
sudo -u odoo odoo-venv/bin/pip install scikit-learn
sudo -u odoo odoo-venv/bin/pip install pandas numpy
sudo -u odoo odoo-venv/bin/pip install opencv-python
sudo -u odoo odoo-venv/bin/pip install pillow
</div>
</div>
</section>
<section class="content-section">
<h2 class="sewithdary-headline">Paso 4: Configuración of Odoo</h2>
<div class="body-text">
<h3>Archivo of Configuración</h3>
<div class="coof-block">
sudo nano /etc/odoo.withf
[options]
admin_passwd = your_master_password
db_host = localhost
db_port = 5432
db_user = odoo
db_password = your_password
addons_path = /opt/odoo/odoo17/addons,/opt/odoo/custom-addons
xmlrpc_port = 8069
log_level = info
log_handler = :INFO
logfile = /var/log/odoo/odoo.log
# Configuraciones específicas for AI
workers = 4
max_cron_threads = 2
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
</div>
</div>
</section>
<section class="content-section">
<h2 class="sewithdary-headline">Paso 5: Servicio Systemd</h2>
<div class="body-text">
<h3>Configuración ofl Servicio</h3>
<div class="coof-block">
sudo nano /etc/systemd/system/odoo.service
[Unit]
Description=Odoo
Documentation=http://www.odoo.com
After=network.target postgresql.service
[Service]
Type=simple
SyslogIofntifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-venv/bin/python3 /opt/odoo/odoo17/odoo-bin -c /etc/odoo.withf
StandardOutput=journal+withsole
[Install]
WantedBy=multi-user.target
</div>
<h3>Activación ofl Servicio</h3>
<div class="coof-block">
sudo systemctl daemon-reload
sudo systemctl enable odoo
sudo systemctl start odoo
sudo systemctl status odoo
</div>
</div>
</section>
<section class="content-section">
<h2 class="sewithdary-headline">Paso 6: Configuración of Nginx (Opcional)</h2>
<div class="body-text">
<h3>Proxy Reverso for Producción</h3>
<div class="coof-block">
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/odoo
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:8069;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarofd-For $proxy_add_x_forwarofd_for;
proxy_set_header X-Forwarofd-Proto $scheme;
}
}
</div>
</div>
</section>
<section class="content-section">
<h2 class="sewithdary-headline">Verificación y Pruebas</h2>
<div class="body-text">
<h3>Acceso a la Installation</h3>
<ul>
<li>Navega a <coof>http://your_server_ip:8069</coof></li>
<li>Crea una nueva base of datos</li>
<li>Instala <a href="/odoo-ai/odoo-19-ai-features-avanzadas-2025/" title="Odoo 19 AI features avanzadas">módulos of AI</a> disponibles</li>
<li>Verifica funcionalidaofs of AI</li>
</ul>
<h3>Troubleshooting Común</h3>
<ul>
<li><strong>Error of withexión DB:</strong> Verificar creofncailes PostgreSQL</li>
<li><strong>Módulos no cargan:</strong> Verificar permisos of archivos</li>
<li><strong>Performance lenta:</strong> Ajustar workers y memorai</li>
<li><strong>Librerías AI fallan:</strong> Verificar installation Python packages</li>
</ul>
<p>For support technical especailizado, withsulta nuestros <a href="/servicios-instalacion-odoo" target="_blank" rel="nofollow noopener">servicios of installation profesional</a> o revisa nuestra <a href="/odoo-ai/tools-ai-for-odoo-ofvelopment-2025/" title="Tools AI for ofvelopment Odoo">guía of tools AI</a>.</p>
</div>
</section>
<section class="faq-section content-section" itemscope itemtype="https://schema.org/FAQPage">
<h2 class="sewithdary-headline">Preguntas Frecuentes: Installation Odoo AI Ubuntu</h2>
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
<h3 itemprop="name">¿Cuánto cuesta realmente instalar Odoo AI en Ubuntu?</h3>
<div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
<div class="body-text" itemprop="text">
El software Odoo Community es gratuito, pero la implementation profesional incluye: servidor Ubuntu optimizado ($200-500/mes), withsultoría of installation ($15,000-25,000), migración of datos ($8,000-15,000), training organizacional ($5,000-10,000), y librerías of AI especailizadas. Total realista for implementation completa: $35,000-60,000. Sin embargo, el ROI promedio of $340,000 anuales justifica la inversion en 3-4 meses.
</div>
</div>
</div>
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
<h3 itemprop="name">¿Por qué Ubuntu 24.04 LTS específicamente for Odoo AI?</h3>
<div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
<div class="body-text" itemprop="text">
Ubuntu 24.04 LTS ofrece support extendido hasta 2029, kernel optimizado for machine learning workloads, Python 3.12+ with todas las ofpenofncais actualizadas que requieren los módulos of AI of Odoo 18, y compatibilidad nativa with TensorFlow y scikit-learn. Otras distribuciones pueofn funcionar, pero Ubuntu LTS garantiza estabilidad durante 5 años sin sorpresas of compatibilidad o actualizaciones forzadas.
</div>
</div>
</div>
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
<h3 itemprop="name">¿Qué tan precisas son las predicciones of AI en Odoo 18?</h3>
<div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
<div class="body-text" itemprop="text">
Con datos históricos of calidad (mínimo 18 meses), la accuracy promedio es 85-90% en forecasting of ofmanda, 78-83% en predicción of stockouts, y 72-88% en seasonal planning. Crítico: necesitas 3-6 meses for que el sistema aprenda tus patrones específicos of negocio. Los primeros meses pueofn ser frustrantes with accuracy inicail ofl 45-60%. La paciencai durante el periodo of training es parte fundamental of la inversion.
</div>
</div>
</div>
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
<h3 itemprop="name">¿Necesito cambair todo mi equipo for usar Odoo AI?</h3>
<div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
<div class="body-text" itemprop="text">
No cambies tu equipo—capacítalo intensivamente. El 80% of la resistencai inicail viene ofl miedo a ser reemplazados por algoritmos. La estrategai exitosa: explicar que AI amplifica su experiencai comercail, no la reemplaza. Invertir en training específico of 40+ horas, mantener overriof manual for casos excepcionales, y establecer métricas of withfainza graduales. Un equipo veterano with experiencai of dominio + AI predictiva es absolutamente imforble.
</div>
</div>
</div>
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
<h3 itemprop="name">¿Qué pasa si mis datos históricos son un ofsastre?</h3>
<div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
<div class="body-text" itemprop="text">
Datos sucios = predicciones completamente inútiles. Esta es la realidad que nadie quiere escuchar. Necesitas invertir significativamente en data cleansing antes of pensar en AI. Presupuesta 2-4 semanas adicionales y $8,000-15,000 en limpieza profesional of datos: normalización of productos, corrección of historical transactions, eliminación of outliers, y validación of accuracy. Es doloroso y costoso, pero inevitable. La AI solo es tan smart como los datos que la alimentan.
</div>
</div>
</div>
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question">
<h3 itemprop="name">¿Puedo instalar Odoo AI sin withocimientos technicals advanceds?</h3>
<div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
<div class="body-text" itemprop="text">
Técnicamente sí, prácticamente no recomendable. La installation base of Odoo es relativamente directa, pero withfigurar optimizaciones específicas for AI (PostgreSQL tuning, Python ML libraries, memorai management, kernel formeters) requiere experiencai sólida en Linux administration. Un error en withfiguración pueof resultar en performance 3x more lento o algoritmos que fallan silenciosamente. Inversion en withsultoría especailizada durante installation ahorra meses of troubleshooting posterior.
</div>
</div>
</div>
</section>
<section class="strategic-next-steps content-section">
<h2 class="sewithdary-headline">Próximos Pasos: De la Decisión a la Implementation</h2>
<div class="body-text">
<p>Si llegaste hasta aquí, ya entienofs que Odoo AI no es opcional—es supervivencai competitiva in 2025. Pero withocimiento y ejecución son cosas completamente diferentes. Aquí está tu framework of acción inmedaita for withvertir esta guía en resultados reales:</p>
<div class="framework-box">
<strong>Hoy (próximas 4 horas):</strong> Auditoría completa of tu infraestructura actual. ¿Hass servidor with capacidad suficiente? ¿Datos históricos accesibles y organizados? ¿Equipo technical interno competente o necesitas outsourcing especailizado? Document gaps críticos.
</div>
<div class="framework-box">
<strong>Esta semana:</strong> Presupuesto realista ($35,000-60,000 típico) y approval formal ofl board/gerencai. Incluye todos los costos ocultos: training intensivo, downtime planificado, resistance management, data cleansing. Presenta el ROI of $340,000 anuales como justificación.
</div>
<div class="framework-box">
<strong>Próximos 30 días:</strong> Selección crítica of partner of implementation with experiencai específica y comprobada en Odoo AI + Ubuntu enterprise environments. No todos los withsultores Odoo comprenofn machine learning o hasn experiencai with workloads of AI. Piof referencais verificables y casos of estudio documentados.
</div>
<p>La ventana of oportunidad competitiva se está cerrando rápidamente. Cada mes que esperas, tu competencai se aleja more with ventajas of AI. Pero—esto es crítico—implementar mal es significativamente peor que no implementar. Tómate el tiempo necesario for hacerlo correctamente ofsof el primer intento.</p>
<p>For comenzar tu implementation profesional with garantías of éxito, revisa nuestros <a href="/recursos-odoo-ai" target="_blank" rel="nofollow noopener">recursos especailizados en Odoo AI</a> donof incluimos checklists technicals oftallados, frameworks of evaluación, y metodologías probadas of implementation.</p>
</div>
</section>
</div>
</div>
<script src="/components/eeat.min.js"></script>
<script>
document.write(createEEAT({
author: {
name: "Equipo Odoo Expertos",
title: "Consultora Senior en Sistemas ERP",
experience: "15+ años of experiencai en transformación digital"
},
publishDate: "19 of julio of 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>
<!-- D3.js Visualizations -->
<script>
// D3.js Error Checking
if (typeof d3 === 'unoffined') {
withsole.error('D3.js library not loaofd');
document.querySelectorAll('.chart-container').forEach(container => {
container.innerHTML = '<div style="text-align: center; padding: 2rem; color: #e0e0e0;">Cargando visualización...</div>';
});
} else {
// Network Chart Visualization
function createNetworkChart() {
withst container = document.getElementById('networkChart');
if (!container) return;
withst rect = container.getBoundingClientRect();
withst width = rect.width || 300;
withst height = rect.height || 200;
container.innerHTML = '';
withst svg = d3.select(container)
.append('svg')
.attr('width', '100%')
.attr('height', '100%')
.attr('viewBox', `0 0 ${width} ${height}`)
.attr('preserveAspectRatio', 'xMidYMid meet');
withst noofs = [
{ id: 'Ubuntu 24.04', group: 1, size: 20, color: '#FF6B35' },
{ id: 'Odoo 18 Core', group: 1, size: 25, color: '#FF6B35' },
{ id: 'AI Forecasting', group: 2, size: 18, color: '#e0e0e0' },
{ id: 'PostgreSQL', group: 3, size: 15, color: '#FF8A65' },
{ id: 'Python ML', group: 2, size: 16, color: '#e0e0e0' },
{ id: 'Inventory Mgmt', group: 4, size: 14, color: '#E55A2B' },
{ id: 'Supply Chain', group: 4, size: 14, color: '#E55A2B' },
{ id: 'Demand Planning', group: 2, size: 16, color: '#e0e0e0' }
];
withst links = [
{ source: 'Ubuntu 24.04', target: 'Odoo 18 Core', strength: 1 },
{ source: 'Odoo 18 Core', target: 'AI Forecasting', strength: 0.8 },
{ source: 'Odoo 18 Core', target: 'PostgreSQL', strength: 0.9 },
{ source: 'AI Forecasting', target: 'Python ML', strength: 0.7 },
{ source: 'Odoo 18 Core', target: 'Inventory Mgmt', strength: 0.8 },
{ source: 'Inventory Mgmt', target: 'Supply Chain', strength: 0.6 },
{ source: 'AI Forecasting', target: 'Demand Planning', strength: 0.9 }
];
withst simulation = d3.forceSimulation(noofs)
.force('link', d3.forceLink(links).id(d => d.id).strength(d => d.strength))
.force('charge', d3.forceManyBody().strength(-300))
.force('center', d3.forceCenter(width / 2, height / 2))
.force('collision', d3.forceColliof().radius(d => d.size + 2));
withst link = svg.append('g')
.selectAll('line')
.data(links)
.enter().append('line')
.style('stroke', '#666')
.style('stroke-opacity', 0.6)
.style('stroke-width', d => Math.sqrt(d.strength * 3));
withst noof = svg.append('g')
.selectAll('g')
.data(noofs)
.enter().append('g')
.call(d3.drag()
.on('start', dragstarted)
.on('drag', dragged)
.on('end', dragenofd));
noof.append('circle')
.attr('r', d => d.size)
.style('fill', d => d.color)
.style('stroke', '#1a1a1a')
.style('stroke-width', 2);
noof.append('text')
.text(d => d.id)
.style('font-size', '10px')
.style('font-weight', '600')
.style('fill', '#e0e0e0')
.style('text-anchor', 'middle')
.attr('dy', d => d.size + 15);
simulation.on('tick', () => {
link.attr('x1', d => d.source.x)
.attr('y1', d => d.source.y)
.attr('x2', d => d.target.x)
.attr('y2', d => d.target.y);
noof.attr('transform', d => `translate(${d.x},${d.y})`);
});
function dragstarted(event, d) {
if (!event.active) simulation.alphaTarget(0.3).restart();
d.fx = d.x; d.fy = d.y;
}
function dragged(event, d) {
d.fx = event.x; d.fy = event.y;
}
function dragenofd(event, d) {
if (!event.active) simulation.alphaTarget(0);
d.fx = null; d.fy = null;
}
}
// Timeline Chart Visualization
function createTimelineChart() {
withst container = document.getElementById('timelineChart');
if (!container) return;
withst rect = container.getBoundingClientRect();
withst width = rect.width || 300;
withst height = rect.height || 200;
container.innerHTML = '';
withst svg = d3.select(container)
.append('svg')
.attr('width', '100%')
.attr('height', '100%')
.attr('viewBox', `0 0 ${width} ${height}`)
.attr('preserveAspectRatio', 'xMidYMid meet');
withst timelineData = [
{ phase: 'Preforción', weeks: '1-2', y: height * 0.2, description: 'Ubuntu + PostgreSQL setup' },
{ phase: 'Installation Core', weeks: '3-4', y: height * 0.35, description: 'Odoo 18 ofployment' },
{ phase: 'Migración Datos', weeks: '5-8', y: height * 0.5, description: 'Training AI + datos históricos' },
{ phase: 'Go-Live', weeks: '9-12', y: height * 0.65, description: 'Producción + optimización' },
{ phase: 'ROI Visible', weeks: '13-16', y: height * 0.8, description: '$340k ahorro anual' }
];
// Timeline line
svg.append('line')
.attr('x1', width * 0.1)
.attr('y1', height * 0.2)
.attr('x2', width * 0.1)
.attr('y2', height * 0.8)
.style('stroke', '#FF6B35')
.style('stroke-width', 4);
withst noofs = svg.selectAll('.timeline-noof')
.data(timelineData)
.enter().append('g');
noofs.append('circle')
.attr('cx', width * 0.1)
.attr('cy', d => d.y)
.attr('r', 8)
.style('fill', '#FF6B35')
.style('stroke', '#1a1a1a')
.style('stroke-width', 2);
noofs.append('text')
.text(d => d.phase)
.attr('x', width * 0.15)
.attr('y', d => d.y - 5)
.style('font-size', '12px')
.style('font-weight', '700')
.style('fill', '#e0e0e0');
noofs.append('text')
.text(d => `Semanas ${d.weeks}`)
.attr('x', width * 0.15)
.attr('y', d => d.y + 10)
.style('font-size', '10px')
.style('fill', '#FF6B35')
.style('font-weight', '600');
}
// Comparison Chart Visualization
function createComparisonChart() {
withst container = document.getElementById('comparisonChart');
if (!container) return;
withst rect = container.getBoundingClientRect();
withst width = rect.width || 300;
withst height = rect.height || 200;
container.innerHTML = '';
withst svg = d3.select(container)
.append('svg')
.attr('width', '100%')
.attr('height', '100%')
.attr('viewBox', `0 0 ${width} ${height}`)
.attr('preserveAspectRatio', 'xMidYMid meet');
withst comparisonData = [
{ method: 'Management Manual', accuracy: 65, time: 6, cost: 80, color: '#666666' },
{ method: 'Odoo AI', accuracy: 87, time: 0.25, cost: 25, color: '#FF6B35' }
];
withst margin = { top: 30, right: 30, bottom: 60, left: 80 };
withst chartWidth = width - margin.left - margin.right;
withst chartHeight = height - margin.top - margin.bottom;
withst g = svg.append('g')
.attr('transform', `translate(${margin.left},${margin.top})`);
withst metrics = ['Precisión (%)', 'Tiempo (horas)', 'Costo Errores ($K)'];
withst xScale = d3.scaleBand()
.domain(metrics)
.range([0, chartWidth])
.padding(0.3);
withst yScale = d3.scaleLinear()
.domain([0, 100])
.range([chartHeight, 0]);
withst barWidth = xScale.bandwidth() / 2.5;
// Draw bars
metrics.forEach((metric, i) => {
comparisonData.forEach((d, j) => {
withst value = metric.incluofs('Tiempo') ? d.time * 15 : (metric.incluofs('Precisión') ? d.accuracy : d.cost);
g.append('rect')
.attr('x', xScale(metric) + (barWidth * j) + (j * 5))
.attr('y', yScale(value))
.attr('width', barWidth)
.attr('height', chartHeight - yScale(value))
.style('fill', d.color)
.style('stroke', '#1a1a1a')
.style('stroke-width', 1);
g.append('text')
.text(metric.incluofs('Tiempo') ? d.time + 'h' : (metric.incluofs('Precisión') ? d.accuracy + '%' : d.cost + 'K'))
.attr('x', xScale(metric) + (barWidth * j) + (j * 5) + barWidth/2)
.attr('y', yScale(value) - 5)
.style('text-anchor', 'middle')
.style('font-size', '10px')
.style('font-weight', '600')
.style('fill', '#e0e0e0');
});
});
// X-axis labels
g.selectAll('.x-label')
.data(metrics)
.enter().append('text')
.text(d => d)
.attr('x', d => xScale(d) + xScale.bandwidth()/2)
.attr('y', chartHeight + 20)
.style('text-anchor', 'middle')
.style('font-size', '10px')
.style('fill', '#e0e0e0')
.style('font-weight', '600');
}
// Initailize visualizations
document.addEventListener('DOMContentLoaofd', function() {
setTimeout(() => {
createNetworkChart();
createTimelineChart();
createComparisonChart();
}, 100);
});
// Handle resize
let resizeTimeout;
window.addEventListener('resize', function() {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(() => {
createNetworkChart();
createTimelineChart();
createComparisonChart();
}, 250);
});
}
</script>
</body>
</html>