| 1 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 720" width="1280" height="720" |
| 2 | font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif" |
| 3 | font-size="12"> |
| 4 | <!-- |
| 5 | Data/Process Pipeline Chart Template |
| 6 | Purpose: Multi-stage sequential pipeline with structured descriptions and outputs |
| 7 | Use cases: ETL pipelines, CI/CD flows, approval workflows |
| 8 | Supports: 5 stages (optimized for data processing flow) |
| 9 | --> |
| 10 | <!-- Background --> |
| 11 | <rect x="0" y="0" width="1280" height="720" fill="#FFFFFF"/> |
| 12 | <!-- ==================== Title Area ==================== --> |
| 13 | <g id="header" data-pptx-bounds="30 30 1220 94"> |
| 14 | <rect x="30" y="30" width="8" height="32" rx="4" fill="#334155"/> |
| 15 | <text x="52" y="55" font-size="30" font-weight="800" fill="#0F172A">End-to-End Data Pipeline Architecture</text> |
| 16 | <!-- Subtitle Area --> |
| 17 | <rect x="30" y="78" width="1220" height="46" rx="8" fill="#F8FAFC"/> |
| 18 | <text x="640" y="98" text-anchor="middle" font-size="13" font-weight="800" fill="#1E293B" letter-spacing="0.5"> |
| 19 | FIVE-STAGE PIPELINE: FROM RAW DATA TO BUSINESS VALUE · EACH STAGE OUTPUT DRIVES THE NEXT |
| 20 | </text> |
| 21 | <text x="640" y="116" text-anchor="middle" font-weight="600" fill="#64748B"> |
| 22 | Stage Layout: Step ID + Phase Name + Role + Key Steps + Deliverable |
| 23 | </text> |
| 24 | </g> |
| 25 | <!-- ==================== Left Row Label (Stages) ==================== --> |
| 26 | <g id="pipeline-stages-label" data-pptx-bounds="30 150 30 430"> |
| 27 | <rect x="30" y="150" width="30" height="30" rx="6" fill="#334155"/> |
| 28 | <g id="pipeline-stages-label-arrow" data-pptx-authoring="preset" data-pptx-object="shape" data-pptx-prst="rightArrow" data-pptx-frame="36 158 19 14" data-pptx-av-adj1="val 42857" data-pptx-av-adj2="val 57143" fill="#FFFFFF" stroke="none"> |
| 29 | <path d="M 36 162 L 47 162 L 47 158 L 55 165 L 47 172 L 47 168 L 36 168 Z"/> |
| 30 | </g> |
| 31 | <text x="45" y="350" text-anchor="middle" font-size="14" font-weight="800" fill="#0F172A" letter-spacing="4" transform="rotate(-90, 45, 350)">PIPELINE STAGES</text> |
| 32 | </g> |
| 33 | <!-- ==================== Main Pipeline Frame ==================== --> |
| 34 | <g id="pipeline" data-pptx-bounds="100 150 1150 430"> |
| 35 | <rect x="100" y="150" width="1150" height="36" fill="#F8FAFC" rx="8"/> |
| 36 | <path d="M 100 176 L 1250 176 L 1250 186 L 100 186 Z" fill="#F8FAFC"/> |
| 37 | <rect x="100" y="150" width="1150" height="430" rx="8" fill="none" stroke="#CBD5E1" stroke-width="2" stroke-dasharray="6 4"/> |
| 38 | <text x="675" y="173" text-anchor="middle" font-size="13" font-weight="800" fill="#475569" letter-spacing="1">SEQUENTIAL FLOW: RAW → CLEAN → WIDE → ENRICHED → PRODUCTS</text> |
| 39 | <!-- ==================== Stage 1: Ingest (Violet) ==================== --> |
| 40 | <rect x="120" y="200" width="190" height="360" rx="8" fill="#FFFFFF" stroke="#C4B5FD" stroke-width="1.5"/> |
| 41 | <path d="M 120 208 A 8 8 0 0 1 128 200 L 302 200 A 8 8 0 0 1 310 208 L 310 250 L 120 250 Z" fill="#8B5CF6"/> |
| 42 | <rect x="132" y="210" width="30" height="30" rx="6" fill="#FFFFFF"/> |
| 43 | <text x="147" y="231" text-anchor="middle" font-size="16" font-weight="800" fill="#8B5CF6">01</text> |
| 44 | <text x="174" y="231" font-size="18" font-weight="800" fill="#FFFFFF">Ingest</text> |
| 45 | <rect x="120" y="250" width="190" height="36" fill="#F5F3FF"/> |
| 46 | <text x="215" y="273" text-anchor="middle" font-weight="700" fill="#6D28D9">Multi-source & Real-time</text> |
| 47 | <circle cx="140" cy="310" r="3" fill="#8B5CF6"/> |
| 48 | <text x="150" y="314" font-size="13" font-weight="700" fill="#1E293B">Data Collection</text> |
| 49 | <text x="150" y="332" font-weight="600" fill="#64748B">CDC & File Sync</text> |
| 50 | <circle cx="140" cy="360" r="3" fill="#8B5CF6"/> |
| 51 | <text x="150" y="364" font-size="13" font-weight="700" fill="#1E293B">Unified Protocol</text> |
| 52 | <text x="150" y="382" font-weight="600" fill="#64748B">Queue & Buffer</text> |
| 53 | <circle cx="140" cy="410" r="3" fill="#8B5CF6"/> |
| 54 | <text x="150" y="414" font-size="13" font-weight="700" fill="#1E293B">Elastic Scaling</text> |
| 55 | <text x="150" y="432" font-weight="600" fill="#64748B">Sharding & Parallel</text> |
| 56 | <line x1="120" y1="465" x2="310" y2="465" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4 4"/> |
| 57 | <rect x="135" y="480" width="160" height="60" rx="6" fill="#F5F3FF" stroke="#DDD6FE" stroke-width="1"/> |
| 58 | <text x="215" y="500" text-anchor="middle" font-weight="700" fill="#64748B" letter-spacing="1">STAGE OUTPUT</text> |
| 59 | <text x="215" y="525" text-anchor="middle" font-size="15" font-weight="800" fill="#6D28D9">Raw Events</text> |
| 60 | <!-- ==================== Stage 2: Validate (Blue) ==================== --> |
| 61 | <rect x="350" y="200" width="190" height="360" rx="8" fill="#FFFFFF" stroke="#93C5FD" stroke-width="1.5"/> |
| 62 | <path d="M 350 208 A 8 8 0 0 1 358 200 L 532 200 A 8 8 0 0 1 540 208 L 540 250 L 350 250 Z" fill="#3B82F6"/> |
| 63 | <rect x="362" y="210" width="30" height="30" rx="6" fill="#FFFFFF"/> |
| 64 | <text x="377" y="231" text-anchor="middle" font-size="16" font-weight="800" fill="#3B82F6">02</text> |
| 65 | <text x="404" y="231" font-size="18" font-weight="800" fill="#FFFFFF">Validate</text> |
| 66 | <rect x="350" y="250" width="190" height="36" fill="#EFF6FF"/> |
| 67 | <text x="445" y="273" text-anchor="middle" font-weight="700" fill="#1D4ED8">Isolation & Quality Check</text> |
| 68 | <circle cx="370" cy="310" r="3" fill="#3B82F6"/> |
| 69 | <text x="380" y="314" font-size="13" font-weight="700" fill="#1E293B">Format & Bounds</text> |
| 70 | <text x="380" y="332" font-weight="600" fill="#64748B">Type & Value Range</text> |
| 71 | <circle cx="370" cy="360" r="3" fill="#3B82F6"/> |
| 72 | <text x="380" y="364" font-size="13" font-weight="700" fill="#1E293B">Business Rules</text> |
| 73 | <text x="380" y="382" font-weight="600" fill="#64748B">Uniqueness & Refs</text> |
| 74 | <circle cx="370" cy="410" r="3" fill="#3B82F6"/> |
| 75 | <text x="380" y="414" font-size="13" font-weight="700" fill="#1E293B">Anomaly Isolation</text> |
| 76 | <text x="380" y="432" font-weight="600" fill="#64748B">Dead-letter Queue</text> |
| 77 | <line x1="350" y1="465" x2="540" y2="465" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4 4"/> |
| 78 | <rect x="365" y="480" width="160" height="60" rx="6" fill="#EFF6FF" stroke="#BFDBFE" stroke-width="1"/> |
| 79 | <text x="445" y="500" text-anchor="middle" font-weight="700" fill="#64748B" letter-spacing="1">STAGE OUTPUT</text> |
| 80 | <text x="445" y="525" text-anchor="middle" font-size="15" font-weight="800" fill="#1D4ED8">Clean Events</text> |
| 81 | <!-- ==================== Stage 3: Transform (Emerald) ==================== --> |
| 82 | <rect x="580" y="200" width="190" height="360" rx="8" fill="#FFFFFF" stroke="#6EE7B7" stroke-width="1.5"/> |
| 83 | <path d="M 580 208 A 8 8 0 0 1 588 200 L 762 200 A 8 8 0 0 1 770 208 L 770 250 L 580 250 Z" fill="#10B981"/> |
| 84 | <rect x="592" y="210" width="30" height="30" rx="6" fill="#FFFFFF"/> |
| 85 | <text x="607" y="231" text-anchor="middle" font-size="16" font-weight="800" fill="#10B981">03</text> |
| 86 | <text x="634" y="231" font-size="18" font-weight="800" fill="#FFFFFF">Transform</text> |
| 87 | <rect x="580" y="250" width="190" height="36" fill="#ECFDF5"/> |
| 88 | <text x="675" y="273" text-anchor="middle" font-weight="700" fill="#047857">Structure & Alignment</text> |
| 89 | <circle cx="600" cy="310" r="3" fill="#10B981"/> |
| 90 | <text x="610" y="314" font-size="13" font-weight="700" fill="#1E293B">Denormalization</text> |
| 91 | <text x="610" y="332" font-weight="600" fill="#64748B">Metrics & Grouping</text> |
| 92 | <circle cx="600" cy="360" r="3" fill="#10B981"/> |
| 93 | <text x="610" y="364" font-size="13" font-weight="700" fill="#1E293B">Derived Metrics</text> |
| 94 | <text x="610" y="382" font-weight="600" fill="#64748B">Unified Definitions</text> |
| 95 | <circle cx="600" cy="410" r="3" fill="#10B981"/> |
| 96 | <text x="610" y="414" font-size="13" font-weight="700" fill="#1E293B">Wide Table Build</text> |
| 97 | <text x="610" y="432" font-weight="600" fill="#64748B">Reusable Models</text> |
| 98 | <line x1="580" y1="465" x2="770" y2="465" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4 4"/> |
| 99 | <rect x="595" y="480" width="160" height="60" rx="6" fill="#ECFDF5" stroke="#A7F3D0" stroke-width="1"/> |
| 100 | <text x="675" y="500" text-anchor="middle" font-weight="700" fill="#64748B" letter-spacing="1">STAGE OUTPUT</text> |
| 101 | <text x="675" y="525" text-anchor="middle" font-size="15" font-weight="800" fill="#047857">Wide Tables</text> |
| 102 | <!-- ==================== Stage 4: Enrich (Amber) ==================== --> |
| 103 | <rect x="810" y="200" width="190" height="360" rx="8" fill="#FFFFFF" stroke="#FCD34D" stroke-width="1.5"/> |
| 104 | <path d="M 810 208 A 8 8 0 0 1 818 200 L 992 200 A 8 8 0 0 1 1000 208 L 1000 250 L 810 250 Z" fill="#F59E0B"/> |
| 105 | <rect x="822" y="210" width="30" height="30" rx="6" fill="#FFFFFF"/> |
| 106 | <text x="837" y="231" text-anchor="middle" font-size="16" font-weight="800" fill="#F59E0B">04</text> |
| 107 | <text x="864" y="231" font-size="18" font-weight="800" fill="#FFFFFF">Enrich</text> |
| 108 | <rect x="810" y="250" width="190" height="36" fill="#FFFBEB"/> |
| 109 | <text x="905" y="273" text-anchor="middle" font-weight="700" fill="#B45309">AI Labels & Semantics</text> |
| 110 | <circle cx="830" cy="310" r="3" fill="#F59E0B"/> |
| 111 | <text x="840" y="314" font-size="13" font-weight="700" fill="#1E293B">AI Inference</text> |
| 112 | <text x="840" y="332" font-weight="600" fill="#64748B">Profile & Predict</text> |
| 113 | <circle cx="830" cy="360" r="3" fill="#F59E0B"/> |
| 114 | <text x="840" y="364" font-size="13" font-weight="700" fill="#1E293B">Knowledge Graph</text> |
| 115 | <text x="840" y="382" font-weight="600" fill="#64748B">Entities & Relations</text> |
| 116 | <circle cx="830" cy="410" r="3" fill="#F59E0B"/> |
| 117 | <text x="840" y="414" font-size="13" font-weight="700" fill="#1E293B">Semantic Tags</text> |
| 118 | <text x="840" y="432" font-weight="600" fill="#64748B">Business Ready</text> |
| 119 | <line x1="810" y1="465" x2="1000" y2="465" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4 4"/> |
| 120 | <rect x="825" y="480" width="160" height="60" rx="6" fill="#FFFBEB" stroke="#FDE68A" stroke-width="1"/> |
| 121 | <text x="905" y="500" text-anchor="middle" font-weight="700" fill="#64748B" letter-spacing="1">STAGE OUTPUT</text> |
| 122 | <text x="905" y="525" text-anchor="middle" font-size="15" font-weight="800" fill="#B45309">Enriched Set</text> |
| 123 | <!-- ==================== Stage 5: Serve (Rose) ==================== --> |
| 124 | <rect x="1040" y="200" width="190" height="360" rx="8" fill="#FFFFFF" stroke="#FDA4AF" stroke-width="1.5"/> |
| 125 | <path d="M 1040 208 A 8 8 0 0 1 1048 200 L 1222 200 A 8 8 0 0 1 1230 208 L 1230 250 L 1040 250 Z" fill="#F43F5E"/> |
| 126 | <rect x="1052" y="210" width="30" height="30" rx="6" fill="#FFFFFF"/> |
| 127 | <text x="1067" y="231" text-anchor="middle" font-size="16" font-weight="800" fill="#F43F5E">05</text> |
| 128 | <text x="1094" y="231" font-size="18" font-weight="800" fill="#FFFFFF">Serve</text> |
| 129 | <rect x="1040" y="250" width="190" height="36" fill="#FFF1F2"/> |
| 130 | <text x="1135" y="273" text-anchor="middle" font-weight="700" fill="#BE123C">Services & Access API</text> |
| 131 | <circle cx="1060" cy="310" r="3" fill="#F43F5E"/> |
| 132 | <text x="1070" y="314" font-size="13" font-weight="700" fill="#1E293B">BI Dashboards</text> |
| 133 | <text x="1070" y="332" font-weight="600" fill="#64748B">Visual Decisions</text> |
| 134 | <circle cx="1060" cy="360" r="3" fill="#F43F5E"/> |
| 135 | <text x="1070" y="364" font-size="13" font-weight="700" fill="#1E293B">Data API</text> |
| 136 | <text x="1070" y="382" font-weight="600" fill="#64748B">On-demand Fetch</text> |
| 137 | <circle cx="1060" cy="410" r="3" fill="#F43F5E"/> |
| 138 | <text x="1070" y="414" font-size="13" font-weight="700" fill="#1E293B">Pub/Sub Events</text> |
| 139 | <text x="1070" y="432" font-weight="600" fill="#64748B">Webhook Triggers</text> |
| 140 | <line x1="1040" y1="465" x2="1230" y2="465" stroke="#E2E8F0" stroke-width="1.5" stroke-dasharray="4 4"/> |
| 141 | <rect x="1055" y="480" width="160" height="60" rx="6" fill="#FFF1F2" stroke="#FECDD3" stroke-width="1"/> |
| 142 | <text x="1135" y="500" text-anchor="middle" font-weight="700" fill="#64748B" letter-spacing="1">STAGE OUTPUT</text> |
| 143 | <text x="1135" y="525" text-anchor="middle" font-size="15" font-weight="800" fill="#BE123C">Products</text> |
| 144 | <!-- ==================== Stage Arrows ==================== --> |
| 145 | <g id="stage-arrows" fill="#CBD5E1"> |
| 146 | <g id="stage-arrow-01-02" data-pptx-authoring="preset" data-pptx-object="shape" data-pptx-prst="rightArrow" data-pptx-frame="315 368 30 24" data-pptx-av-adj1="val 33333" data-pptx-av-adj2="val 70833" fill="#CBD5E1" stroke="none"> |
| 147 | <path d="M 315 376 L 328 376 L 328 368 L 345 380 L 328 392 L 328 384 L 315 384 Z"/> |
| 148 | </g> |
| 149 | <g id="stage-arrow-02-03" data-pptx-authoring="preset" data-pptx-object="shape" data-pptx-prst="rightArrow" data-pptx-frame="545 368 30 24" data-pptx-av-adj1="val 33333" data-pptx-av-adj2="val 70833" fill="#CBD5E1" stroke="none"> |
| 150 | <path d="M 545 376 L 558 376 L 558 368 L 575 380 L 558 392 L 558 384 L 545 384 Z"/> |
| 151 | </g> |
| 152 | <g id="stage-arrow-03-04" data-pptx-authoring="preset" data-pptx-object="shape" data-pptx-prst="rightArrow" data-pptx-frame="775 368 30 24" data-pptx-av-adj1="val 33333" data-pptx-av-adj2="val 70833" fill="#CBD5E1" stroke="none"> |
| 153 | <path d="M 775 376 L 788 376 L 788 368 L 805 380 L 788 392 L 788 384 L 775 384 Z"/> |
| 154 | </g> |
| 155 | <g id="stage-arrow-04-05" data-pptx-authoring="preset" data-pptx-object="shape" data-pptx-prst="rightArrow" data-pptx-frame="1005 368 30 24" data-pptx-av-adj1="val 33333" data-pptx-av-adj2="val 70833" fill="#CBD5E1" stroke="none"> |
| 156 | <path d="M 1005 376 L 1018 376 L 1018 368 L 1035 380 L 1018 392 L 1018 384 L 1005 384 Z"/> |
| 157 | </g> |
| 158 | </g> |
| 159 | </g> |
| 160 | <!-- ==================== Bottom Flow Diagram ==================== --> |
| 161 | <g id="end-to-end-label" data-pptx-bounds="30 608 30 112"> |
| 162 | <rect x="30" y="610" width="30" height="30" rx="6" fill="#334155"/> |
| 163 | <g id="end-to-end-label-arrow" data-pptx-authoring="preset" data-pptx-object="shape" data-pptx-prst="rightArrow" data-pptx-frame="36 618 19 14" data-pptx-av-adj1="val 42857" data-pptx-av-adj2="val 57143" fill="#FFFFFF" stroke="none"> |
| 164 | <path d="M 36 622 L 47 622 L 47 618 L 55 625 L 47 632 L 47 628 L 36 628 Z"/> |
| 165 | </g> |
| 166 | <text x="45" y="675" text-anchor="middle" font-size="14" font-weight="800" fill="#0F172A" transform="rotate(-90, 45, 675)">END TO END</text> |
| 167 | </g> |
| 168 | <g id="end-to-end-flow" data-pptx-bounds="100 610 1150 90"> |
| 169 | <rect x="100" y="610" width="1150" height="90" rx="8" fill="none" stroke="#E2E8F0" stroke-width="2"/> |
| 170 | <text x="675" y="632" text-anchor="middle" font-size="13" font-weight="700" fill="#64748B" letter-spacing="0.5">Origin: Raw Data ————— 5-Stage Processing ————— Destination: Business Products</text> |
| 171 | <!-- Dashed connect line --> |
| 172 | <line x1="120" y1="665" x2="1230" y2="665" stroke="#CBD5E1" stroke-width="2" stroke-dasharray="4 4"/> |
| 173 | <!-- Flow Blocks --> |
| 174 | <rect x="120" y="645" width="200" height="40" rx="6" fill="#F5F3FF" stroke="#C4B5FD" stroke-width="1.5"/> |
| 175 | <text x="220" y="670" text-anchor="middle" font-size="13" font-weight="800" fill="#6D28D9">Origin: Raw Data</text> |
| 176 | <rect x="340" y="645" width="160" height="40" rx="6" fill="#F8FAFC" stroke="#CBD5E1" stroke-width="1"/> |
| 177 | <text x="420" y="670" text-anchor="middle" font-size="13" font-weight="600" fill="#475569">Raw Events</text> |
| 178 | <rect x="520" y="645" width="160" height="40" rx="6" fill="#F8FAFC" stroke="#CBD5E1" stroke-width="1"/> |
| 179 | <text x="600" y="670" text-anchor="middle" font-size="13" font-weight="600" fill="#475569">Clean Events</text> |
| 180 | <rect x="700" y="645" width="160" height="40" rx="6" fill="#F8FAFC" stroke="#CBD5E1" stroke-width="1"/> |
| 181 | <text x="780" y="670" text-anchor="middle" font-size="13" font-weight="600" fill="#475569">Wide Tables</text> |
| 182 | <rect x="880" y="645" width="160" height="40" rx="6" fill="#F8FAFC" stroke="#CBD5E1" stroke-width="1"/> |
| 183 | <text x="960" y="670" text-anchor="middle" font-size="13" font-weight="600" fill="#475569">Enriched Set</text> |
| 184 | <rect x="1060" y="645" width="170" height="40" rx="6" fill="#FFF1F2" stroke="#FDA4AF" stroke-width="1.5"/> |
| 185 | <text x="1145" y="670" text-anchor="middle" font-size="13" font-weight="800" fill="#BE123C">Destination: Products</text> |
| 186 | </g> |
| 187 | </svg> |
| 188 |