{"id":11087,"date":"2026-08-27T13:26:16","date_gmt":"2026-08-27T13:26:16","guid":{"rendered":"https:\/\/ggroupmx.com\/?page_id=11087"},"modified":"2026-08-27T13:26:16","modified_gmt":"2026-08-27T13:26:16","slug":"tracker-de-implementacion-hch","status":"publish","type":"page","link":"https:\/\/ggroupmx.com\/en\/tracker-de-implementacion-hch\/","title":{"rendered":"Tracker de implementaci\u00f3n HCH"},"content":{"rendered":"<p>&nbsp;<\/p>\n<style>\n    :root {<br \/>\n      --bg-main: #f8fafc;<br \/>\n      --card-bg: #ffffff;<br \/>\n      --border-color: #e2e8f0;<br \/>\n      --text-main: #1e293b;<br \/>\n      --text-muted: #64748b;<br \/>\n      --primary: #0f172a;<br \/>\n      --primary-accent: #2563eb;<br \/>\n      --danger: #ef4444;<br \/>\n      --danger-bg: #fee2e2;<br \/>\n      --warning: #f59e0b;<br \/>\n      --warning-bg: #fef3c7;<br \/>\n      --success: #10b981;<br \/>\n      --success-bg: #d1fae5;<br \/>\n    }<\/p>\n<p>    * {<br \/>\n      box-sizing: border-box;<br \/>\n      margin: 0;<br \/>\n      padding: 0;<br \/>\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;<br \/>\n    }<\/p>\n<p>    body {<br \/>\n      background-color: var(--bg-main);<br \/>\n      color: var(--text-main);<br \/>\n      padding: 24px 20px 60px 20px;<br \/>\n      line-height: 1.5;<br \/>\n    }<\/p>\n<p>    .container {<br \/>\n      max-width: 1400px;<br \/>\n      margin: 0 auto;<br \/>\n    }<\/p>\n<p>    \/* Header *\/<br \/>\n    header {<br \/>\n      background: #ffffff;<br \/>\n      border: 1px solid var(--border-color);<br \/>\n      border-radius: 12px;<br \/>\n      padding: 24px;<br \/>\n      margin-bottom: 24px;<br \/>\n      box-shadow: 0 1px 3px rgba(0,0,0,0.05);<br \/>\n      display: flex;<br \/>\n      flex-wrap: wrap;<br \/>\n      justify-content: space-between;<br \/>\n      align-items: center;<br \/>\n      gap: 16px;<br \/>\n    }<\/p>\n<p>    .title-section h1 {<br \/>\n      font-size: 22px;<br \/>\n      font-weight: 700;<br \/>\n      color: var(--primary);<br \/>\n      display: flex;<br \/>\n      align-items: center;<br \/>\n      gap: 10px;<br \/>\n    }<\/p>\n<p>    .title-section p {<br \/>\n      color: var(--text-muted);<br \/>\n      font-size: 13px;<br \/>\n      margin-top: 4px;<br \/>\n    }<\/p>\n<p>    .header-actions {<br \/>\n      display: flex;<br \/>\n      gap: 10px;<br \/>\n      flex-wrap: wrap;<br \/>\n    }<\/p>\n<p>    button.btn {<br \/>\n      padding: 9px 16px;<br \/>\n      font-size: 13px;<br \/>\n      font-weight: 600;<br \/>\n      border-radius: 8px;<br \/>\n      border: 1px solid transparent;<br \/>\n      cursor: pointer;<br \/>\n      display: inline-flex;<br \/>\n      align-items: center;<br \/>\n      gap: 6px;<br \/>\n      transition: all 0.2s ease;<br \/>\n    }<\/p>\n<p>    .btn-primary { background: #2563eb; color: #fff; }<br \/>\n    .btn-primary:hover { background: #1d4ed8; }<br \/>\n    .btn-secondary { background: #ffffff; color: var(--text-main); border-color: var(--border-color); }<br \/>\n    .btn-secondary:hover { background: #f1f5f9; }<br \/>\n    .btn-success { background: #10b981; color: #fff; }<br \/>\n    .btn-success:hover { background: #059669; }<br \/>\n    .btn-danger-outline { background: transparent; color: var(--danger); border-color: var(--danger); }<br \/>\n    .btn-danger-outline:hover { background: var(--danger-bg); }<\/p>\n<p>    \/* Top Stats \/ Milestones Grid *\/<br \/>\n    .grid-stats {<br \/>\n      display: grid;<br \/>\n      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));<br \/>\n      gap: 16px;<br \/>\n      margin-bottom: 24px;<br \/>\n    }<\/p>\n<p>    .stat-card {<br \/>\n      background: #ffffff;<br \/>\n      border: 1px solid var(--border-color);<br \/>\n      border-radius: 12px;<br \/>\n      padding: 16px 20px;<br \/>\n      box-shadow: 0 1px 3px rgba(0,0,0,0.04);<br \/>\n      display: flex;<br \/>\n      flex-direction: column;<br \/>\n      justify-content: space-between;<br \/>\n      position: relative;<br \/>\n      overflow: hidden;<br \/>\n    }<\/p>\n<p>    .stat-card::before {<br \/>\n      content: '';<br \/>\n      position: absolute;<br \/>\n      top: 0;<br \/>\n      left: 0;<br \/>\n      width: 4px;<br \/>\n      height: 100%;<br \/>\n    }<\/p>\n<p>    .stat-card.red::before { background: var(--danger); }<br \/>\n    .stat-card.amber::before { background: var(--warning); }<br \/>\n    .stat-card.blue::before { background: var(--primary-accent); }<br \/>\n    .stat-card.green::before { background: var(--success); }<\/p>\n<p>    .stat-title {<br \/>\n      font-size: 11px;<br \/>\n      text-transform: uppercase;<br \/>\n      letter-spacing: 0.05em;<br \/>\n      color: var(--text-muted);<br \/>\n      font-weight: 700;<br \/>\n    }<\/p>\n<p>    .stat-date {<br \/>\n      font-size: 20px;<br \/>\n      font-weight: 800;<br \/>\n      color: var(--primary);<br \/>\n      margin: 4px 0;<br \/>\n    }<\/p>\n<p>    .stat-desc {<br \/>\n      font-size: 12px;<br \/>\n      color: var(--text-muted);<br \/>\n      line-height: 1.4;<br \/>\n    }<\/p>\n<p>    \/* Filters Bar *\/<br \/>\n    .controls-bar {<br \/>\n      background: #ffffff;<br \/>\n      border: 1px solid var(--border-color);<br \/>\n      border-radius: 12px;<br \/>\n      padding: 14px 20px;<br \/>\n      margin-bottom: 20px;<br \/>\n      display: flex;<br \/>\n      flex-wrap: wrap;<br \/>\n      align-items: center;<br \/>\n      justify-content: space-between;<br \/>\n      gap: 14px;<br \/>\n    }<\/p>\n<p>    .filter-group {<br \/>\n      display: flex;<br \/>\n      align-items: center;<br \/>\n      gap: 10px;<br \/>\n      flex-wrap: wrap;<br \/>\n    }<\/p>\n<p>    .filter-group label {<br \/>\n      font-size: 13px;<br \/>\n      font-weight: 600;<br \/>\n      color: var(--text-muted);<br \/>\n    }<\/p>\n<p>    select, input[type=\"text\"] {<br \/>\n      padding: 8px 12px;<br \/>\n      border-radius: 6px;<br \/>\n      border: 1px solid var(--border-color);<br \/>\n      font-size: 13px;<br \/>\n      color: var(--text-main);<br \/>\n      background: #fff;<br \/>\n      outline: none;<br \/>\n    }<\/p>\n<p>    select:focus, input[type=\"text\"]:focus {<br \/>\n      border-color: var(--primary-accent);<br \/>\n      box-shadow: 0 0 0 2px rgba(37,99,235,0.15);<br \/>\n    }<\/p>\n<p>    \/* Table *\/<br \/>\n    .table-container {<br \/>\n      background: #ffffff;<br \/>\n      border: 1px solid var(--border-color);<br \/>\n      border-radius: 12px;<br \/>\n      overflow-x: auto;<br \/>\n      box-shadow: 0 2px 4px rgba(0,0,0,0.04);<br \/>\n      margin-bottom: 24px;<br \/>\n    }<\/p>\n<p>    table {<br \/>\n      width: 100%;<br \/>\n      border-collapse: collapse;<br \/>\n      text-align: left;<br \/>\n      font-size: 13px;<br \/>\n    }<\/p>\n<p>    th {<br \/>\n      background-color: #f1f5f9;<br \/>\n      color: #334155;<br \/>\n      font-weight: 700;<br \/>\n      padding: 12px 14px;<br \/>\n      border-bottom: 1px solid var(--border-color);<br \/>\n      white-space: nowrap;<br \/>\n    }<\/p>\n<p>    td {<br \/>\n      padding: 12px 14px;<br \/>\n      border-bottom: 1px solid var(--border-color);<br \/>\n      vertical-align: top;<br \/>\n    }<\/p>\n<p>    tr:hover {<br \/>\n      background-color: #f8fafc;<br \/>\n    }<\/p>\n<p>    [contenteditable=\"true\"] {<br \/>\n      padding: 4px 6px;<br \/>\n      border-radius: 4px;<br \/>\n      outline: none;<br \/>\n      transition: background-color 0.2s;<br \/>\n    }<\/p>\n<p>    [contenteditable=\"true\"]:hover {<br \/>\n      background-color: #f1f5f9;<br \/>\n      box-shadow: inset 0 0 0 1px #cbd5e1;<br \/>\n    }<\/p>\n<p>    [contenteditable=\"true\"]:focus {<br \/>\n      background-color: #ffffff;<br \/>\n      box-shadow: 0 0 0 2px #3b82f6;<br \/>\n    }<\/p>\n<p>    \/* Badges \/ Status Dropdowns *\/<br \/>\n    .status-select {<br \/>\n      font-size: 11px;<br \/>\n      font-weight: 700;<br \/>\n      padding: 4px 8px;<br \/>\n      border-radius: 20px;<br \/>\n      border: 1px solid transparent;<br \/>\n      cursor: pointer;<br \/>\n      text-transform: uppercase;<br \/>\n      outline: none;<br \/>\n    }<\/p>\n<p>    .status-rojo {<br \/>\n      background-color: var(--danger-bg);<br \/>\n      color: #991b1b;<br \/>\n      border-color: #fca5a5;<br \/>\n    }<\/p>\n<p>    .status-amarillo {<br \/>\n      background-color: var(--warning-bg);<br \/>\n      color: #92400e;<br \/>\n      border-color: #fcd34d;<br \/>\n    }<\/p>\n<p>    .status-verde {<br \/>\n      background-color: var(--success-bg);<br \/>\n      color: #065f46;<br \/>\n      border-color: #6ee7b7;<br \/>\n    }<\/p>\n<p>    .status-hecho {<br \/>\n      background-color: #e2e8f0;<br \/>\n      color: #475569;<br \/>\n      border-color: #cbd5e1;<br \/>\n    }<\/p>\n<p>    .badge-frente {<br \/>\n      font-weight: 700;<br \/>\n      color: #1e40af;<br \/>\n      background: #eff6ff;<br \/>\n      padding: 3px 8px;<br \/>\n      border-radius: 6px;<br \/>\n      display: inline-block;<br \/>\n      white-space: nowrap;<br \/>\n    }<\/p>\n<p>    .btn-row-del {<br \/>\n      background: transparent;<br \/>\n      border: none;<br \/>\n      color: #94a3b8;<br \/>\n      cursor: pointer;<br \/>\n      font-size: 16px;<br \/>\n      padding: 2px 6px;<br \/>\n      border-radius: 4px;<br \/>\n    }<br \/>\n    .btn-row-del:hover {<br \/>\n      color: var(--danger);<br \/>\n      background: var(--danger-bg);<br \/>\n    }<\/p>\n<p>    \/* Financial Summary Card *\/<br \/>\n    .financial-box {<br \/>\n      background: #ffffff;<br \/>\n      border: 1px solid var(--border-color);<br \/>\n      border-radius: 12px;<br \/>\n      padding: 20px;<br \/>\n      margin-bottom: 24px;<br \/>\n    }<\/p>\n<p>    .financial-box h3 {<br \/>\n      font-size: 15px;<br \/>\n      font-weight: 700;<br \/>\n      margin-bottom: 12px;<br \/>\n      color: var(--primary);<br \/>\n    }<\/p>\n<p>    .fin-grid {<br \/>\n      display: grid;<br \/>\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));<br \/>\n      gap: 16px;<br \/>\n    }<\/p>\n<p>    .fin-item {<br \/>\n      background: #f8fafc;<br \/>\n      border: 1px solid var(--border-color);<br \/>\n      padding: 12px 16px;<br \/>\n      border-radius: 8px;<br \/>\n    }<\/p>\n<p>    .fin-item span {<br \/>\n      display: block;<br \/>\n      font-size: 11px;<br \/>\n      color: var(--text-muted);<br \/>\n      font-weight: 600;<br \/>\n    }<\/p>\n<p>    .fin-item strong {<br \/>\n      font-size: 16px;<br \/>\n      color: var(--primary);<br \/>\n    }<\/p>\n<p>    .toast {<br \/>\n      position: fixed;<br \/>\n      bottom: 20px;<br \/>\n      right: 20px;<br \/>\n      background: #0f172a;<br \/>\n      color: #fff;<br \/>\n      padding: 12px 20px;<br \/>\n      border-radius: 8px;<br \/>\n      font-size: 13px;<br \/>\n      box-shadow: 0 4px 12px rgba(0,0,0,0.15);<br \/>\n      opacity: 0;<br \/>\n      transform: translateY(20px);<br \/>\n      transition: all 0.3s ease;<br \/>\n      pointer-events: none;<br \/>\n      z-index: 100;<br \/>\n    }<\/p>\n<p>    .toast.show {<br \/>\n      opacity: 1;<br \/>\n      transform: translateY(0);<br \/>\n    }<br \/>\n  <\/style>\n<p>&nbsp;<\/p>\n<div class=\"container\">\n<p><!-- Header --><\/p>\n<header>\n<div class=\"title-section\">\n<h1>\ud83d\udccb Matriz Din\u00e1mica \u2014 Hive Centro Hist\u00f3rico (Marriott)<\/h1>\n<p>Control ejecutivo, tareas cr\u00edticas y seguimiento de contingencia 2026<\/p>\n<\/div>\n<div class=\"header-actions\"><button class=\"btn btn-secondary\">\ud83d\udce5 Exportar JSON<\/button><br \/>\n<button class=\"btn btn-secondary\">\ud83d\udce4 Importar JSON<\/button><br \/>\n<input id=\"fileInput\" style=\"display: none;\" accept=\".json\" type=\"file\" \/><br \/>\n<button class=\"btn btn-primary\">\u2795 Nueva Tarea<\/button><br \/>\n<button class=\"btn btn-success\">\ud83d\udcbe Guardar Cambios<\/button><\/div>\n<\/header>\n<p><!-- Key Milestones --><\/p>\n<div class=\"grid-stats\">\n<div class=\"stat-card red\">\n<div class=\"stat-title\">Checklist In Situ Marriott<\/div>\n<div class=\"stat-date\">7 Sep 2026<\/div>\n<div class=\"stat-desc\">PBX, GPNS, Cableado 100%, MDF\/IDFs e Internet operando f\u00edsicamente.<\/div>\n<\/div>\n<div class=\"stat-card amber\">\n<div class=\"stat-title\">Definici\u00f3n de Plataforma<\/div>\n<div class=\"stat-date\">12 Oct 2026<\/div>\n<div class=\"stat-desc\">Decisi\u00f3n de apertura: Legacy vs Nueva Plataforma (S. Spagnuolo).<\/div>\n<\/div>\n<div class=\"stat-card blue\">\n<div class=\"stat-title\">Objetivo Apertura Hotel<\/div>\n<div class=\"stat-date\">Q4 2026<\/div>\n<div class=\"stat-desc\">Sostener 2026 frente a la recomendaci\u00f3n corporativa Marriott 2027.<\/div>\n<\/div>\n<div class=\"stat-card green\">\n<div class=\"stat-title\">Ruta Cr\u00edtica C\u00f3mputo<\/div>\n<div class=\"stat-date\">12 Semanas ETA<\/div>\n<div class=\"stat-desc\">Lenovo directo entrega a fines de octubre solo colocando OC hoy\/ma\u00f1ana.<\/div>\n<\/div>\n<\/div>\n<p><!-- Financial Scope Callout --><\/p>\n<div class=\"financial-box\">\n<h3>\ud83d\udcb0 Esquema Financiero Clave: Servidores HPE DL380 (USD $163,933.46 IVA Inc.)<\/h3>\n<div class=\"fin-grid\">\n<div class=\"fin-item\">Anticipo 45% (Viernes)<br \/>\n<strong>USD $73,770.06<\/strong><\/div>\n<div class=\"fin-item\">2da Exhibici\u00f3n (35%)<br \/>\n<strong>USD $57,376.71<\/strong><\/div>\n<div class=\"fin-item\">3ra Exhibici\u00f3n (20% Val. Claudia)<br \/>\n<strong style=\"color: #b91c1c;\">USD $32,786.69<\/strong><\/div>\n<div class=\"fin-item\">Estatus Jur\u00eddico<br \/>\n<strong>Contrato Expr\u00e9s M&amp;G<\/strong><\/div>\n<\/div>\n<\/div>\n<p><!-- Controls Bar --><\/p>\n<div class=\"controls-bar\">\n<div class=\"filter-group\"><label for=\"filterStatus\">Sem\u00e1foro:<\/label><br \/>\n<select id=\"filterStatus\" onchange=\"filterTable()\"><option value=\"ALL\">Todos los estatus<\/option><option value=\"ROJO\">\ud83d\udd34 Rojo (Cr\u00edtico \/ Bloqueado)<\/option><option value=\"AMARILLO\">\ud83d\udfe1 Amarillo (En Proceso)<\/option><option value=\"VERDE\">\ud83d\udfe2 Verde (A tiempo)<\/option><option value=\"HECHO\">\u26aa Hecho (Completado)<\/option><\/select><label style=\"margin-left: 10px;\" for=\"filterOwner\">Responsable:<\/label><br \/>\n<select id=\"filterOwner\" onchange=\"filterTable()\"><option value=\"ALL\">Todos<\/option><option value=\"Gerardo\">Gerardo<\/option><option value=\"Claudia\">Claudia<\/option><option value=\"Markus\">Markus<\/option><option value=\"Ricardo\">Ricardo<\/option><option value=\"Gloria\">Gloria \/ Uriel<\/option><\/select><\/p>\n<\/div>\n<div class=\"filter-group\"><input id=\"searchInput\" type=\"text\" placeholder=\"\ud83d\udd0d Buscar tarea, frente o detalle...\" \/><\/div>\n<\/div>\n<p><!-- Interactive Table --><\/p>\n<div class=\"table-container\">\n<table id=\"tasksTable\">\n<thead>\n<tr>\n<th style=\"width: 45px; text-align: center;\">#<\/th>\n<th style=\"width: 140px;\">Frente<\/th>\n<th>Acci\u00f3n \/ Entregable Espec\u00edfico (Editable)<\/th>\n<th style=\"width: 160px;\">Responsable(s)<\/th>\n<th style=\"width: 130px;\">Fecha L\u00edmite<\/th>\n<th style=\"width: 120px; text-align: center;\">Sem\u00e1foro<\/th>\n<th>Dependencia \/ Riesgo \/ Notas<\/th>\n<th style=\"width: 40px; text-align: center;\">\u2699\ufe0f<\/th>\n<\/tr>\n<\/thead>\n<tbody id=\"tableBody\"><!-- Rows will be injected via JavaScript --><\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div id=\"toast\" class=\"toast\">Cambios guardados con \u00e9xito en tu navegador<\/div>\n<p><script>\n  const initialData = [\n    {\n      id: \"1.1\",\n      frente: \"Servidores HPE\",\n      accion: \"Enviar a Jur\u00eddico propuesta M&G Security y convenio de pagos para redacci\u00f3n expr\u00e9s.\",\n      responsables: \"Gerardo \/ Markus \/ Ricardo\",\n      fecha: \"Hoy (Firma Ma\u00f1ana)\",\n      semaforo: \"AMARILLO\",\n      notas: \"Equipos DL380 escasos. OC congela precio y existencia.\"\n    },\n    {\n      id: \"1.2\",\n      frente: \"Servidores HPE\",\n      accion: \"Validar discrepancia en monto de 3ra exhibici\u00f3n ($32,786.69 vs $28,264.39) y avisar a Mauricio Mariscal.\",\n      responsables: \"Claudia \/ Gerardo\",\n      fecha: \"Hoy \/ Ma\u00f1ana\",\n      semaforo: \"AMARILLO\",\n      notas: \"Total USD $163,933.46 IVA inc. Esquema: 45%, 35%, 20%.\"\n    },\n    {\n      id: \"1.3\",\n      frente: \"Servidores HPE\",\n      accion: \"Pago del 45% de anticipo ($73,770.06 USD) junto con la firma del contrato.\",\n      responsables: \"Claudia \/ Finanzas\",\n      fecha: \"Viernes a m\u00e1s tardar\",\n      semaforo: \"AMARILLO\",\n      notas: \"Condici\u00f3n para apartar f\u00edsicamente el lote de servidores.\"\n    },\n    {\n      id: \"2.1\",\n      frente: \"C\u00f3mputo Lenovo\",\n      accion: \"Cerrar configuraci\u00f3n final y precio de equipos CTO Marriott con Lenovo directo.\",\n      responsables: \"Gerardo\",\n      fecha: \"Hoy\",\n      semaforo: \"ROJO\",\n      notas: \"ETA de 12 semanas. No se autoriz\u00f3 entrega inmediata.\"\n    },\n    {\n      id: \"2.2\",\n      frente: \"C\u00f3mputo Lenovo\",\n      accion: \"Emisi\u00f3n y colocaci\u00f3n de OC a primera hora. Cada d\u00eda de desfase compromete entrega.\",\n      responsables: \"Claudia\",\n      fecha: \"Ma\u00f1ana a primera hora\",\n      semaforo: \"ROJO\",\n      notas: \"Lenovo directo garantiza entrega \u00faltima semana de octubre solo si sale ya.\"\n    },\n    {\n      id: \"3.1\",\n      frente: \"PBX Xorcom\",\n      accion: \"Confirmar opci\u00f3n de PBX y responder a Victor Mart\u00ednez dudas sobre tel\u00e9fonos housekeeping.\",\n      responsables: \"Gerardo\",\n      fecha: \"Ma\u00f1ana\",\n      semaforo: \"AMARILLO\",\n      notas: \"Neocenter tiene PBX de entrega inmediata.\"\n    },\n    {\n      id: \"3.2\",\n      frente: \"PBX Xorcom\",\n      accion: \"Colocar OC y programar pago esta semana para instalaci\u00f3n en sitio.\",\n      responsables: \"Claudia \/ Gerardo\",\n      fecha: \"Esta semana (Listo 7 Sep)\",\n      semaforo: \"AMARILLO\",\n      notas: \"Requisito estricto Marriott al 7 de septiembre.\"\n    },\n    {\n      id: \"4.1\",\n      frente: \"Tel\u00e9fonos\",\n      accion: \"Desacoplar \u00f3rdenes: Procesar de inmediato los 30 administrativos de entrega inmediata.\",\n      responsables: \"Gerardo \/ Claudia\",\n      fecha: \"Ma\u00f1ana\",\n      semaforo: \"VERDE\",\n      notas: \"Evita que la demora de car\u00e1tulas frene la telefon\u00eda general.\"\n    },\n    {\n      id: \"4.2\",\n      frente: \"Tel\u00e9fonos\",\n      accion: \"Arrancar levantamiento de especificaciones y dise\u00f1o de car\u00e1tulas para 155 tel\u00e9fonos de cuarto.\",\n      responsables: \"Gerardo\",\n      fecha: \"Hoy \/ Inmediato\",\n      semaforo: \"AMARILLO\",\n      notas: \"Proceso de personalizaci\u00f3n largo.\"\n    },\n    {\n      id: \"5.1\",\n      frente: \"GPNS \/ Red\",\n      accion: \"Analizar comparativo TakeOver vs GPNS Full y adelantar llamada con Eduardo Sosa a ma\u00f1ana.\",\n      responsables: \"Gerardo \/ Markus\",\n      fecha: \"Ma\u00f1ana (Adelantar de Vie)\",\n      semaforo: \"AMARILLO\",\n      notas: \"No es posible esperar al viernes por deadline de Marriott.\"\n    },\n    {\n      id: \"5.2\",\n      frente: \"GPNS \/ Red\",\n      accion: \"Cerrar decisi\u00f3n t\u00e9cnica y acuerdo contractual con Hotspot.\",\n      responsables: \"Gerardo \/ Markus\",\n      fecha: \"Ma\u00f1ana\",\n      semaforo: \"AMARILLO\",\n      notas: \"Indispensable para red certificada GPNS Marriott.\"\n    },\n    {\n      id: \"6.1\",\n      frente: \"Obra \/ MDF-IDFs\",\n      accion: \"Entregar reporte formal de % real de cableado y fecha comprometida de MDF\/IDFs.\",\n      responsables: \"Gloria \/ Uriel\",\n      fecha: \"Ma\u00f1ana\",\n      semaforo: \"ROJO\",\n      notas: \"Bloqueador directo: sin cuartos listos no se puede montar servidores ni PBX.\"\n    },\n    {\n      id: \"6.2\",\n      frente: \"Obra \/ MDF-IDFs\",\n      accion: \"Coordinar inspecci\u00f3n en sitio para validar cumplimiento de especificaciones Marriott.\",\n      responsables: \"Gerardo \/ Gloria \/ Uriel\",\n      fecha: \"Ma\u00f1ana\",\n      semaforo: \"AMARILLO\",\n      notas: \"Revisar climatizaci\u00f3n, energ\u00eda ininterrumpida y racks.\"\n    },\n    {\n      id: \"7.1\",\n      frente: \"Internet Telmex\",\n      accion: \"Confirmar resultado de la visita t\u00e9cnica y entrega del enlace dedicado probado y operando.\",\n      responsables: \"Gerardo\",\n      fecha: \"Ma\u00f1ana\",\n      semaforo: \"AMARILLO\",\n      notas: \"Marriott exige internet operando al 7 de Sep, no contratado.\"\n    },\n    {\n      id: \"8.1\",\n      frente: \"PMS OPERA \/ SHIJI\",\n      accion: \"Agendar llamada con Rossan Cartagena y preparar comparativo on-premise vs nube.\",\n      responsables: \"Gerardo \/ Markus\",\n      fecha: \"Ma\u00f1ana\",\n      semaforo: \"AMARILLO\",\n      notas: \"Ajustar costos a la baja por cambio de arquitectura a Cloud.\"\n    },\n    {\n      id: \"8.2\",\n      frente: \"PMS OPERA \/ SHIJI\",\n      accion: \"Revisar condiciones y margen de negociaci\u00f3n econ\u00f3mica. Ratificar SHIJI para POS.\",\n      responsables: \"Claudia \/ Ricardo\",\n      fecha: \"Ma\u00f1ana (Antes de llamada)\",\n      semaforo: \"AMARILLO\",\n      notas: \"POS ratificado: SHIJI (se descarta Symphony).\"\n    }\n  ];<\/p>\n<p>  let currentData = [];<\/p>\n<p>  function loadData() {\n    const saved = localStorage.getItem('hive_marriott_tracker_v1');\n    if (saved) {\n      try {\n        currentData = JSON.parse(saved);\n      } catch (e) {\n        currentData = [...initialData];\n      }\n    } else {\n      currentData = [...initialData];\n    }\n    renderTable();\n  }<\/p>\n<p>  function renderTable() {\n    const tbody = document.getElementById('tableBody');\n    tbody.innerHTML = '';<\/p>\n<p>    currentData.forEach((row, index) => {\n      const tr = document.createElement('tr');\n      tr.dataset.index = index;<\/p>\n<p>      tr.innerHTML = `\n        <\/p>\n<td style=\"text-align: center; font-weight: 700; color: var(--text-muted);\">${row.id || (index + 1)}<\/td>\n<\/p>\n<td><span class=\"badge-frente\" contenteditable=\"true\" onblur=\"updateField(${index}, 'frente', this.innerText)\">${row.frente}<\/span><\/td>\n<\/p>\n<td contenteditable=\"true\" onblur=\"updateField(${index}, 'accion', this.innerText)\">${row.accion}<\/td>\n<\/p>\n<td contenteditable=\"true\" onblur=\"updateField(${index}, 'responsables', this.innerText)\"><strong>${row.responsables}<\/strong><\/td>\n<\/p>\n<td contenteditable=\"true\" onblur=\"updateField(${index}, 'fecha', this.innerText)\">${row.fecha}<\/td>\n<\/p>\n<td style=\"text-align: center;\">\n          <select class=\"status-select status-${row.semaforo.toLowerCase()}\" onchange=\"updateStatus(${index}, this.value, this)\"><option value=\"ROJO\" ${row.semaforo === 'ROJO' ? 'selected' : ''}>ROJO<\/option><option value=\"AMARILLO\" ${row.semaforo === 'AMARILLO' ? 'selected' : ''}>AMARILLO<\/option><option value=\"VERDE\" ${row.semaforo === 'VERDE' ? 'selected' : ''}>VERDE<\/option><option value=\"HECHO\" ${row.semaforo === 'HECHO' ? 'selected' : ''}>HECHO<\/option><\/select>\n        <\/td>\n<\/p>\n<td contenteditable=\"true\" onblur=\"updateField(${index}, 'notas', this.innerText)\" style=\"color: var(--text-muted); font-size: 12px;\">${row.notas}<\/td>\n<\/p>\n<td style=\"text-align: center;\">\n          <button class=\"btn-row-del\" title=\"Eliminar fila\" onclick=\"deleteRow(${index})\">\u2715<\/button>\n        <\/td>\n<p>\n      `;\n      tbody.appendChild(tr);\n    });<\/p>\n<p>    filterTable();\n  }<\/p>\n<p>  function updateField(index, field, value) {\n    currentData[index][field] = value.trim();\n  }<\/p>\n<p>  function updateStatus(index, newStatus, selectEl) {\n    currentData[index].semaforo = newStatus;\n    selectEl.className = `status-select status-${newStatus.toLowerCase()}`;\n  }<\/p>\n<p>  function addNewRow() {\n    const newId = (currentData.length + 1).toString();\n    currentData.push({\n      id: newId,\n      frente: \"Nuevo Frente\",\n      accion: \"Describa la tarea aqu\u00ed...\",\n      responsables: \"Asignar\",\n      fecha: \"Fecha compromiso\",\n      semaforo: \"AMARILLO\",\n      notas: \"Notas \/ Dependencias\"\n    });\n    renderTable();\n    showToast(\"Nueva tarea a\u00f1adida\");\n  }<\/p>\n<p>  function deleteRow(index) {\n    if (confirm(\"\u00bfEst\u00e1s seguro de eliminar esta tarea?\")) {\n      currentData.splice(index, 1);\n      renderTable();\n      showToast(\"Tarea eliminada\");\n    }\n  }<\/p>\n<p>  function saveToLocalStorage() {\n    localStorage.setItem('hive_marriott_tracker_v1', JSON.stringify(currentData));\n    showToast(\"\u2713 Datos guardados exitosamente\");\n  }<\/p>\n<p>  function filterTable() {\n    const statusFilter = document.getElementById('filterStatus').value;\n    const ownerFilter = document.getElementById('filterOwner').value.toLowerCase();\n    const searchFilter = document.getElementById('searchInput').value.toLowerCase();<\/p>\n<p>    const rows = document.querySelectorAll('#tableBody tr');<\/p>\n<p>    rows.forEach(tr => {\n      const idx = tr.dataset.index;\n      const data = currentData[idx];<\/p>\n<p>      const matchStatus = (statusFilter === 'ALL' || data.semaforo === statusFilter);\n      const matchOwner = (ownerFilter === 'ALL' || data.responsables.toLowerCase().includes(ownerFilter));\n      const matchSearch = (\n        data.accion.toLowerCase().includes(searchFilter) ||\n        data.frente.toLowerCase().includes(searchFilter) ||\n        data.notas.toLowerCase().includes(searchFilter) ||\n        data.responsables.toLowerCase().includes(searchFilter)\n      );<\/p>\n<p>      if (matchStatus && matchOwner && matchSearch) {\n        tr.style.display = '';\n      } else {\n        tr.style.display = 'none';\n      }\n    });\n  }<\/p>\n<p>  function exportData() {\n    const blob = new Blob([JSON.stringify(currentData, null, 2)], { type: 'application\/json' });\n    const url = URL.createObjectURL(blob);\n    const a = document.createElement('a');\n    a.href = url;\n    a.download = 'Seguimiento_Hive_Marriott_' + new Date().toISOString().slice(0, 10) + '.json';\n    a.click();\n    URL.revokeObjectURL(url);\n    showToast(\"Archivo JSON exportado\");\n  }<\/p>\n<p>  function importDataClick() {\n    document.getElementById('fileInput').click();\n  }<\/p>\n<p>  function importData(event) {\n    const file = event.target.files[0];\n    if (!file) return;\n    const reader = new FileReader();\n    reader.onload = function(e) {\n      try {\n        const imported = JSON.parse(e.target.result);\n        if (Array.isArray(imported)) {\n          currentData = imported;\n          renderTable();\n          saveToLocalStorage();\n          showToast(\"Datos importados exitosamente\");\n        }\n      } catch (err) {\n        alert(\"Error al importar el archivo JSON\");\n      }\n    };\n    reader.readAsText(file);\n  }<\/p>\n<p>  function showToast(msg) {\n    const toast = document.getElementById('toast');\n    toast.innerText = msg;\n    toast.classList.add('show');\n    setTimeout(() => {\n      toast.classList.remove('show');\n    }, 2800);\n  }<\/p>\n<p>  \/\/ Initial Load\n  window.onload = loadData;\n<\/script><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; &nbsp; \ud83d\udccb Matriz Din\u00e1mica \u2014 Hive Centro Hist\u00f3rico (Marriott) Control ejecutivo, tareas cr\u00edticas y seguimiento de contingencia 2026 \ud83d\udce5 Exportar JSON \ud83d\udce4 Importar JSON \u2795 Nueva Tarea \ud83d\udcbe Guardar Cambios Checklist In Situ Marriott 7 Sep 2026 PBX, GPNS, Cableado 100%, MDF\/IDFs e Internet operando f\u00edsicamente. Definici\u00f3n de Plataforma 12 Oct 2026 Decisi\u00f3n de &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/ggroupmx.com\/en\/tracker-de-implementacion-hch\/\" class=\"more-link\">Read More <span class=\"screen-reader-text\"> &#8220;Tracker de implementaci\u00f3n HCH&#8221;<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-11087","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ggroupmx.com\/en\/wp-json\/wp\/v2\/pages\/11087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ggroupmx.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ggroupmx.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ggroupmx.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ggroupmx.com\/en\/wp-json\/wp\/v2\/comments?post=11087"}],"version-history":[{"count":2,"href":"https:\/\/ggroupmx.com\/en\/wp-json\/wp\/v2\/pages\/11087\/revisions"}],"predecessor-version":[{"id":11089,"href":"https:\/\/ggroupmx.com\/en\/wp-json\/wp\/v2\/pages\/11087\/revisions\/11089"}],"wp:attachment":[{"href":"https:\/\/ggroupmx.com\/en\/wp-json\/wp\/v2\/media?parent=11087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}