146 lines
11 KiB
Text
146 lines
11 KiB
Text
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
||
|
|
<svg viewBox="0 0 980 880" xmlns="http://www.w3.org/2000/svg" style="max-width: 100%; height: auto;">
|
||
|
|
<defs>
|
||
|
|
<!-- Arrow markers -->
|
||
|
|
<marker id="arrow" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">
|
||
|
|
<path d="M0,0 L0,6 L9,3 z" fill="#2563EB">
|
||
|
|
</marker>
|
||
|
|
|
||
|
|
<!-- Drop shadow for depth -->
|
||
|
|
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
||
|
|
<feGaussianBlur in="SourceAlpha" stdDeviation="2">
|
||
|
|
<feOffset dx="1" dy="1" result="offsetblur">
|
||
|
|
<feComponentTransfer>
|
||
|
|
<feFuncA type="linear" slope="0.2">
|
||
|
|
</feComponentTransfer>
|
||
|
|
<feMerge>
|
||
|
|
<feMergeNode/>
|
||
|
|
<feMergeNode in="SourceGraphic">
|
||
|
|
</feMerge>
|
||
|
|
</filter>
|
||
|
|
</defs>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<!-- Beautiful gradient definitions for depth -->
|
||
|
|
|
||
|
|
|
||
|
|
<!-- White background with subtle border -->
|
||
|
|
<rect x="0" y="0" width="980" height="880" fill="#F9FAFB" stroke="#9CA3AF" stroke-width="2" rx="8">
|
||
|
|
|
||
|
|
<!-- Content container with proper margins -->
|
||
|
|
<g transform="translate(40, 40)">
|
||
|
|
|
||
|
|
|
||
|
|
<!-- Title -->
|
||
|
|
<text x="450" y="30" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="24" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">Data Flow Through Modules</text>
|
||
|
|
|
||
|
|
<!-- User Input -->
|
||
|
|
<ellipse cx="450" cy="70" rx="80" ry="25" fill="url(#inputGradient)" stroke="#2563EB" stroke-width="2" opacity="0.9">
|
||
|
|
<text x="450" y="75" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">User Input</text>
|
||
|
|
|
||
|
|
<!-- Arrow down -->
|
||
|
|
<line x1="450" y1="95" x2="450" y2="120" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
|
||
|
|
<!-- web_server/channels -->
|
||
|
|
<rect x="300" y="120" width="300" height="70" fill="url(#processGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="450" y="145" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">web_server/ | channels/</text>
|
||
|
|
<text x="450" y="165" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Axum HTTP Server</text>
|
||
|
|
<text x="450" y="180" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Route to channel</text>
|
||
|
|
|
||
|
|
<!-- Arrow down -->
|
||
|
|
<line x1="450" y1="190" x2="450" y2="220" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
|
||
|
|
<!-- session/ -->
|
||
|
|
<rect x="300" y="220" width="300" height="70" fill="url(#processGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="450" y="245" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">session/</text>
|
||
|
|
<text x="450" y="265" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Load/Create Session</text>
|
||
|
|
<text x="450" y="280" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Validate Token</text>
|
||
|
|
|
||
|
|
<!-- Arrow down -->
|
||
|
|
<line x1="450" y1="290" x2="450" y2="320" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
|
||
|
|
<!-- auth/ -->
|
||
|
|
<rect x="300" y="320" width="300" height="70" fill="url(#processGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="450" y="345" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">auth/</text>
|
||
|
|
<text x="450" y="365" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Check Permissions</text>
|
||
|
|
<text x="450" y="380" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Apply RBAC</text>
|
||
|
|
|
||
|
|
<!-- Arrow down -->
|
||
|
|
<line x1="450" y1="390" x2="450" y2="420" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
|
||
|
|
<!-- bot/ -->
|
||
|
|
<rect x="300" y="420" width="300" height="70" fill="url(#serviceGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="450" y="445" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">bot/</text>
|
||
|
|
<text x="450" y="465" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Route to Bot Instance</text>
|
||
|
|
<text x="450" y="480" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Load Configuration</text>
|
||
|
|
|
||
|
|
<!-- Arrow down -->
|
||
|
|
<line x1="450" y1="490" x2="450" y2="520" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
|
||
|
|
<!-- basic/ -->
|
||
|
|
<rect x="300" y="520" width="300" height="70" fill="url(#serviceGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="450" y="545" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">basic/</text>
|
||
|
|
<text x="450" y="565" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Execute BASIC Script</text>
|
||
|
|
<text x="450" y="580" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Parse Keywords</text>
|
||
|
|
|
||
|
|
<!-- Multiple arrows branching out -->
|
||
|
|
<line x1="350" y1="590" x2="200" y2="640" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
<line x1="400" y1="590" x2="350" y2="640" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
<line x1="500" y1="590" x2="550" y2="640" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
<line x1="550" y1="590" x2="700" y2="640" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
|
||
|
|
<!-- Data Layer Services -->
|
||
|
|
<!-- context/ -->
|
||
|
|
<rect x="120" y="640" width="140" height="60" fill="url(#dataGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="190" y="665" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">context/</text>
|
||
|
|
<text x="190" y="685" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Load KB</text>
|
||
|
|
|
||
|
|
<!-- drive/ -->
|
||
|
|
<rect x="280" y="640" width="140" height="60" fill="url(#dataGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="350" y="665" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">drive/</text>
|
||
|
|
<text x="350" y="685" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Get Files</text>
|
||
|
|
|
||
|
|
<!-- database/ -->
|
||
|
|
<rect x="480" y="640" width="140" height="60" fill="url(#dataGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="550" y="665" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">database/</text>
|
||
|
|
<text x="550" y="685" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Query DB</text>
|
||
|
|
|
||
|
|
<!-- llm/ -->
|
||
|
|
<rect x="640" y="640" width="140" height="60" fill="url(#dataGradient)" stroke="#2563EB" stroke-width="2" rx="8" opacity="0.9" filter="url(#shadow)">
|
||
|
|
<text x="710" y="665" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">llm/</text>
|
||
|
|
<text x="710" y="685" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">Call AI</text>
|
||
|
|
|
||
|
|
<!-- Convergence arrows -->
|
||
|
|
<line x1="190" y1="700" x2="400" y2="730" stroke="#666" stroke-width="2" opacity="0.5">
|
||
|
|
<line x1="350" y1="700" x2="420" y2="730" stroke="#666" stroke-width="2" opacity="0.5">
|
||
|
|
<line x1="550" y1="700" x2="480" y2="730" stroke="#666" stroke-width="2" opacity="0.5">
|
||
|
|
<line x1="710" y1="700" x2="500" y2="730" stroke="#666" stroke-width="2" opacity="0.5">
|
||
|
|
|
||
|
|
<!-- Arrow down -->
|
||
|
|
<line x1="450" y1="730" x2="450" y2="750" stroke="#666" stroke-width="2" marker-end="url(#arrow)" opacity="0.6">
|
||
|
|
|
||
|
|
<!-- Bot Response -->
|
||
|
|
<ellipse cx="450" cy="780" rx="80" ry="25" fill="url(#outputGradient)" stroke="#2563EB" stroke-width="2" opacity="0.9">
|
||
|
|
<text x="450" y="785" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="#4B5563" filter="url(#textShadow)">Bot Response</text>
|
||
|
|
|
||
|
|
<!-- Side annotations -->
|
||
|
|
<g id="annotations" opacity="0.7">
|
||
|
|
<!-- Processing stages -->
|
||
|
|
<text x="50" y="75" text-anchor="start" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">1. Input Reception</text>
|
||
|
|
<text x="50" y="155" text-anchor="start" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">2. HTTP Routing</text>
|
||
|
|
<text x="50" y="255" text-anchor="start" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">3. Session Management</text>
|
||
|
|
<text x="50" y="355" text-anchor="start" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">4. Authorization</text>
|
||
|
|
<text x="50" y="455" text-anchor="start" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">5. Bot Routing</text>
|
||
|
|
<text x="50" y="555" text-anchor="start" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">6. Script Execution</text>
|
||
|
|
<text x="50" y="670" text-anchor="start" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)" font-weight="600">7. Data Processing</text>
|
||
|
|
<text x="50" y="785" text-anchor="start" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#4B5563" filter="url(#textShadow)">8. Response Generation</text>
|
||
|
|
</g>
|
||
|
|
|
||
|
|
<!-- Performance note -->
|
||
|
|
<text x="450" y="820" text-anchor="middle" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-style="italic" fill="#4B5563" filter="url(#textShadow)">All operations are async with Tokio runtime for maximum throughput</text>
|
||
|
|
|
||
|
|
|
||
|
|
</g>
|
||
|
|
|
||
|
|
</svg>
|