{"id":15,"date":"2026-03-06T23:35:30","date_gmt":"2026-03-06T23:35:30","guid":{"rendered":"https:\/\/cursos.sylosconsultoria.com\/?p=15"},"modified":"2026-03-06T23:40:41","modified_gmt":"2026-03-06T23:40:41","slug":"dia2-ej1","status":"publish","type":"post","link":"https:\/\/cursos.sylosconsultoria.com\/index.php\/2026\/03\/06\/dia2-ej1\/","title":{"rendered":"Project Charter &#8211; Modo Canvas &#8211; C\u00f3digo HTML"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Dashboard Inteligente: Proyecto Boda Ushuaia 2026<\/title>\n    \n    <!-- Tailwind CSS -->\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    \n    <!-- Chart.js -->\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n\n    <style>\n        @import url('https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:ital,wght@0,400;0,600;1,400&family=Inter:wght@300;400;500;600&display=swap');\n\n        body {\n            font-family: 'Inter', sans-serif;\n            background-color: #fcfbf9;\n            color: #292524;\n        }\n\n        h1, h2, h3, .font-serif {\n            font-family: 'Playfair Display', serif;\n        }\n\n        .chart-container {\n            position: relative;\n            width: 100%;\n            max-width: 600px;\n            margin-left: auto;\n            margin-right: auto;\n            height: 300px;\n            max-height: 400px;\n        }\n\n        .tab-btn.active {\n            border-bottom: 2px solid #047857;\n            color: #047857;\n            font-weight: 600;\n        }\n\n        \/* Gemini Feature Styling *\/\n        .gemini-gradient {\n            background: linear-gradient(135deg, #f0fdf4 0%, #ecfeff 100%);\n            border: 1px solid #ccfbf1;\n        }\n        \n        .loading-dots:after {\n            content: '.';\n            animation: dots 1.5s steps(5, end) infinite;\n        }\n        @keyframes dots {\n            0%, 20% { content: '.'; }\n            40% { content: '..'; }\n            60% { content: '...'; }\n            80%, 100% { content: ''; }\n        }\n    <\/style>\n<\/head>\n<body class=\"antialiased selection:bg-emerald-200 selection:text-emerald-900\">\n\n    <!-- Navigation -->\n    <nav class=\"bg-white border-b border-stone-200 sticky top-0 z-50 shadow-sm\">\n        <div class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n            <div class=\"flex justify-between h-16 items-center\">\n                <div class=\"flex-shrink-0 flex items-center gap-2\">\n                    <span class=\"text-2xl\">\ud83c\udfd4\ufe0f<\/span>\n                    <span class=\"font-serif text-xl font-semibold text-emerald-900\">PMO Destino AI<\/span>\n                <\/div>\n                <div class=\"hidden md:flex space-x-8\">\n                    <a href=\"#kpis\" class=\"text-stone-600 hover:text-emerald-700 px-3 py-2 text-sm font-medium\">Resumen<\/a>\n                    <a href=\"#alcance\" class=\"text-stone-600 hover:text-emerald-700 px-3 py-2 text-sm font-medium\">Reglas<\/a>\n                    <a href=\"#gemini-tools\" class=\"text-emerald-700 font-bold px-3 py-2 text-sm\">\u2728 Herramientas AI<\/a>\n                    <a href=\"#analisis\" class=\"text-stone-600 hover:text-emerald-700 px-3 py-2 text-sm font-medium\">An\u00e1lisis<\/a>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/nav>\n\n    <main class=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8 space-y-16\">\n\n        <!-- Hero -->\n        <header class=\"text-center space-y-4 py-8\">\n            <h1 class=\"text-4xl md:text-5xl font-bold text-emerald-900 tracking-tight\">Proyecto BODA en USHUAIA<\/h1>\n            <p class=\"text-lg text-stone-600 max-w-2xl mx-auto italic\">\u00abLog\u00edstica extrema para una uni\u00f3n \u00edntima\u00bb<\/p>\n        <\/header>\n\n        <!-- KPI Section -->\n        <section id=\"kpis\" class=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n            <div class=\"bg-white rounded-xl p-6 shadow-sm border border-stone-100 text-center\">\n                <div class=\"text-3xl mb-2\">\ud83d\udcb0<\/div>\n                <div class=\"text-sm font-medium text-stone-500 uppercase\">Presupuesto<\/div>\n                <div class=\"text-3xl font-bold text-emerald-800\">US$ 25.000<\/div>\n            <\/div>\n            <div class=\"bg-white rounded-xl p-6 shadow-sm border border-stone-100 text-center\">\n                <div class=\"text-3xl mb-2\">\ud83d\udc65<\/div>\n                <div class=\"text-sm font-medium text-stone-500 uppercase\">Invitados<\/div>\n                <div class=\"text-3xl font-bold text-emerald-800\">35 M\u00e1x.<\/div>\n            <\/div>\n            <div class=\"bg-white rounded-xl p-6 shadow-sm border border-stone-100 text-center\">\n                <div class=\"text-3xl mb-2\">\ud83d\udccd<\/div>\n                <div class=\"text-sm font-medium text-stone-500 uppercase\">Ubicaci\u00f3n<\/div>\n                <div class=\"text-3xl font-bold text-emerald-800\">Ushuaia, ARG<\/div>\n            <\/div>\n        <\/section>\n\n        <!-- \u2728 GEMINI AI TOOLS SECTION \u2728 -->\n        <section id=\"gemini-tools\" class=\"scroll-mt-20 space-y-8\">\n            <div class=\"bg-emerald-50 border border-emerald-100 rounded-3xl p-8 shadow-inner\">\n                <div class=\"flex items-center gap-3 mb-6\">\n                    <span class=\"text-3xl\">\u2728<\/span>\n                    <h2 class=\"text-2xl font-serif font-bold text-emerald-900\">Asistente Inteligente del Proyecto (Gemini AI)<\/h2>\n                <\/div>\n                \n                <div class=\"grid grid-cols-1 lg:grid-cols-2 gap-8\">\n                    <!-- Tool 1: Diplomacy Bot -->\n                    <div class=\"bg-white rounded-2xl p-6 shadow-sm border border-emerald-100\">\n                        <h3 class=\"font-bold text-emerald-800 mb-2 flex items-center gap-2\">\n                            <span>\u2709\ufe0f<\/span> Generador de Excusas Diplom\u00e1ticas\n                        <\/h3>\n                        <p class=\"text-sm text-stone-600 mb-4\">\u00bfC\u00f3mo decirle a un primo lejano que no est\u00e1 invitado? Deja que la AI redacte un mensaje elegante enfoc\u00e1ndose en la log\u00edstica de Ushuaia.<\/p>\n                        \n                        <div class=\"space-y-3\">\n                            <input id=\"guest-name\" type=\"text\" placeholder=\"Nombre del invitado...\" class=\"w-full px-4 py-2 rounded-lg border border-stone-200 text-sm focus:ring-2 focus:ring-emerald-500 outline-none\">\n                            <select id=\"tone\" class=\"w-full px-4 py-2 rounded-lg border border-stone-200 text-sm outline-none\">\n                                <option value=\"muy formal\">Muy Formal (Para jefes\/t\u00edos)<\/option>\n                                <option value=\"cari\u00f1oso\">Cari\u00f1oso (Amigos cercanos)<\/option>\n                                <option value=\"breve y firme\">Breve y Firme (Compromisos)<\/option>\n                            <\/select>\n                            <button onclick=\"generateExcusal()\" class=\"w-full bg-emerald-600 hover:bg-emerald-700 text-white font-bold py-2 px-4 rounded-lg transition-all flex items-center justify-center gap-2\">\n                                \u2728 Generar Mensaje\n                            <\/button>\n                        <\/div>\n                        <div id=\"excusal-output\" class=\"mt-4 p-4 bg-stone-50 rounded-lg text-sm text-stone-700 min-h-[100px] border border-dashed border-stone-300 hidden\">\n                        <\/div>\n                    <\/div>\n\n                    <!-- Tool 2: Risk Consultant Chat -->\n                    <div class=\"bg-white rounded-2xl p-6 shadow-sm border border-emerald-100 flex flex-col\">\n                        <h3 class=\"font-bold text-emerald-800 mb-2 flex items-center gap-2\">\n                            <span>\ud83d\udd75\ufe0f<\/span> Consultor de Riesgos Estrat\u00e9gicos\n                        <\/h3>\n                        <p class=\"text-sm text-stone-600 mb-4\">Analiza amenazas espec\u00edficas (como el \u00abEx\u00bb o desacuerdos familiares) y obt\u00e9n planes de mitigaci\u00f3n.<\/p>\n                        \n                        <div class=\"flex-grow space-y-3\">\n                            <div id=\"chat-history\" class=\"h-40 overflow-y-auto p-3 bg-stone-50 rounded-lg text-xs space-y-2 border border-stone-100\">\n                                <div class=\"text-stone-400 italic\">Chat iniciado. Preg\u00fantame sobre cualquier riesgo&#8230;<\/div>\n                            <\/div>\n                            <div class=\"flex gap-2\">\n                                <input id=\"chat-input\" type=\"text\" placeholder=\"Ej: \u00bfQu\u00e9 hago si mi suegra invita a alguien m\u00e1s?\" class=\"flex-grow px-4 py-2 rounded-lg border border-stone-200 text-sm outline-none\">\n                                <button onclick=\"consultGemini()\" class=\"bg-stone-800 text-white p-2 rounded-lg hover:bg-stone-900 transition-all\">\n                                    \u2728\n                                <\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <!-- Scope Section (Original Content) -->\n        <section id=\"alcance\" class=\"bg-white rounded-2xl p-8 border border-stone-200 shadow-sm\">\n            <h2 class=\"text-2xl font-serif font-bold text-stone-800 mb-6\">Definici\u00f3n de \u00abBoda Sencilla\u00bb<\/h2>\n            <div class=\"flex border-b border-stone-200 mb-6 gap-4 overflow-x-auto\">\n                <button onclick=\"openTab(event, 'novio')\" class=\"tab-btn active pb-2 px-4\">\ud83d\udcdc Reglas Novio<\/button>\n                <button onclick=\"openTab(event, 'novia')\" class=\"tab-btn pb-2 px-4\">\ud83d\udcdc Reglas Novia<\/button>\n            <\/div>\n            <div id=\"novio\" class=\"tab-content block\">\n                <ul class=\"grid grid-cols-1 md:grid-cols-2 gap-4 text-sm\">\n                    <li class=\"p-3 bg-stone-50 rounded-lg\">\u2705 Misa completa obligatoria<\/li>\n                    <li class=\"p-3 bg-stone-50 rounded-lg\">\u2705 Inicio: Antes 5:00 PM<\/li>\n                    <li class=\"p-3 bg-stone-50 rounded-lg\">\u2705 Catering: Pasapalos y Whisky 8 a\u00f1os<\/li>\n                <\/ul>\n            <\/div>\n            <div id=\"novia\" class=\"tab-content hidden\">\n                <ul class=\"grid grid-cols-1 md:grid-cols-2 gap-4 text-sm\">\n                    <li class=\"p-3 bg-emerald-50 rounded-lg\">\u2705 M\u00e1ximo 35 invitados<\/li>\n                    <li class=\"p-3 bg-emerald-50 rounded-lg\">\u2705 Locaci\u00f3n: Naturaleza pura<\/li>\n                    <li class=\"p-3 bg-emerald-50 rounded-lg\">\u2705 Men\u00fa: Buen vino y Teque\u00f1os<\/li>\n                <\/ul>\n            <\/div>\n        <\/section>\n\n        <!-- Analysis Section -->\n        <section id=\"analisis\" class=\"grid grid-cols-1 lg:grid-cols-2 gap-8\">\n            <div class=\"bg-white p-6 rounded-xl border border-stone-200 shadow-sm\">\n                <h3 class=\"font-bold text-center mb-4\">Estrategia de Filtrado<\/h3>\n                <div class=\"chart-container\">\n                    <canvas id=\"guestChart\"><\/canvas>\n                <\/div>\n            <\/div>\n            <div class=\"bg-white p-6 rounded-xl border border-stone-200 shadow-sm\">\n                <h3 class=\"font-bold text-center mb-4\">Mapa de Riesgos (Ushuaia vs. Ex)<\/h3>\n                <div class=\"chart-container\">\n                    <canvas id=\"riskChart\"><\/canvas>\n                <\/div>\n            <\/div>\n        <\/section>\n\n    <\/main>\n\n    <footer class=\"text-center py-12 text-stone-400 text-sm\">\n        <p>Proyecto Boda Ushuaia &copy; 2026 | Impulsado por \u2728 Gemini API<\/p>\n    <\/footer>\n\n    <script>\n        \/\/ --- GEMINI API INTEGRATION ---\n        const apiKey = \"\"; \/\/ API Key se inyecta en ejecuci\u00f3n\n\n        async function callGemini(prompt, systemPrompt = \"\") {\n            const url = `https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/gemini-2.5-flash-preview-09-2025:generateContent?key=${apiKey}`;\n            \n            const payload = {\n                contents: [{ parts: [{ text: prompt }] }],\n                systemInstruction: { parts: [{ text: systemPrompt }] }\n            };\n\n            let delay = 1000;\n            for (let i = 0; i < 5; i++) {\n                try {\n                    const response = await fetch(url, {\n                        method: 'POST',\n                        headers: { 'Content-Type': 'application\/json' },\n                        body: JSON.stringify(payload)\n                    });\n                    const data = await response.json();\n                    return data.candidates?.[0]?.content?.parts?.[0]?.text || \"Error en respuesta\";\n                } catch (error) {\n                    if (i === 4) throw error;\n                    await new Promise(resolve => setTimeout(resolve, delay));\n                    delay *= 2;\n                }\n            }\n        }\n\n        \/\/ Feature 1: Diplomacia Bot\n        async function generateExcusal() {\n            const name = document.getElementById('guest-name').value || \"Invitado\";\n            const tone = document.getElementById('tone').value;\n            const output = document.getElementById('excusal-output');\n            \n            output.classList.remove('hidden');\n            output.innerHTML = '<span class=\"loading-dots\">Redactando mensaje diplom\u00e1tico<\/span>';\n            \n            const systemPrompt = \"Eres un experto Project Manager de Bodas Destino. Tu tarea es ayudar a los novios a redactar un mensaje para invitados que NO podr\u00e1n asistir. La excusa principal es que el lugar elegido (Ushuaia) es extremadamente peque\u00f1o y las regulaciones locales\/presupuestarias limitan la asistencia a solo 30 personas. El tono debe ser elegante, sin culpar a nadie, y mencionando que 'el Fin del Mundo' es un reto log\u00edstico.\";\n            const prompt = `Escribe un mensaje ${tone} para ${name}. Explica que no podemos invitarlo debido a las estrictas limitaciones de espacio en la capilla de Ushuaia y los requisitos de 'boda sencilla' del sponsor. S\u00e9 muy amable.`;\n\n            try {\n                const result = await callGemini(prompt, systemPrompt);\n                output.innerText = result;\n            } catch (e) {\n                output.innerText = \"Lo siento, la monta\u00f1a bloque\u00f3 la se\u00f1al de la AI. Reintenta.\";\n            }\n        }\n\n        \/\/ Feature 2: Chat Consultor\n        async function consultGemini() {\n            const input = document.getElementById('chat-input');\n            const history = document.getElementById('chat-history');\n            const userMsg = input.value;\n            if(!userMsg) return;\n\n            history.innerHTML += `<div class=\"bg-emerald-100 p-2 rounded-lg ml-4\"><strong>T\u00fa:<\/strong> ${userMsg}<\/div>`;\n            input.value = \"\";\n            \n            const loading = document.createElement('div');\n            loading.className = \"p-2 italic text-stone-400\";\n            loading.innerHTML = \"\u2728 Gemini est\u00e1 analizando el Project Charter...\";\n            history.appendChild(loading);\n            history.scrollTop = history.scrollHeight;\n\n            const systemPrompt = \"Eres el consultor de riesgos del Proyecto Boda Ushuaia. Conoces el contexto: Presupuesto US$25k, la T\u00eda sponsor es estricta, el 'Ex' quiere boicotear, la mam\u00e1 de la novia simpatiza con el 'Ex' y los padres quieren nietos. Responde de forma estrat\u00e9gica y breve, siempre orientada a que el proyecto NO fracase y se mantenga el presupuesto.\";\n            \n            try {\n                const result = await callGemini(userMsg, systemPrompt);\n                loading.remove();\n                history.innerHTML += `<div class=\"bg-white border border-stone-200 p-2 rounded-lg mr-4 shadow-sm\"><strong>AI:<\/strong> ${result}<\/div>`;\n                history.scrollTop = history.scrollHeight;\n            } catch (e) {\n                loading.innerText = \"Error de conexi\u00f3n. El clima en el canal de Beagle est\u00e1 dif\u00edcil.\";\n            }\n        }\n\n        \/\/ --- UI & Charts Logic ---\n        function openTab(evt, tabName) {\n            const contents = document.getElementsByClassName(\"tab-content\");\n            for (let c of contents) c.classList.replace('block', 'hidden');\n            const btns = document.getElementsByClassName(\"tab-btn\");\n            for (let b of btns) b.classList.remove('active');\n            document.getElementById(tabName).classList.replace('hidden', 'block');\n            evt.currentTarget.classList.add('active');\n        }\n\n        window.onload = function() {\n            \/\/ Chart 1\n            new Chart(document.getElementById('guestChart'), {\n                type: 'doughnut',\n                data: {\n                    labels: ['Invitados Finales', 'Descartados (Log\u00edstica)', 'Descartados (Filtro AI)'],\n                    datasets: [{\n                        data: [35, 400, 165],\n                        backgroundColor: ['#047857', '#e7e5e4', '#f43f5e']\n                    }]\n                },\n                options: { maintainAspectRatio: false }\n            });\n\n            \/\/ Chart 2\n            new Chart(document.getElementById('riskChart'), {\n                type: 'radar',\n                data: {\n                    labels: ['Log\u00edstica', 'Presupuesto', 'El Ex', 'Sogra\/Suegro', 'Clima'],\n                    datasets: [{\n                        label: 'Nivel de Riesgo',\n                        data: [9, 7, 5, 8, 10],\n                        borderColor: '#047857',\n                        backgroundColor: 'rgba(4, 120, 87, 0.2)'\n                    }]\n                },\n                options: { maintainAspectRatio: false }\n            });\n        };\n    <\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Dashboard Inteligente: Proyecto Boda Ushuaia 2026 \ud83c\udfd4\ufe0f PMO Destino AI Resumen Reglas \u2728 Herramientas AI An\u00e1lisis Proyecto BODA en USHUAIA \u00abLog\u00edstica extrema para una uni\u00f3n \u00edntima\u00bb \ud83d\udcb0 Presupuesto US$ 25.000 \ud83d\udc65 Invitados 35 M\u00e1x. \ud83d\udccd Ubicaci\u00f3n Ushuaia, ARG \u2728 Asistente Inteligente del Proyecto (Gemini AI) \u2709\ufe0f Generador de Excusas Diplom\u00e1ticas \u00bfC\u00f3mo decirle a un primo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-15","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/posts\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":1,"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":16,"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/posts\/15\/revisions\/16"}],"wp:attachment":[{"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/media?parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/categories?post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cursos.sylosconsultoria.com\/index.php\/wp-json\/wp\/v2\/tags?post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}