<?xml version='1.0' encoding='utf-8'?>
<mxfile host="app.diagrams.net" modified="2026-11-08T12:00:00.000Z" agent="Codex" version="24.7.17" type="device"><diagram id="reto3" name="Arquitectura objetivo"><mxGraphModel dx="1200" dy="1000" grid="1" gridSize="10" page="1" pageScale="1" pageWidth="1300" pageHeight="1080" math="0" shadow="0"><root><mxCell id="0" /><mxCell id="1" parent="0" /><mxCell id="internal" value="FUENTES INTERNAS&#10;SIS · Admisiones · Pagos · Bienestar&#10;Moodle histórico" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#ffffff;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="190" y="110" width="340" height="90" as="geometry" /></mxCell><mxCell id="external" value="EXTERNA · SPADIES&#10;Referente agregado · revisión mensual" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#ffffff;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="550" y="110" width="210" height="90" as="geometry" /></mxCell><mxCell id="moodle" value="MOODLE · EVENTOS&#10;Accesos y actividad · por evento" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#ffffff;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="885" y="110" width="290" height="90" as="geometry" /></mxCell><mxCell id="batch" value="INGESTA POR LOTES&#10;S3 + manifest.json → Lambda&#10;Diaria; revisión externa mensual" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#eaf1ed;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="230" y="250" width="450" height="78" as="geometry" /></mxCell><mxCell id="stream" value="INGESTA POR EVENTOS&#10;API Gateway → SQS" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#eaf1ed;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="885" y="250" width="290" height="78" as="geometry" /></mxCell><mxCell id="raw" value="LAKE PRIVADO · raw/&#10;Originales por lote; eventos históricos cada 5 min" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#ffffff;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="230" y="375" width="450" height="78" as="geometry" /></mxCell><mxCell id="etl" value="ETL PYTHON · LAMBDA&#10;Cruce Bienestar por nombre y programa en raw/&#10;Retirar identidad ANTES DE clean/ y curated/" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#fbf2e5;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="230" y="500" width="450" height="88" as="geometry" /></mxCell><mxCell id="clean" value="LAKE · clean/&#10;Cohorte seudonimizada" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#eaf1ed;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="230" y="632" width="210" height="85" as="geometry" /></mxCell><mxCell id="curated" value="LAKE · curated/&#10;DW DuckDB · hechos, dimensiones, agregados" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#eaf1ed;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="470" y="632" width="210" height="85" as="geometry" /></mxCell><mxCell id="semantic" value="CAPA SEMÁNTICA · SQL EN DUCKDB&#10;Consultas y cálculos; referencia en Power BI" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#ffffff;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="230" y="770" width="450" height="75" as="geometry" /></mxCell><mxCell id="dashboard" value="TABLERO · S3 WEB + CLOUDFRONT&#10;Tablero agregado · actualización diaria&#10;Rectoría, analistas y público" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#eaf1ed;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="230" y="880" width="450" height="90" as="geometry" /></mxCell><mxCell id="alert" value="LAMBDA + DYNAMODB&#10;Evaluar alerta · tiempo previsto &lt; 5 min&#10;Deduplicar eventos" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#fbf2e5;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="885" y="500" width="290" height="88" as="geometry" /></mxCell><mxCell id="sns" value="SNS · CANAL PRIVADO&#10;Enviar ID de caso, no datos sensibles&#10;Solo ante cambio de estado" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#ffffff;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="885" y="632" width="290" height="85" as="geometry" /></mxCell><mxCell id="advisor" value="ORIENTADORES AUTORIZADOS&#10;Caso privado autenticado por rol" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#eaf1ed;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="885" y="780" width="290" height="90" as="geometry" /></mxCell><mxCell id="privacy" value="IDENTIDAD RESTRINGIDA&#10;Enlace identificador ↔ caso bajo acceso privado" style="rounded=1;whiteSpace=wrap;html=0;fillColor=#fbf2e5;strokeColor=#9bb6a9;fontFamily=Arial;fontSize=15;fontColor=#243633;align=left;spacingLeft=16;spacingRight=10;verticalAlign=middle;" vertex="1" parent="1"><mxGeometry x="885" y="900" width="290" height="70" as="geometry" /></mxCell><mxCell id="e1" value="diaria" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="internal" target="batch"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e2" value="mensual" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;dashed=1;dashPattern=8 5;" edge="1" parent="1" source="external" target="batch"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e3" value="por evento" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="moodle" target="stream"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e4" value="manifest.json" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="batch" target="raw"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e5" value="histórico 5 min" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;dashed=1;dashPattern=8 5;" edge="1" parent="1" source="stream" target="raw"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e6" value="diaria" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="raw" target="etl"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e7" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="etl" target="clean"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="clean" target="curated"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e9" value="diaria" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="curated" target="semantic"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e10" value="agregados" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="semantic" target="dashboard"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e11" value="por evento" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="stream" target="alert"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e12" value="cambio de estado" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="alert" target="sns"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e13" value="&lt; 5 min objetivo" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;" edge="1" parent="1" source="sns" target="advisor"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e14" value="acceso restringido" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=0;endArrow=block;endFill=1;strokeWidth=2;strokeColor=#55776d;fontColor=#52645e;fontSize=12;dashed=1;dashPattern=8 5;" edge="1" parent="1" source="privacy" target="advisor"><mxGeometry relative="1" as="geometry" /></mxCell></root></mxGraphModel></diagram></mxfile>