Mike (@mikerb95)CodeByMike

97 requerimientos funcionales agrupados por módulo, con prioridad, estado real de implementación y su origen en el código. 93 de 97 ya están implementados en producción. Filtra por estado o prioridad, o busca por ID, título o ruta.

97
Total req. funcionales
93
Implementados
3
Parciales
1
Planeados
96% en producción
Estado
Prioridad

Sitio público

20/21
RF-001

Listado de proyectos

Implementado

El visitante puede ver los proyectos marcados como visibles, con stack, descripción y enlaces.

Prioridad altasrc/pages/index.astroProjectCard.astro
RF-002

Detalle de proyecto

Implementado

Página individual por proyecto con metadata estructurada (JSON-LD), breadcrumbs y pestaña de observabilidad si tiene monitor asociado.

Prioridad altasrc/pages/projects/[slug].astro
RF-003

Formulario de contacto

Implementado

El visitante puede enviar un mensaje que queda asociado a un cliente (si el email coincide) y visible en el CRM.

Prioridad altasrc/pages/api/contact.ts
RF-004

Página de estado del sistema

Implementado

Vista pública con uptime de 30 días, incidentes activos y latencia en tiempo real (EKG) por servicio monitoreado.

Prioridad altasrc/pages/statussrc/pages/api/status
RF-005

Vitrina de herramientas y notas

Implementado

Secciones públicas /tools y /notes con artículos técnicos y mocks de herramientas internas.

Prioridad mediasrc/pages/toolssrc/pages/notes
RF-006

Certificaciones y evolución académica

Implementado

Listado público de certificaciones vigentes/expiradas y línea de tiempo de hitos educativos.

Prioridad mediasrc/pages/certificationsEvolutionTimeline.astro
RF-007

SEO técnico

Implementado

JSON-LD, sitemap, RSS, notificación IndexNow y manifest de PWA en cada publicación.

Prioridad mediasrc/pages/rss.xmlscripts/indexnow
RF-008

Demo read-only del panel admin

Implementado

Versión pública sin credenciales del panel admin con datos ficticios, para que cualquiera recorra el producto sin cuenta.

Prioridad bajasrc/pages/demo.astrosrc/lib/demo.tsAsyncLocalStorage en src/db/index.ts
RF-009

Descarga de CV con verificación de dispositivo

Implementado

El visitante descarga el CV desde /contact mediante un token de un solo uso (ventana de 5 min) emitido tras capturar una huella de dispositivo.

Prioridad mediasrc/pages/api/cvcv_downloads
RF-010

Rutas de aprendizaje con progreso persistente

Implementado

Rutas educativas ("Linux Real" y otras) con labs cronometrados por nivel (Inicial/Intermedio/Avanzado); el visitante marca cada lab como completado y el progreso persiste entre visitas.

Prioridad bajasrc/lib/education-paths.tseducation_lab_progress
RF-011

Landing comercial de diseño web

Implementado

Página /paginas-web dirigida a negocios locales y emprendedores no técnicos: tres planes con precio visible, preguntas frecuentes y contacto por WhatsApp o formulario.

Prioridad mediasrc/pages/paginas-web.astro
RF-012

Agenda directa de reunión

Implementado

La página de contacto ofrece, además del formulario, un enlace para agendar una llamada sin intercambio previo de correos.

Prioridad bajasrc/pages/contact.astro
RF-013

Versión en inglés del sitio público

Implementado

Las páginas públicas de marca, las notas técnicas, el LAB y el contenido de proyectos existen bajo el prefijo /en con contenido traducido, selector de idioma que conserva la página actual y hreflang recíproco. El español sigue siendo el idioma canónico, sin prefijo.

Prioridad mediasrc/i18n/ (configroutingformatlocalizebilingualesen)src/pages/en/src/content/notes/{esen}/src/lib/notes.tssrc/middleware.ts
RF-014

Sugerencia de idioma no intrusiva

Implementado

Un visitante cuyo navegador declara preferencia por el inglés ve una invitación discreta a cambiar de idioma; la URL nunca cambia de contenido por sí sola.

Prioridad bajasrc/components/LanguageSuggestModal.astro
RF-015

Landing comercial de capacitación en IA

Implementado

Página /capacitacion-ia con los programas de formación publicados desde el panel (formato, nivel, duración, objetivos de aprendizaje, temario desplegable y nota de precio), el proceso de trabajo en cuatro pasos, preguntas frecuentes y contacto por WhatsApp o formulario.

Prioridad mediasrc/pages/capacitacion-ia.astrotraining_programs (isPublic)src/lib/capacitacion/repo.ts
RF-016

Banco público de recursos de capacitación

Implementado

Repositorio general de guías, prompts, plantillas, checklists y presentaciones en /capacitacion, con detalle por recurso en /capacitacion/[slug], contenido en markdown renderizado en el servidor y contador de lecturas.

Prioridad mediasrc/pages/capacitacion/src/lib/capacitacion/{repomarkdowntipos}.tstraining_resources
RF-017

Acceso por código de grupo al material restringido

Implementado

Los recursos marcados "con código" solo aparecen a quien canjeó en /capacitacion/acceso el código que se dicta al cerrar una capacitación; el canje entrega un pase firmado por 30 días, sin correo ni cuenta.

Prioridad mediasrc/lib/capacitacion/{accesspase}.tssrc/pages/api/capacitacion/acceso.tstraining_access_codesTRAINING_ACCESS_SECRET
RF-018

Evaluación pre/post de una capacitación

Planeado

El mismo cuestionario antes y después de la formación, entregado por enlace firmado por cohorte, con informe de delta por grupo y por tema.

Prioridad mediadocs/plan-capacitacion.md (Fase 2); reutilizaría training_access_codes como identificador de cohorte.
RF-019

Catálogo público de automatizaciones

Implementado

La página /automatizaciones publica lo que corre solo: los workflows de GitHub Actions con el resultado de su última corrida en main, las tareas programadas con horario, origen y qué se pierde si dejan de correr, y los automatismos que dispara el propio tráfico.

Prioridad mediasrc/pages/automatizaciones.astrosrc/data/automatizaciones.tscron_runs
RF-020

Analizador público de sitios (/lab/site-check)

Implementado

Cualquier visitante escribe un dominio y recibe doce diagnósticos en vivo contra ese sitio: alcanzabilidad, certificado TLS, redirección a HTTPS, cabeceras de seguridad, DNS, vencimiento del dominio por RDAP, robots.txt, sitemap.xml, meta SEO, peso y recursos de la página, Lighthouse vía PageSpeed Insights y una heurística de accesibilidad. Cada prueba llega por streaming en cuanto termina, con estado (pass/warn/fail/info), resumen y detalle.

Prioridad mediasrc/lib/diagnostics.ts (la bateríasin dependencias externas: fetch + node:tls + node:dns)src/pages/api/lab/site-check.ts (endpoint público)src/pages/lab/site-check/index.astro y su cascarón en src/pages/en/
RF-021

Laboratorio de fingerprinting con salas efímeras

Implementado

Demostración pública en /lab/fingerprint: se crea una sala con un enlace corto y su QR, cada dispositivo que entra aporta su huella (señales del recolector propio más el hash de FingerprintJS para contrastar precisión) y el tablero /lab/fingerprint/[room]/board las va mostrando en vivo, con los bits de entropía de cada una y el contador de revisitas que enseña lo que hace de esto una demostración y no una lámina: volver en incógnito o borrando cookies no estrena dispositivo, incrementa el contador del mismo.

Prioridad mediasrc/lib/fingerprint.ts (salas y registro)src/pages/api/lab/fp/src/pages/lab/fingerprint/ y su cascarón en src/pages/en/tablas fp_rooms y fp_devices

Autenticación y sesiones

4/4
RF-101

Login con GitHub OAuth

Implementado

El administrador inicia sesión con su cuenta de GitHub; solo los logins en la allowlist obtienen acceso.

Prioridad altaauth.config.tssrc/lib/auth.ts
RF-102

Protección de rutas /admin

Implementado

Todas las rutas /admin y /api/admin exigen sesión válida; sin sesión, redirige a login.

Prioridad altasrc/middleware.ts
RF-103

Gestión de dispositivos/sesiones

Implementado

El administrador ve las sesiones activas por dispositivo (IP, user-agent, última actividad) y puede revocarlas.

Prioridad mediasrc/pages/admin/sessions.astroadmin_sessions
RF-104

Cierre de sesión

Implementado

El administrador puede cerrar su sesión desde cualquier página del panel.

Prioridad mediasrc/pages/api/auth

CRM (proyectos, clientes, seguimiento)

9/9
RF-201

Gestión de proyectos

Implementado

Alta, edición y archivo de proyectos con estado, fechas, stack, cliente asociado y visibilidad pública.

Prioridad altasrc/pages/admin/projectsprojects
RF-202

Gestión de clientes

Implementado

Alta y edición de clientes con datos de contacto y notas internas.

Prioridad altasrc/pages/admin/clients.astroclients
RF-203

Bandeja de mensajes

Implementado

El administrador ve, marca como leídos y responde mensajes recibidos por el formulario público.

Prioridad altasrc/pages/admin/messages.astromessages
RF-204

Seguimiento comercial (interacciones)

Implementado

Registro de llamadas, reuniones, notas y tareas pendientes por cliente/proyecto, con recordatorios (nextAction/dueDate).

Prioridad altasrc/pages/admin/seguimiento.astrointeractions
RF-205

Briefings de cliente

Implementado

Documento de alcance por proyecto con objetivo, presupuesto estimado/acordado, horas e ítems (requerimiento/entregable/exclusión).

Prioridad mediasrc/pages/admin/briefingsbriefingsbriefing_items
RF-206

Contactos por proyecto

Implementado

Registro de contactos (cliente, PM, dev, QA, diseño) asociados a un proyecto.

Prioridad bajaproject_contacts
RF-207

Decisiones de arquitectura (ADRs)

Implementado

Registro de decisiones técnicas por proyecto con contexto, decisión, justificación y alternativas consideradas; opcionalmente públicas.

Prioridad mediaproject_adrs
RF-208

Presentaciones proyectadas con público en sincronía

Implementado

Biblioteca de decks HTML autónomos y sesiones de proyección: pantalla principal, control remoto desde el celular y vista del público en sincronía por PIN corto servido en la raíz del dominio.

Prioridad mediasrc/lib/present/*src/pages/admin/presentacionessrc/pages/present/[sessionId]src/pages/remote/[sessionId]src/pages/[pin]decks/deck_slides
RF-209

Gestión del módulo de capacitación

Implementado

Panel único en /admin/capacitacion para el banco de recursos (alta, edición con previsualización del markdown y borrado), el catálogo de programas y los códigos de grupo (generación, revocación y reactivación), con cifras de material publicado, borradores, lecturas y canjes.

Prioridad mediasrc/pages/admin/capacitacion/src/pages/api/admin/capacitacion/training_programstraining_resourcestraining_access_codes

Finanzas

11/11
RF-301

Registro de ingresos

Implementado

Alta de cobros por proyecto/cliente con estado (cobrado/pendiente/proyectado) y fecha de vencimiento.

Prioridad altasrc/pages/admin/finances.astrofinances
RF-302

Costos y P&L por proyecto

Implementado

Registro de costos de servicios (hosting, dominio, DB, etc.) con quién paga y cuánto se le factura al cliente, para calcular la rentabilidad real.

Prioridad altasrc/pages/admin/costs.astroproject_servicessrc/lib/pnl.ts
RF-303

Bóveda cifrada de credenciales

Implementado

Secrets de servicios (API keys, tokens) cifrados con AES-256-GCM en reposo, revelados on-demand vía fetch autenticado.

Prioridad altasrc/lib/crypto.tsproject_services.secrets
RF-304

Variables de entorno por proyecto

Implementado

Registro cifrado de variables de entorno por ambiente (producción/staging/dev) para cada proyecto gestionado.

Prioridad mediaproject_env_vars
RF-305

Alertas de vencimiento de dominios

Implementado

Descubrimiento automático de fecha de expiración vía RDAP y alerta por email/push antes del vencimiento.

Prioridad mediasrc/pages/admin/domains.astrosrc/lib/domains.ts
RF-306

Cobros de campo por WhatsApp

Implementado

Desde el celular se configura monto y teléfono, se previsualiza el mensaje y se envía por WhatsApp; el cliente paga en la pasarela existente a través de un link corto público /c/[code].

Prioridad altasrc/pages/cobrar.astrosrc/pages/c/[code].astrosrc/lib/cobros*.ts
RF-307

Histórico de pagos del cliente

Implementado

El cliente consulta sus pagos en /mis-pagos mediante un link firmado incluido en el mensaje de WhatsApp; la consulta manual por número muestra datos enmascarados.

Prioridad mediasrc/pages/mis-pagos.astrosrc/lib/mis-pagos.ts
RF-308

Emisión de cuentas de cobro

Implementado

Desde /admin/cuentas-cobro se crean, emiten, anulan y descargan en PDF cuentas de cobro de persona natural no responsable de IVA, con serie propia CC-AAAA-NNN, valor en letras, leyendas normativas y datos bancarios.

Prioridad altasrc/pages/admin/cuentas-cobro/src/pages/api/admin/cuentas-cobro/src/lib/cuentas-cobro.tssrc/lib/cuentas-cobro-db.tssrc/lib/cuenta-cobro-pdf.tsmigración 0030
RF-311

Alta de deudor sin salir del flujo de creación

Implementado

El formulario de una cuenta de cobro nueva permite crear el deudor ahí mismo, y avisa de forma accionable cuando la ficha elegida no tiene NIT: deja crear el borrador, no deja emitirlo, y enlaza al sitio donde se completa.

Prioridad mediasrc/pages/admin/cuentas-cobro/index.astro/api/admin/clients
RF-309

Cálculo parametrizable de retenciones

Implementado

La cuenta de cobro calcula retención en la fuente (honorarios y servicios, según sea declarante o no) y ReteICA sobre el subtotal, aplicando la base mínima en UVT, y muestra el neto estimado sin alterar el bruto cobrado.

Prioridad altasrc/lib/cuentas-cobro.ts (computeRetentionsparseCuentaCobroConfig)/admin/settingsapp_settings
RF-310

Semáforo del tope de responsabilidad de IVA

Implementado

El panel suma lo emitido en el año en cuentas de cobro y lo compara contra las 3.500 UVT del art. 437 par. 3 ET, con aviso al 70 %, alerta al 90 % y advertencia explícita al superarlo.

Prioridad mediasrc/lib/cuentas-cobro.ts (topeIva)src/lib/cuentas-cobro-db.ts (topeIvaDelAnio)/admin/cuentas-cobro

Portal de clientes

10/10
RF-801

Acceso autenticado del cliente

Implementado

El cliente entra a /portal con email y contraseña, con recuperación por email y aceptación de invitación; el sistema de sesiones es propio y no comparte nada con el del administrador.

Prioridad altasrc/lib/portal/*portal_sessionssrc/pages/portal
RF-802

Aislamiento entre clientes (multi-tenant)

Implementado

Ninguna consulta del portal acepta el identificador de cliente desde el request: siempre sale de la sesión y viaja en el WHERE aunque ya haya un id de proyecto.

Prioridad altasrc/lib/portal/projects.tsrequirePortalSession()
RF-803

Facturas y descarga en PDF

Implementado

El cliente ve sus facturas con estado y vencimiento, y descarga cada una en PDF.

Prioridad altasrc/pages/portal/facturassrc/pages/api/portal/facturas
RF-804

Mensajería con el cliente

Implementado

Hilos de conversación por proyecto entre el cliente y el administrador, con estado de leído.

Prioridad mediasrc/pages/portal/mensajessrc/pages/admin/portal
RF-805

Documentos y avance del proyecto

Implementado

El cliente ve los documentos compartidos y el avance por hitos de su proyecto.

Prioridad mediasrc/pages/portal/documentossrc/pages/portal/index.astro
RF-806

Impersonación de soporte read-only

Implementado

El administrador puede ver el portal como un cliente concreto para dar soporte, sin poder escribir nada en su nombre.

Prioridad mediasrc/middleware.tssrc/pages/admin/portal
RF-807

Actualización en vivo del portal

Implementado

La información del portal (notificaciones, mensajes, facturas, salud del proyecto) se refresca sola mientras la pestaña está visible, sin recargar.

Prioridad mediasrc/lib/portal/live.ts · src/pages/api/portal/live.ts · script de PortalLayout.astro
RF-808

Feed de actividad del proyecto

Implementado

El cliente ve una línea de tiempo de lo que ha pasado en sus proyectos (hitos, facturas, mensajes), con filtro por tipo y paginación.

Prioridad mediasrc/lib/portal/activity.ts · src/components/portal/ActivityFeed.astro · src/pages/portal/actividad.astro · src/pages/admin/portal/actividad.astro
RF-810

Portal de demostración

Implementado

Un tenant marcado como demo permite recorrer el portal sin ser cliente, con re-siembra automática por cron.

Prioridad bajasrc/pages/api/portal/demo.tssrc/pages/api/cron/portal-demo-reseed.ts
RF-809

Vigilancia del propio portal

Implementado

Endpoint público de salud que ejerce la cadena real de dependencias del portal, sondeado por el motor de uptime propio para que el portal aparezca en /status como cualquier otro servicio.

Prioridad mediasrc/lib/portal/health.tssrc/pages/api/portal/health.tsscripts/register-portal-monitor.mjs

Observabilidad

7/7
RF-401

Monitoreo de disponibilidad

Implementado

Checks HTTP periódicos (cron externo) por servicio, con umbral de latencia degradada y validación de contenido esperado.

Prioridad altamonitorssrc/pages/api/cron
RF-402

Historial de incidentes

Implementado

Agrupación automática de caídas consecutivas (primer fallo → primer éxito) con causa y duración.

Prioridad altamonitor_incidents
RF-403

SLO / error budget

Implementado

Cálculo de SLI/SLO configurable (objetivo % y ventana en días) por monitor, con presupuesto de error restante.

Prioridad mediasrc/pages/admin/lab/slo.astrosrc/lib/slo.ts
RF-404

Notificaciones push

Implementado

Alertas push (ntfy.sh) ante caídas de monitores, vencimientos de dominio y anomalías de seguridad.

Prioridad mediasrc/lib/notify.ts
RF-405

Web Vitals (RUM)

Implementado

Captura de Core Web Vitals de visitantes reales, sin PII, para calcular p75 públicos.

Prioridad bajaweb_vitalssrc/lib/vitals.ts
RF-406

Certificados TLS

Implementado

Verificación periódica de expiración de certificado TLS por monitor con badge de alerta.

Prioridad bajamonitors.sslExpiresAt
RF-407

Bitácora de ejecuciones de crons

Implementado

Cada cron que pasa la autenticación deja una fila con el job, si salió bien, cuánto tardó y un resumen corto del resultado; /automatizaciones muestra la última corrida de cada uno.

Prioridad mediasrc/lib/cron-runs.ts (conRegistroregistrarCronRun)cron_runssrc/pages/api/cron/*

LAB (SENA)

7/8
RF-501

Pipeline CI/CD con rollback

Implementado

Registro de runs de CI (GitHub Actions) con tests, cobertura, health check post-deploy y rollback automático si falla.

Prioridad altaci_runssrc/pages/admin/lab/pipeline.astro
RF-502

Pasarela de pagos con idempotencia

Implementado

Cobros con clave de idempotencia única, máquina de estados sin retrocesos y bitácora de eventos de webhook (incl. duplicados y fuera de orden).

Prioridad altapaymentspayment_eventssrc/lib/payments.ts
RF-503

Chaos engineering

Implementado

Inyección de fallos reales (500, 503, latencia) por ruta con TTL obligatorio y kill-switch de pánico; /admin y /api/auth excluidos por código.

Prioridad mediachaos_flagssrc/lib/chaos.ts
RF-504

Historial de experimentos

Implementado

Bitácora de experimentos del LAB con resultado esperado vs. real, como evidencia para sustentación.

Prioridad bajalab_experiments
RF-505

Pruebas de carga y estrés (k6)

Parcial

Escenarios de carga y estrés contra endpoints críticos: escalera de niveles de concurrencia, punto de quiebre, recuperación tras la saturación y consumo de CPU/heap del proceso.

Prioridad medialab/k6/carga.js (ítem 5 del checklist)lab/k6/estres.js (ítem 6)lab/k6/lib/perfil.jssrc/pages/api/lab/proceso.ts
RF-506

SAST y accesibilidad automatizadas

Implementado

Análisis estático de seguridad (npm audit + CodeQL) y auditoría de accesibilidad (axe-core sobre Playwright) que ingieren sus hallazgos al panel del LAB.

Prioridad mediasecurity_findingssrc/lib/lab/findings.ts.github/workflows/security.yml y a11y.yml
RF-507

Mutation testing y pruebas de contrato

Implementado

Medición de la calidad real de la suite mediante mutantes (Stryker) y congelado de la forma de las respuestas de API con esquemas Zod.

Prioridad bajastryker.config.jsonsrc/lib/lab/mutation.tssrc/lib/contracts.ts
RF-508

DAST con OWASP ZAP

Implementado

Escaneo dinámico baseline contra el deployment de preview, con el reporte JSON ingerido como hallazgos del LAB junto a los de SAST.

Prioridad media.github/workflows/dast.ymlparseZapReport en src/lib/lab/findings.ts

Seguridad (micro-SIEM)

7/7
RF-601

Sensor de requests hostiles

Implementado

Clasificación de cada request por firmas conocidas (OWASP) de forma síncrona y no bloqueante en el middleware.

Prioridad altasrc/lib/security/sensor.tsclassify.ts
RF-602

Blocklist de IPs

Implementado

Bloqueo (manual o automático) de IPs con TTL obligatorio y respuesta 403 seca; sin bloqueos eternos.

Prioridad altablocked_ipssrc/lib/security/blocklist.ts
RF-603

Rate limiting durable

Implementado

Límite de tasa por clave respaldado en base de datos, que sobrevive a redeploys (reemplaza la implementación en memoria).

Prioridad altarate_limit_bucketssrc/lib/security/ratelimit-durable.ts
RF-604

Agregación y rollups

Implementado

Agregados horarios/diarios de eventos de seguridad por categoría para tendencias y detección de anomalías.

Prioridad mediasecurity_rollups
RF-605

Detección de anomalías

Implementado

Detector estadístico (z-score sobre baseline de 30 días) de picos, patrones nuevos, anomalías geográficas y ráfagas de error.

Prioridad mediasecurity_anomaliessrc/lib/security/anomaly.ts
RF-606

Panel de seguridad consolidado

Implementado

Vista en /admin con eventos, anomalías y acciones de respuesta (bloquear IP, marcar revisado).

Prioridad mediasrc/pages/admin/security.astrosrc/pages/api/admin/security.ts
RF-607

Bloqueo escalado con enforcement inline de honeypots

Implementado

El TTL de bloqueo escala con la reincidencia (1h → 24h → 7d) leyendo el contador hits de blocked_ips; un hit a un honeypot bloquea la IP inline en el middleware, sin depender solo del cron de auto-block.

Prioridad altasrc/lib/security/blocklist.ts (blockIpEscalated)src/middleware.ts

Sistema

18/20
RF-701

Backups automáticos

Implementado

Snapshot periódico de la base de datos subido a Vercel Blob vía cron, más creación manual desde el panel.

Prioridad altasrc/lib/backup.tssrc/pages/api/cron/backup.ts (automático)src/pages/api/admin/backup.ts y src/pages/admin/backup.astro (manual y listado)
RF-702

Ajustes de la aplicación

Implementado

Configuración clave-valor (tasas de cambio, moneda base) editable desde el panel.

Prioridad bajaapp_settingssrc/pages/admin/settings.astro
RF-703

Documentación de ingeniería

Implementado

Requerimientos, casos de uso, historias, diagramas UML y BPMN, kanban, guía de testing, verificación y validación, y estado del pipeline en vivo, navegables desde /docs.

Prioridad mediasrc/pages/docssrc/data/documentacion.tstesting.tsvyv.tsiteraciones-portfolio.ts
RF-705

Estado del pipeline en vivo

Implementado

Página pública que muestra el estado real de la última corrida del pipeline etapa por etapa (push, tests, e2e, build, deploy, verificación), en vez de un diagrama estático.

Prioridad bajasrc/pages/docs/pipeline-en-vivo.astrosrc/lib/lab/pipeline-live.tssrc/pages/api/lab/pipeline-live.ts
RF-706

Diagramas BPMN de los procesos de negocio

Implementado

Los cuatro procesos de negocio (cobro de campo, acceso al portal de clientes, respuesta de seguridad y ciclo de monitoreo) modelados en notación BPMN con carriles por participante, compuertas, eventos y temporizadores, más la explicación de los cinco tipos de compuerta y la tabla de tiempos de cada proceso, navegables desde /docs.

Prioridad mediasrc/pages/docs/diagrama-bpmn.astrosrc/pages/docs/bpmn-imprimible.astrosrc/data/bpmn.tssrc/lib/bpmn-layout.tssrc/components/Bpmn{DiagramShape}.astroscripts/export-bpmn.mjs
RF-707

Diagramas UML de despliegue, comunicación y actividades

Implementado

La vista de red del sistema como diagrama de despliegue (nodos «device»/«executionEnvironment», artefactos y caminos de comunicación con protocolo), las cuatro interacciones principales como diagramas de comunicación con numeración decimal, y tres flujos de control internos como diagramas de actividades con particiones, bifurcación concurrente y bucle de reintento. Incluye la corrección de /docs/diagrama-componentes, que era un flowchart de despliegue sin ninguna interfaz declarada, a un diagrama de componentes UML real con conectores de ensamblaje.

Prioridad mediasrc/pages/docs/diagrama-{desplieguecomunicacionactividadescomponentes}.astrosrc/data/{desplieguecomunicacionactividadescomponentes}.tssrc/lib/uml-{deploymentcommunicationactivitycomponent}.tssrc/components/uml/*.astro
RF-708

Tracker de especialización técnica

Implementado

Panel privado que mide la práctica real sobre un stack en aprendizaje (el primero, .NET/C#): registro de sesiones con minutos, tema y bitácora; racha de días consecutivos; meta semanal de horas; temario con hitos por área; logros derivados; y mapa de calor de los últimos seis meses. Multi-track: añadir otra tecnología es una fila, no una migración.

Prioridad bajasrc/pages/admin/aprendizaje.astrosrc/lib/skills.tssrc/data/track-dotnet.tsskill_tracks/skill_sessions/skill_milestonessrc/pages/api/admin/skills/*
RF-704

Historial de descargas del CV

Implementado

Panel admin con el historial completo de descargas del CV (IP, user-agent, referer) y detección de revisitas del mismo dispositivo.

Prioridad bajasrc/pages/admin/lab/cv-downloads.astrocv_downloads
RF-709

Informe de ejecución de pruebas

Implementado

La evidencia medida de la última corrida completa de la suite, publicada en /docs/ejecucion-pruebas: total de pruebas y fallos, duración por nivel (unitario contra integración), distribución logarítmica de tiempos, las 12 pruebas más lentas y la tabla de los archivos con su tiempo individual. Un generador convierte el reporte JUnit de Vitest en una instantánea versionada y, en paralelo, en un informe HTML autocontenido para entregar o proyectar.

Prioridad mediascripts/report-tests.mjssrc/data/ejecucion-pruebas.{jsonts}src/pages/docs/ejecucion-pruebas.astro; consumido también por METRICAS_REFERENCIANIVELES y PIRAMIDE en src/data/testing.ts
RF-710

Referencia de reportes de pruebas

Implementado

Página /docs/reportes-pruebas que documenta qué log emite el runner y en qué formato: los 7 reporters de Vitest (default, verbose, dot, tap-flat, junit, json, html) con la salida real de cada uno, cuáles escriben archivo y cuáles solo consola, la anatomía de un fallo en consola y en XML, y la tabla de equivalencias con el instrumental de Java (Surefire, JaCoCo, PIT).

Prioridad bajasrc/data/reportes-pruebas.tssrc/pages/docs/reportes-pruebas.astro
RF-711

Diagrama de red por zonas de confianza

Implementado

Página /docs/diagrama-red con la topología de producción expresada como zonas de confianza (Internet, perímetro, cómputo, datos gestionados, terceros salientes), los hosts de cada una y los flujos dirigidos entre ellas, cada cruce de frontera con su protocolo, su puerto y la tabla de controles que atraviesa.

Prioridad mediasrc/pages/docs/diagrama-red.astrosrc/data/red.tssrc/lib/red-layout.tssrc/components/uml/NetworkDiagram.astro
RF-712

Control remoto de la sustentación desde el celular

Implementado

Pantalla de mando en /sustentacion/control: avanza y retrocede la presentación desde el teléfono, muestra las notas de narración del beat en curso, el cronómetro contra la duración estimada y un selector para saltar a cualquiera de los doce beats.

Prioridad mediasrc/pages/sustentacion/control.astrosrc/lib/sustentacion/mando.tssrc/lib/sustentacion/control.tssrc/lib/sustentacion/obedecer.tssrc/pages/api/sustentacion/comando.tssrc/pages/api/sustentacion/estado.tssrc/pages/api/sustentacion/guion.ts
RF-713

Escenario proyectado de la sustentación

Implementado

La pantalla que ve el jurado en /sustentacion: grafo de la arquitectura dibujado en canvas 2D que se revela por capas, HUD de la corrida de estrés con la curva real, matriz de trazabilidad a la que vuelan los nodos, demo del portal en vivo dentro de un iframe, pipeline de CI/CD y checklist de entregables. Vestíbulo con el PIN y el QR del público antes de empezar.

Prioridad mediasrc/pages/sustentacion.astrosrc/lib/sustentacion/escena.tssrc/data/sustentacion-escena.tssrc/data/sustentacion-datos.jsonsrc/pages/admin/sustentacion.astro
RF-714

Mando del mazo proyectado desde el celular

Implementado

La pantalla /presentacion monta el bundle exportado en un iframe y /remote lo gobierna desde el teléfono: siguiente, anterior, salto directo y la posición real del mazo, con el estado compartido por /api/presentacion.

Prioridad mediasrc/pages/presentacion.astrosrc/pages/remote/index.astrosrc/pages/api/presentacion.tssrc/lib/presentacion/mapa.tssrc/lib/presentacion/estado.ts
RF-715

Desplazamiento del iframe de un beat desde el mando

Implementado

Los tres beats del mazo que proyectan una página viva dentro de un iframe (la demo del portal, /status, /engineering) se pueden recorrer desde el teléfono: dos botones ↑/↓ que ocupan el sitio de la rejilla de saltos mientras la diapositiva tenga algo que desplazar, con repetición al mantener pulsado y una barra de progreso de la página proyectada.

Prioridad bajasrc/lib/presentacion/desplazamiento.tssrc/pages/api/presentacion.tssrc/pages/presentacion.astrosrc/pages/remote/index.astro
RF-716

Planteamiento, justificación y objetivos del proyecto

Implementado

Página /docs/planteamiento con el planteamiento del problema (síntomas observados con su evidencia y su consecuencia, causas que los explican y delimitación en las tres dimensiones), la justificación por ejes y los objetivos general y específicos, cada objetivo con su indicador, su meta, su forma de verificación y los requisitos que lo realizan.

Prioridad mediasrc/data/planteamiento.tssrc/pages/docs/planteamiento.astrodocs/planteamiento-del-problema.md
RF-717

Conducción de la presentación con lienzo tocable (/present-admin)

Parcial

Ventana del portátil del ponente que separa los dos papeles que /presentacion hacía a la vez: conduce el mazo (descubre su forma, publica la posición real y obedece el destino que pide el celular) y además deja TOCAR la página viva que enmarca la diapositiva, que es lo que permite entrar a la demo del portal y navegar el panel delante del jurado. Suma teclado propio (flechas, espacio, Home/End y dígitos para salto directo), rueda del ratón que publica el desplazamiento donde lo publica el pulgar, espejo de la URL del iframe para que la sala vea la página que se está tocando, espejo del PUNTERO (el elemento que el ponente señala con el ratón dentro de esa página se enciende igual en cada equipo de la sala, con su hover, el panel de detalle de las cards de /engineering y una flecha dibujada encima), espejo del ECO (lo que el ponente ESCRIBE en la página viva y el resultado que le contesta el servidor cuando no pasa por una navegación, que es el caso del diagnóstico público de un sitio en /lab/site-check), y una isla flotante con el cronómetro de la sustentación.

Prioridad altasrc/pages/present-admin.astrosrc/pages/presentacion.astro (el seguidorque aplica espejo y puntero)src/lib/presentacion/lienzo.tssrc/lib/presentacion/espejo.tssrc/lib/presentacion/puntero.tssrc/lib/presentacion/eco.tssrc/pages/lab/site-check/index.astro (implementa el contrato ESPEJO_VIVO)src/components/CardPopover.astrosrc/lib/presentacion/cronometro.tssrc/lib/presentacion/desplazamiento.tssrc/pages/api/presentacion.ts
RF-719

Panel retráctil del ponente en /present-admin

Implementado

Consola retráctil en la ventana que conduce la presentación, con tres estados que se ciclan con la tecla P y se recuerdan entre recargas: oculto (el mazo a pantalla completa), barra (una franja con reloj, desvío, posición, título de la diapositiva y estado del enlace) y consola (guion completo con la nota de la diapositiva siguiente, ritmo contra las duraciones estimadas del guion, rejilla de saltos sobre la forma real del mazo, URL de la página viva con atajos para volver a la demo del portal, /status o /engineering, botones de desplazamiento y tres acciones de rescate). Sustituye la necesidad de mirar el celular mientras se conduce desde el portátil: hasta aquí el guion y la rejilla solo existían en /remote.

Prioridad mediasrc/lib/presentacion/panel.ts (modosíndice del mazoritmosalud del enlace y atajos)src/pages/present-admin.astro (la vista y el cableado)src/lib/presentacion/guion.ts
RF-720

Salida automática a la página de cierre al terminar el mazo

Implementado

Al llegar a la última diapositiva del mazo, la ventana que conduce la presentación (/present-admin) espera cinco segundos y navega sola a /presentacion-end, la página que se comparte cuando la sustentación ya terminó. Como el mazo acaba en la lámina de preguntas, lo que queda en pantalla durante el turno de preguntas es el cierre con los enlaces a la documentación, las cifras del kanban y el contacto. La cuenta se cancela con cualquier movimiento que salga de la última diapositiva y avisa antes de irse.

Prioridad bajasrc/lib/presentacion/cierre.ts (las reglas)src/pages/present-admin.astro (el temporizador y el aviso)src/lib/presentacion/panel.ts (el estado cerrando de la salud del enlace)
RF-718

Página de cierre para compartir tras la sustentación

Parcial

La página pública /presentacion-end reúne, para mandarla DESPUÉS de la sustentación en vivo, los enlaces a la documentación del proyecto, un corte de en-números sacado en vivo del kanban y un cierre con contacto. Traducida a /en, indexable y con la navegación normal del sitio.

Prioridad bajasrc/pages/presentacion-end.astrosrc/pages/en/presentacion-end.astrosrc/i18n/es.tssrc/i18n/en.ts (presentacionEnd)src/i18n/routing.ts (TRANSLATED_ROUTES)src/lib/present/reserved.ts