457 lines
25 KiB
HTML
457 lines
25 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="es">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Cronograma — Sistema Turnero Inteligente (60 días)</title>
|
||
<style>
|
||
*{box-sizing:border-box;margin:0;padding:0}
|
||
body{font-family:'Segoe UI',system-ui,sans-serif;background:#f1f5f9;color:#1e293b;font-size:13px}
|
||
|
||
/* HEADER */
|
||
.hdr{background:linear-gradient(135deg,#1565c0 0%,#0d47a1 100%);color:#fff;padding:2rem 2.5rem}
|
||
.hdr h1{font-size:1.7rem;font-weight:800;letter-spacing:-0.02em}
|
||
.hdr .sub{opacity:.8;margin-top:.3rem;font-size:.9rem}
|
||
.stats{display:flex;gap:1.2rem;margin-top:1.5rem;flex-wrap:wrap}
|
||
.stat{background:rgba(255,255,255,.15);border-radius:10px;padding:.7rem 1.4rem;text-align:center;min-width:110px}
|
||
.stat .v{font-size:1.9rem;font-weight:800;line-height:1}
|
||
.stat .l{font-size:.7rem;opacity:.78;margin-top:.3rem;text-transform:uppercase;letter-spacing:.04em}
|
||
|
||
/* TOOLBAR */
|
||
.toolbar{background:#fff;padding:.8rem 2.5rem;display:flex;gap:.8rem;align-items:center;border-bottom:1px solid #e2e8f0;flex-wrap:wrap}
|
||
.btn{padding:.45rem 1.1rem;border-radius:8px;border:none;cursor:pointer;font-weight:600;font-size:.8rem;display:inline-flex;align-items:center;gap:.4rem;text-decoration:none}
|
||
.btn-xl{background:#217346;color:#fff}
|
||
.btn-pr{background:#374151;color:#fff}
|
||
.toolbar-note{font-size:.75rem;color:#64748b;margin-left:auto}
|
||
|
||
/* LEGEND */
|
||
.legend{background:#fff;padding:.7rem 2.5rem;display:flex;gap:1.2rem;flex-wrap:wrap;border-bottom:2px solid #e2e8f0;align-items:center}
|
||
.legend-title{font-weight:700;font-size:.78rem;color:#475569;margin-right:.5rem}
|
||
.li{display:flex;align-items:center;gap:.4rem;font-size:.75rem;color:#475569}
|
||
.ld{width:18px;height:14px;border-radius:3px;flex-shrink:0}
|
||
|
||
/* TABLE WRAPPER */
|
||
.wrap{padding:1.5rem 2.5rem;overflow-x:auto}
|
||
|
||
/* GANTT TABLE */
|
||
table{border-collapse:separate;border-spacing:0;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.1);width:100%;min-width:1100px}
|
||
thead tr th{background:#1e3a5f;color:#fff;padding:.65rem .45rem;text-align:center;font-weight:600;font-size:.73rem;white-space:nowrap;border-right:1px solid rgba(255,255,255,.1)}
|
||
thead tr th.tl{text-align:left;padding-left:.9rem}
|
||
.wd{display:block;font-size:.6rem;color:rgba(255,255,255,.65);font-weight:400;margin-top:.15rem}
|
||
|
||
tbody tr:nth-child(even) td{background:#f8fafc}
|
||
tbody tr:nth-child(odd) td{background:#fff}
|
||
tbody tr:hover td{background:#eff6ff!important}
|
||
td{padding:.55rem .45rem;border-bottom:1px solid #e8edf2;border-right:1px solid #f0f4f8;vertical-align:middle}
|
||
td.tl{padding-left:.9rem}
|
||
td.cn{text-align:center}
|
||
|
||
/* PHASE HEADER ROW */
|
||
tr.ph td{background:#334155!important;color:#fff;font-weight:700;font-size:.78rem;padding:.35rem .9rem;letter-spacing:.03em}
|
||
tr.ph td:first-child{border-radius:0}
|
||
|
||
/* BADGES */
|
||
.badge{display:inline-block;padding:.18rem .65rem;border-radius:100px;font-size:.68rem;font-weight:700;white-space:nowrap}
|
||
.b-done{background:#dcfce7;color:#14532d}
|
||
.b-next{background:#dbeafe;color:#1e3a8a}
|
||
.b-pend{background:#f1f5f9;color:#475569}
|
||
.b-qa{background:#fef3c7;color:#78350f}
|
||
.b-cap{background:#ede9fe;color:#4c1d95}
|
||
.b-dep{background:#d1fae5;color:#064e3b}
|
||
|
||
/* GANTT CELL COLORS */
|
||
.g0{background:#86efac!important} /* completado */
|
||
.g1{background:#60a5fa!important} /* dev fase 1 */
|
||
.g2{background:#818cf8!important} /* dev fase 2 */
|
||
.g3{background:#a78bfa!important} /* dev fase 3 */
|
||
.g4{background:#fbbf24!important} /* QA / testing */
|
||
.g5{background:#c084fc!important} /* capacitación */
|
||
.g6{background:#34d399!important} /* deploy */
|
||
.ge{background:#f1f5f9!important;color:transparent} /* empty */
|
||
|
||
/* DELIVERABLES CELL */
|
||
.del{font-size:.71rem;color:#475569;line-height:1.4}
|
||
.del b{color:#1e293b;font-size:.72rem}
|
||
|
||
/* PHASE BADGE */
|
||
.pbadge{display:inline-block;background:#1d4ed8;color:#fff;font-size:.68rem;font-weight:700;padding:.15rem .55rem;border-radius:5px;white-space:nowrap}
|
||
|
||
/* NOTES SECTION */
|
||
.notes{background:#fff;margin:0 2.5rem 2.5rem;border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px rgba(0,0,0,.08)}
|
||
.notes h3{font-size:.95rem;color:#1e3a5f;margin-bottom:1rem;font-weight:700}
|
||
.notes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}
|
||
.note-card{padding:1rem;border-radius:8px;border-left:4px solid #60a5fa;background:#f8fafc}
|
||
.note-card b{display:block;margin-bottom:.35rem;color:#1e3a5f;font-size:.82rem}
|
||
.note-card p{font-size:.75rem;color:#475569;line-height:1.5}
|
||
.note-card.nc1{border-left-color:#86efac}
|
||
.note-card.nc2{border-left-color:#fbbf24}
|
||
.note-card.nc3{border-left-color:#a78bfa}
|
||
|
||
/* FOOTER */
|
||
.footer{text-align:center;padding:1rem;font-size:.72rem;color:#94a3b8}
|
||
|
||
/* PRINT */
|
||
@media print{
|
||
.toolbar{display:none}
|
||
body{background:#fff}
|
||
.wrap{padding:.5rem}
|
||
table{font-size:8pt;min-width:unset}
|
||
.hdr{padding:1rem}
|
||
.notes{margin:0;padding:1rem}
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<!-- HEADER -->
|
||
<div class="hdr">
|
||
<h1>📅 Cronograma de Implementación — Sistema Turnero Inteligente</h1>
|
||
<div class="sub">Proyecto: ERP Multi-Módulo · Laboratorio Clínico · 14 Abril – 20 Junio 2026</div>
|
||
<div class="stats">
|
||
<div class="stat"><div class="v">67</div><div class="l">Días calendario</div></div>
|
||
<div class="stat"><div class="v">10</div><div class="l">Semanas</div></div>
|
||
<div class="stat"><div class="v">9</div><div class="l">Entregables</div></div>
|
||
<div class="stat"><div class="v">1/10</div><div class="l">Completado</div></div>
|
||
<div class="stat"><div class="v">20 Jun</div><div class="l">Go-live</div></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- LEGEND -->
|
||
<div class="legend">
|
||
<span class="legend-title">Referencias:</span>
|
||
<span class="li"><span class="ld" style="background:#86efac"></span>Completado</span>
|
||
<span class="li"><span class="ld" style="background:#60a5fa"></span>Desarrollo (BD + APIs)</span>
|
||
<span class="li"><span class="ld" style="background:#818cf8"></span>Desarrollo (Vistas)</span>
|
||
<span class="li"><span class="ld" style="background:#a78bfa"></span>Desarrollo (Admin)</span>
|
||
<span class="li"><span class="ld" style="background:#fbbf24"></span>Pruebas / QA</span>
|
||
<span class="li"><span class="ld" style="background:#c084fc"></span>Capacitación</span>
|
||
<span class="li"><span class="ld" style="background:#34d399"></span>Go-Live / Producción</span>
|
||
</div>
|
||
|
||
<!-- TOOLBAR -->
|
||
<div class="toolbar">
|
||
<button class="btn btn-xl" onclick="exportExcel()">📥 Descargar Excel (.xls)</button>
|
||
<button class="btn btn-pr" onclick="window.print()">🖨️ Imprimir / PDF</button>
|
||
<span class="toolbar-note">67 días calendario · 14 Abr – 20 Jun 2026</span>
|
||
</div>
|
||
|
||
<!-- GANTT TABLE -->
|
||
<div class="wrap">
|
||
<table id="gt">
|
||
<thead>
|
||
<tr>
|
||
<th class="tl" style="width:24px">#</th>
|
||
<th class="tl" style="width:72px">Fase</th>
|
||
<th class="tl" style="width:195px">Actividad</th>
|
||
<th class="tl" style="width:270px">Entregables principales</th>
|
||
<th style="width:46px">Días</th>
|
||
<th style="width:78px">Inicio</th>
|
||
<th style="width:78px">Fin</th>
|
||
<th style="width:90px">Estado</th>
|
||
<th>S1<span class="wd">14-20 Abr</span></th>
|
||
<th>S2<span class="wd">21-27 Abr</span></th>
|
||
<th>S3<span class="wd">28 Abr-4 May</span></th>
|
||
<th>S4<span class="wd">5-11 May</span></th>
|
||
<th>S5<span class="wd">12-18 May</span></th>
|
||
<th>S6<span class="wd">19-25 May</span></th>
|
||
<th>S7<span class="wd">26 May-1 Jun</span></th>
|
||
<th>S8<span class="wd">2-8 Jun</span></th>
|
||
<th>S9<span class="wd">9-15 Jun</span></th>
|
||
<th>S10<span class="wd">16-20 Jun</span></th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
|
||
<!-- ═══ BLOQUE 1: ERP BASE ═══ -->
|
||
<tr class="ph"><td colspan="18">⚙️ BLOQUE 1 — ADECUACIÓN ERP BASE (Semana 1 — COMPLETADO)</td></tr>
|
||
<tr>
|
||
<td class="cn">1</td>
|
||
<td><span class="pbadge">ERP</span></td>
|
||
<td class="tl"><b>Adecuar Software como ERP</b></td>
|
||
<td class="del">Estructura <b>core/ · modules/ · shared/</b> · Router centralizado · Sidebar dinámico · SYSTEM_MODULES en BD · 11 módulos migrados a nueva estructura</td>
|
||
<td class="cn">7</td>
|
||
<td>14 Abr</td>
|
||
<td>20 Abr</td>
|
||
<td><span class="badge b-done">✅ Completado</span></td>
|
||
<td class="g0"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
|
||
<!-- ═══ BLOQUE 2: BD TURNERO ═══ -->
|
||
<tr class="ph"><td colspan="18">🗄️ BLOQUE 2 — BASE DE DATOS DEL TURNERO — FASE 3.1 (Semana 2)</td></tr>
|
||
<tr>
|
||
<td class="cn">2</td>
|
||
<td><span class="pbadge" style="background:#0891b2">F 3.1</span></td>
|
||
<td class="tl"><b>Migración 003 — Tablas Turnero</b></td>
|
||
<td class="del"><b>exam_tipos · exam_tipo_consentimientos</b> · turnero_lugares · turnero_prioridades · turnero_sesiones · turnero_turnos · turnero_solicitudes · turnero_examen_items · turnero_consentimientos · ALTER lab_formularios</td>
|
||
<td class="cn">5</td>
|
||
<td>21 Abr</td>
|
||
<td>25 Abr</td>
|
||
<td><span class="badge b-next">🔵 Próximo</span></td>
|
||
<td class="ge">·</td><td class="g1"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">3</td>
|
||
<td><span class="pbadge" style="background:#0891b2">F 3.1</span></td>
|
||
<td class="tl"><b>Datos iniciales + module.php</b></td>
|
||
<td class="del">Prioridades A-F por defecto · Registro en <b>system_modules</b> · module.php descriptor · Asignación roles recepcionista / auxiliar</td>
|
||
<td class="cn">2</td>
|
||
<td>26 Abr</td>
|
||
<td>27 Abr</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="g1"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
|
||
<!-- ═══ BLOQUE 3: MOTOR DE COLA ═══ -->
|
||
<tr class="ph"><td colspan="18">⚡ BLOQUE 3 — MOTOR DE PRIORIDADES + APIs CORE — FASE 3.2 (Semana 3)</td></tr>
|
||
<tr>
|
||
<td class="cn">4</td>
|
||
<td><span class="pbadge" style="background:#0369a1">F 3.2</span></td>
|
||
<td class="tl"><b>APIs de turno y solicitud</b></td>
|
||
<td class="del"><b>create_turno.php</b> (sesión diaria + correlativo) · <b>create_solicitud.php</b> (exámenes + pago + lugar + consentimientos auto) · Actualización estado turno</td>
|
||
<td class="cn">4</td>
|
||
<td>28 Abr</td>
|
||
<td>01 May</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="g1"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">5</td>
|
||
<td><span class="pbadge" style="background:#0369a1">F 3.2</span></td>
|
||
<td class="tl"><b>Motor de cola + SSE</b></td>
|
||
<td class="del"><b>llamar_turno.php</b> (motor prioridad + FIFO) · <b>cambiar_estado.php</b> (validaciones bloqueo) · <b>get_cola.php</b> · <b>sse_turno.php</b> (Server-Sent Events)</td>
|
||
<td class="cn">3</td>
|
||
<td>02 May</td>
|
||
<td>04 May</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="g1"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
|
||
<!-- ═══ BLOQUE 4: PANTALLAS ═══ -->
|
||
<tr class="ph"><td colspan="18">📺 BLOQUE 4 — KIOSKO + PANTALLAS TV — FASE 3.3 (Semana 4)</td></tr>
|
||
<tr>
|
||
<td class="cn">6</td>
|
||
<td><span class="pbadge" style="background:#6d28d9">F 3.3</span></td>
|
||
<td class="tl"><b>Kiosko táctil</b></td>
|
||
<td class="del"><b>views/kiosko.php</b> fullscreen · Botones A-F (icono + descripción) · Campo nombre/celular (opcional) · Código generado (ej. "E-042") · Sin exposición de datos</td>
|
||
<td class="cn">3</td>
|
||
<td>05 May</td>
|
||
<td>07 May</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">7</td>
|
||
<td><span class="pbadge" style="background:#6d28d9">F 3.3</span></td>
|
||
<td class="tl"><b>Pantallas TV / Display</b></td>
|
||
<td class="del"><b>views/display.php</b> · ?display=recepcion (cola general) · ?display=lugar&lugar_id=X (cola del lugar) · SSE en tiempo real · Colores prioridad + animación</td>
|
||
<td class="cn">4</td>
|
||
<td>08 May</td>
|
||
<td>11 May</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
|
||
<!-- ═══ BLOQUE 5: RECEPCIÓN ═══ -->
|
||
<tr class="ph"><td colspan="18">🖥️ BLOQUE 5 — PUESTO DE RECEPCIÓN — FASE 3.4 (Semana 5)</td></tr>
|
||
<tr>
|
||
<td class="cn">8</td>
|
||
<td><span class="pbadge" style="background:#0f766e">F 3.4a</span></td>
|
||
<td class="tl"><b>Vista Recepción — Atención al paciente</b></td>
|
||
<td class="del"><b>views/recepcion.php</b> · Cola general con prioridad visual · Llamar siguiente · Buscador/creación paciente (reutiliza lab_pacientes) · Catálogo exam_tipos + selector</td>
|
||
<td class="cn">4</td>
|
||
<td>12 May</td>
|
||
<td>15 May</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">9</td>
|
||
<td><span class="pbadge" style="background:#0f766e">F 3.4b</span></td>
|
||
<td class="tl"><b>Solicitudes + Pago + Lugar destino</b></td>
|
||
<td class="del">Registro pago (monto + método) · Selector Lugar destino · Botón Crear Solicitud · <b>create_solicitud.php</b> · Cálculo auto consentimientos requeridos</td>
|
||
<td class="cn">3</td>
|
||
<td>16 May</td>
|
||
<td>18 May</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">10</td>
|
||
<td><span class="pbadge" style="background:#0f766e">F 3.4c</span></td>
|
||
<td class="tl"><b>Envío Consentimientos por WhatsApp</b></td>
|
||
<td class="del"><b>send_consentimiento.php</b> · Deduplicación de formularios · Tokens UUID únicos · WhatsAppService + plantilla Meta "consentimiento_turno" · Estados en tiempo real</td>
|
||
<td class="cn">7</td>
|
||
<td>19 May</td>
|
||
<td>25 May</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
|
||
<!-- ═══ BLOQUE 6: LUGAR / ESTACIÓN ═══ -->
|
||
<tr class="ph"><td colspan="18">🔬 BLOQUE 6 — PUESTO LUGAR / ESTACIÓN DE SERVICIO — FASE 3.5 (Semana 7)</td></tr>
|
||
<tr>
|
||
<td class="cn">11</td>
|
||
<td><span class="pbadge" style="background:#7e22ce">F 3.5</span></td>
|
||
<td class="tl"><b>Vista Lugar / Estación genérica</b></td>
|
||
<td class="del"><b>views/lugar.php</b> (?lugar_id=X) · Cola priorizada del lugar · Llamar siguiente · Ficha: datos + exámenes + estado consentimientos · Bloqueo si pendientes</td>
|
||
<td class="cn">4</td>
|
||
<td>26 May</td>
|
||
<td>29 May</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">12</td>
|
||
<td><span class="pbadge" style="background:#7e22ce">F 3.5</span></td>
|
||
<td class="tl"><b>Flujo de servicio: Iniciar / Finalizar</b></td>
|
||
<td class="del">Botón "Iniciar atención" (habilitado si consentimientos OK) · Botón "Finalizar" → estado finalizado · Botón "Ausente" / Regresar a cola · polling 5s</td>
|
||
<td class="cn">3</td>
|
||
<td>30 May</td>
|
||
<td>01 Jun</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
|
||
<!-- ═══ BLOQUE 7: FIRMA DIGITAL ═══ -->
|
||
<tr class="ph"><td colspan="18">✍️ BLOQUE 7 — FIRMA DIGITAL DE CONSENTIMIENTOS — FASE 3.6 (Semana 8)</td></tr>
|
||
<tr>
|
||
<td class="cn">13</td>
|
||
<td><span class="pbadge" style="background:#be185d">F 3.6</span></td>
|
||
<td class="tl"><b>Integración firma en flujo turnero</b></td>
|
||
<td class="del">Campo <b>tipo</b> en lab_formularios · ver_formulario_enviado.php detecta token de turno · Actualiza turnero_consentimientos · Registro evidencia: IP, UA, fecha, versión</td>
|
||
<td class="cn">4</td>
|
||
<td>02 Jun</td>
|
||
<td>05 Jun</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">14</td>
|
||
<td><span class="pbadge" style="background:#be185d">F 3.6</span></td>
|
||
<td class="tl"><b>"Firmar aquí" en tablet del puesto</b></td>
|
||
<td class="del">Botón "Firmar aquí" en lugar.php → modal/iframe con ver_formulario_enviado.php · Firma física en pantalla del auxiliar · Detección en tiempo real (polling 5s)</td>
|
||
<td class="cn">3</td>
|
||
<td>06 Jun</td>
|
||
<td>08 Jun</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g2"></td><td class="ge">·</td><td class="ge">·</td>
|
||
</tr>
|
||
|
||
<!-- ═══ BLOQUE 8: PANEL ADMIN ═══ -->
|
||
<tr class="ph"><td colspan="18">⚙️ BLOQUE 8 — PANEL ADMIN + CONFIGURACIÓN — FASE 3.7 (Semana 9)</td></tr>
|
||
<tr>
|
||
<td class="cn">15</td>
|
||
<td><span class="pbadge" style="background:#b45309">F 3.7</span></td>
|
||
<td class="tl"><b>Configuración: Lugares + Exámenes</b></td>
|
||
<td class="del">Tab Lugares: CRUD + URL TV automática · Tab Exámenes y Consentimientos: M:N (exam_tipos ↔ formularios) · Vista inversa por consentimiento</td>
|
||
<td class="cn">4</td>
|
||
<td>09 Jun</td>
|
||
<td>12 Jun</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g3"></td><td class="ge">·</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">16</td>
|
||
<td><span class="pbadge" style="background:#b45309">F 3.7</span></td>
|
||
<td class="tl"><b>Dashboard Admin + Prioridades + Sesión</b></td>
|
||
<td class="del">Dashboard: KPIs del día + tiempo promedio + exportar CSV · Tab Prioridades (CRUD) · Tab Sesiones (abrir/cerrar/historial) · Tab WhatsApp (plantilla Meta)</td>
|
||
<td class="cn">3</td>
|
||
<td>13 Jun</td>
|
||
<td>15 Jun</td>
|
||
<td><span class="badge b-pend">⬜ Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g3"></td><td class="ge">·</td>
|
||
</tr>
|
||
|
||
<!-- ═══ BLOQUE 9: QA + CAPACITACIÓN + GO-LIVE ═══ -->
|
||
<tr class="ph"><td colspan="18">🧪 BLOQUE 9 — QA · CAPACITACIÓN · GO-LIVE (Semana 10 · 16–20 Jun)</td></tr>
|
||
<tr>
|
||
<td class="cn">17</td>
|
||
<td><span class="pbadge" style="background:#b45309">QA</span></td>
|
||
<td class="tl"><b>Testing end-to-end y corrección de bugs</b></td>
|
||
<td class="del">Flujo completo paciente · Múltiples lugares simultáneos · SSE stress test · Consentimientos en tiempo real · Validación OWASP Top 10</td>
|
||
<td class="cn">2</td>
|
||
<td>16 Jun</td>
|
||
<td>17 Jun</td>
|
||
<td><span class="badge b-qa">🟡 Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g4"></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">18</td>
|
||
<td><span class="pbadge" style="background:#5b21b6">CAP</span></td>
|
||
<td class="tl"><b>Capacitación del equipo</b></td>
|
||
<td class="del">Manual recepcionista · Manual auxiliar/lugar · Manual administrador · Capacitación presencial o remota · Guías rápidas por rol</td>
|
||
<td class="cn">1</td>
|
||
<td>18 Jun</td>
|
||
<td>18 Jun</td>
|
||
<td><span class="badge b-cap">🟣 Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g5"></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="cn">19</td>
|
||
<td><span class="pbadge" style="background:#065f46">DEPLOY</span></td>
|
||
<td class="tl"><b>Go-Live y soporte post-lanzamiento</b></td>
|
||
<td class="del">Deploy en producción · Configuración inicial: lugares, exámenes, prioridades, plantillas Meta · Prueba en producción · Monitoreo · Ajustes finales</td>
|
||
<td class="cn">2</td>
|
||
<td>19 Jun</td>
|
||
<td>20 Jun</td>
|
||
<td><span class="badge b-dep">🟢 Pendiente</span></td>
|
||
<td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="ge">·</td><td class="g6"></td>
|
||
</tr>
|
||
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
|
||
<!-- NOTES -->
|
||
<div class="notes">
|
||
<h3>📌 Notas del Cronograma</h3>
|
||
<div class="notes-grid">
|
||
<div class="note-card nc1">
|
||
<b>🔄 Metodología incremental</b>
|
||
<p>Desarrollo iterativo. El sistema sigue funcionando en producción durante toda la implementación. Los módulos legacy (lab_*.php) permanecen activos hasta que su equivalente nuevo esté validado.</p>
|
||
</div>
|
||
<div class="note-card">
|
||
<b>🔗 Reutilización de componentes</b>
|
||
<p>Los consentimientos reutilizan el módulo de Formularios existente. El buscador de pacientes reutiliza lab_pacientes. WhatsApp reutiliza el servicio ya activo. La firma digital ya está implementada.</p>
|
||
</div>
|
||
<div class="note-card nc2">
|
||
<b>⚠️ Dependencias críticas</b>
|
||
<p>El Bloque 3 (API Core) debe completarse antes de iniciar las vistas (Bloques 4–7). La plantilla Meta "consentimiento_turno" debe aprobarse en WhatsApp Business Manager preferiblemente en la semana 3. La última semana (S10) es compacta: QA + capacitación + go-live en 5 días — cualquier retraso acumulado en semanas anteriores impacta directamente la fecha de lanzamiento.</p>
|
||
</div>
|
||
<div class="note-card nc3">
|
||
<b>📱 Compatibilidad móvil</b>
|
||
<p>Kiosko: táctil fullscreen (tablet Android/iPad). Display TV: cualquier pantalla con navegador. Puesto Recepción y Lugar: PC o tablet. Firma paciente: cualquier celular vía WhatsApp.</p>
|
||
</div>
|
||
<div class="note-card nc1">
|
||
<b>🛡️ Seguridad OWASP</b>
|
||
<p>Todas las APIs implementan: requireMethod() + verificar sesión + PDO preparado + sanitización de parámetros. Pantallas sin login (kiosko, TV) nunca exponen datos sensibles.</p>
|
||
</div>
|
||
<div class="note-card">
|
||
<b>📊 Soporte post-lanzamiento</b>
|
||
<p>30 días de soporte incluidos tras el go-live (20 Jun – 20 Jul 2026) para ajustes basados en uso real, reportes de KPIs, y optimizaciones de UX identificadas en producción.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="footer">
|
||
Sistema Turnero Inteligente — ERP Multi-Módulo · Laboratorio Clínico · 14 Abril – 20 Junio 2026 (67 días calendario) · GitHub Copilot
|
||
</div>
|
||
|
||
<script>
|
||
function exportExcel(){
|
||
const tbl = document.getElementById('gt');
|
||
const htm = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"><head><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>Cronograma Turnero</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>'+tbl.outerHTML+'</body></html>';
|
||
const blob = new Blob(['\ufeff'+htm],{type:'application/vnd.ms-excel;charset=utf-8'});
|
||
const url = URL.createObjectURL(blob);
|
||
const a = document.createElement('a');
|
||
a.href = url;
|
||
a.download = 'Cronograma_Turnero_60dias.xls';
|
||
document.body.appendChild(a);
|
||
a.click();
|
||
document.body.removeChild(a);
|
||
URL.revokeObjectURL(url);
|
||
}
|
||
</script>
|
||
</body>
|
||
</html>
|