Files
soleprint/docs/architecture/03-build-flow.svg
buenosairesam 22356fed66
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
docs: add architecture and veins documentation
- System overview, artery hierarchy, build flow, room config diagrams
- Veins docs: Jira, Slack, Google OAuth
- Shunts docs: MercadoPago mock
- DOT source files with generated SVGs
- HTML viewers with navigation and full-screen mode

Solves:
- Freelance work standardization
- Missing infrastructure replication (shunts)
- Reliable testing environment (BDD -> Gherkin -> Tests)
2026-01-02 22:09:13 -03:00

191 lines
16 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 14.1.1 (0)
-->
<!-- Title: BuildFlow Pages: 1 -->
<svg width="854pt" height="452pt"
viewBox="0.00 0.00 854.00 452.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 448.25)">
<title>BuildFlow</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-448.25 850,-448.25 850,4 -4,4"/>
<text xml:space="preserve" text-anchor="middle" x="423" y="-425.05" font-family="Helvetica,sans-Serif" font-size="16.00">Soleprint &#45; Build Flow</text>
<g id="clust1" class="cluster">
<title>cluster_source</title>
<polygon fill="#e3f2fd" stroke="#e3f2fd" points="8,-309.5 8,-389 462,-389 462,-309.5 8,-309.5"/>
<text xml:space="preserve" text-anchor="middle" x="235" y="-369.8" font-family="Helvetica,sans-Serif" font-size="16.00">Source (spr/)</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_cfg</title>
<polygon fill="#fff8e1" stroke="#fff8e1" points="470,-289.75 470,-408.75 838,-408.75 838,-289.75 470,-289.75"/>
<text xml:space="preserve" text-anchor="middle" x="654" y="-389.55" font-family="Helvetica,sans-Serif" font-size="16.00">Room Configs (cfg/)</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_cmds</title>
<polygon fill="#f3e5f5" stroke="#f3e5f5" points="122,-118.25 122,-197.75 636,-197.75 636,-118.25 122,-118.25"/>
<text xml:space="preserve" text-anchor="middle" x="379" y="-178.55" font-family="Helvetica,sans-Serif" font-size="16.00">Commands</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_gen</title>
<polygon fill="#e8f5e9" stroke="#e8f5e9" points="243,-8 243,-87.5 499,-87.5 499,-8 243,-8"/>
<text xml:space="preserve" text-anchor="middle" x="371" y="-68.3" font-family="Helvetica,sans-Serif" font-size="16.00">Generated Output (gen/)</text>
</g>
<!-- soleprint_src -->
<g id="node1" class="node">
<title>soleprint_src</title>
<path fill="#bbdefb" stroke="black" d="M123.75,-353.5C123.75,-353.5 28.25,-353.5 28.25,-353.5 22.25,-353.5 16.25,-347.5 16.25,-341.5 16.25,-341.5 16.25,-329.5 16.25,-329.5 16.25,-323.5 22.25,-317.5 28.25,-317.5 28.25,-317.5 123.75,-317.5 123.75,-317.5 129.75,-317.5 135.75,-323.5 135.75,-329.5 135.75,-329.5 135.75,-341.5 135.75,-341.5 135.75,-347.5 129.75,-353.5 123.75,-353.5"/>
<text xml:space="preserve" text-anchor="middle" x="76" y="-338.55" font-family="Helvetica,sans-Serif" font-size="11.00">soleprint/</text>
<text xml:space="preserve" text-anchor="middle" x="76" y="-325.05" font-family="Helvetica,sans-Serif" font-size="11.00">(core entry points)</text>
</g>
<!-- build -->
<g id="node8" class="node">
<title>build</title>
<path fill="#e1bee7" stroke="black" d="M384.69,-248.75C384.69,-248.75 377.55,-254.75 377.55,-254.75 373.98,-257.75 365.75,-260.75 361.09,-260.75 361.09,-260.75 336.91,-260.75 336.91,-260.75 332.25,-260.75 324.02,-257.75 320.45,-254.75 320.45,-254.75 313.31,-248.75 313.31,-248.75 309.74,-245.75 309.74,-239.75 313.31,-236.75 313.31,-236.75 320.45,-230.75 320.45,-230.75 324.02,-227.75 332.25,-224.75 336.91,-224.75 336.91,-224.75 361.09,-224.75 361.09,-224.75 365.75,-224.75 373.98,-227.75 377.55,-230.75 377.55,-230.75 384.69,-236.75 384.69,-236.75 388.26,-239.75 388.26,-245.75 384.69,-248.75"/>
<text xml:space="preserve" text-anchor="middle" x="349" y="-239.05" font-family="Helvetica,sans-Serif" font-size="11.00">build.py</text>
</g>
<!-- soleprint_src&#45;&gt;build -->
<g id="edge1" class="edge">
<title>soleprint_src&#45;&gt;build</title>
<path fill="none" stroke="black" d="M98.48,-317C111.45,-307.68 128.42,-296.73 145,-289.75 195.92,-268.31 258.4,-256.1 300.69,-249.73"/>
<polygon fill="black" stroke="black" points="301.17,-253.2 310.56,-248.3 300.16,-246.27 301.17,-253.2"/>
</g>
<!-- artery_src -->
<g id="node2" class="node">
<title>artery_src</title>
<path fill="#bbdefb" stroke="black" d="M240.25,-353.5C240.25,-353.5 165.75,-353.5 165.75,-353.5 159.75,-353.5 153.75,-347.5 153.75,-341.5 153.75,-341.5 153.75,-329.5 153.75,-329.5 153.75,-323.5 159.75,-317.5 165.75,-317.5 165.75,-317.5 240.25,-317.5 240.25,-317.5 246.25,-317.5 252.25,-323.5 252.25,-329.5 252.25,-329.5 252.25,-341.5 252.25,-341.5 252.25,-347.5 246.25,-353.5 240.25,-353.5"/>
<text xml:space="preserve" text-anchor="middle" x="203" y="-338.55" font-family="Helvetica,sans-Serif" font-size="11.00">artery/</text>
<text xml:space="preserve" text-anchor="middle" x="203" y="-325.05" font-family="Helvetica,sans-Serif" font-size="11.00">(veins, shunts)</text>
</g>
<!-- artery_src&#45;&gt;build -->
<g id="edge2" class="edge">
<title>artery_src&#45;&gt;build</title>
<path fill="none" stroke="black" d="M223.56,-317.21C234.37,-308.5 248.04,-298.05 261,-289.75 277.08,-279.46 295.71,-269.46 311.69,-261.43"/>
<polygon fill="black" stroke="black" points="312.98,-264.7 320.39,-257.13 309.87,-258.42 312.98,-264.7"/>
</g>
<!-- atlas_src -->
<g id="node3" class="node">
<title>atlas_src</title>
<path fill="#bbdefb" stroke="black" d="M315.62,-353.5C315.62,-353.5 282.38,-353.5 282.38,-353.5 276.38,-353.5 270.38,-347.5 270.38,-341.5 270.38,-341.5 270.38,-329.5 270.38,-329.5 270.38,-323.5 276.38,-317.5 282.38,-317.5 282.38,-317.5 315.62,-317.5 315.62,-317.5 321.62,-317.5 327.62,-323.5 327.62,-329.5 327.62,-329.5 327.62,-341.5 327.62,-341.5 327.62,-347.5 321.62,-353.5 315.62,-353.5"/>
<text xml:space="preserve" text-anchor="middle" x="299" y="-338.55" font-family="Helvetica,sans-Serif" font-size="11.00">atlas/</text>
<text xml:space="preserve" text-anchor="middle" x="299" y="-325.05" font-family="Helvetica,sans-Serif" font-size="11.00">(books)</text>
</g>
<!-- atlas_src&#45;&gt;build -->
<g id="edge3" class="edge">
<title>atlas_src&#45;&gt;build</title>
<path fill="none" stroke="black" d="M308.64,-317C315.83,-303.95 325.8,-285.86 334.03,-270.93"/>
<polygon fill="black" stroke="black" points="336.9,-272.97 338.66,-262.52 330.77,-269.59 336.9,-272.97"/>
</g>
<!-- station_src -->
<g id="node4" class="node">
<title>station_src</title>
<path fill="#bbdefb" stroke="black" d="M442.12,-353.5C442.12,-353.5 357.88,-353.5 357.88,-353.5 351.88,-353.5 345.88,-347.5 345.88,-341.5 345.88,-341.5 345.88,-329.5 345.88,-329.5 345.88,-323.5 351.88,-317.5 357.88,-317.5 357.88,-317.5 442.12,-317.5 442.12,-317.5 448.12,-317.5 454.12,-323.5 454.12,-329.5 454.12,-329.5 454.12,-341.5 454.12,-341.5 454.12,-347.5 448.12,-353.5 442.12,-353.5"/>
<text xml:space="preserve" text-anchor="middle" x="400" y="-338.55" font-family="Helvetica,sans-Serif" font-size="11.00">station/</text>
<text xml:space="preserve" text-anchor="middle" x="400" y="-325.05" font-family="Helvetica,sans-Serif" font-size="11.00">(tools, monitors)</text>
</g>
<!-- station_src&#45;&gt;build -->
<g id="edge4" class="edge">
<title>station_src&#45;&gt;build</title>
<path fill="none" stroke="black" d="M390.17,-317C382.83,-303.95 372.67,-285.86 364.27,-270.93"/>
<polygon fill="black" stroke="black" points="367.5,-269.52 359.54,-262.51 361.39,-272.95 367.5,-269.52"/>
</g>
<!-- cfg_standalone -->
<g id="node5" class="node">
<title>cfg_standalone</title>
<path fill="#ffecb3" stroke="black" d="M566.38,-359.75C566.38,-359.75 489.62,-359.75 489.62,-359.75 483.62,-359.75 477.62,-353.75 477.62,-347.75 477.62,-347.75 477.62,-323.25 477.62,-323.25 477.62,-317.25 483.62,-311.25 489.62,-311.25 489.62,-311.25 566.38,-311.25 566.38,-311.25 572.38,-311.25 578.38,-317.25 578.38,-323.25 578.38,-323.25 578.38,-347.75 578.38,-347.75 578.38,-353.75 572.38,-359.75 566.38,-359.75"/>
<text xml:space="preserve" text-anchor="middle" x="528" y="-345.3" font-family="Helvetica,sans-Serif" font-size="11.00">cfg/standalone/</text>
<text xml:space="preserve" text-anchor="middle" x="528" y="-331.8" font-family="Helvetica,sans-Serif" font-size="11.00">config.json</text>
<text xml:space="preserve" text-anchor="middle" x="528" y="-318.3" font-family="Helvetica,sans-Serif" font-size="11.00">data/</text>
</g>
<!-- cfg_standalone&#45;&gt;build -->
<g id="edge5" class="edge">
<title>cfg_standalone&#45;&gt;build</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M498.41,-310.84C488.46,-303.52 477.07,-295.79 466,-289.75 441.97,-276.62 413.39,-265.31 390.49,-257.19"/>
<polygon fill="black" stroke="black" points="391.78,-253.94 381.18,-253.97 389.48,-260.55 391.78,-253.94"/>
</g>
<!-- cfg_amar -->
<g id="node6" class="node">
<title>cfg_amar</title>
<path fill="#ffecb3" stroke="black" d="M713.62,-373.25C713.62,-373.25 608.38,-373.25 608.38,-373.25 602.38,-373.25 596.38,-367.25 596.38,-361.25 596.38,-361.25 596.38,-309.75 596.38,-309.75 596.38,-303.75 602.38,-297.75 608.38,-297.75 608.38,-297.75 713.62,-297.75 713.62,-297.75 719.62,-297.75 725.62,-303.75 725.62,-309.75 725.62,-309.75 725.62,-361.25 725.62,-361.25 725.62,-367.25 719.62,-373.25 713.62,-373.25"/>
<text xml:space="preserve" text-anchor="middle" x="661" y="-358.8" font-family="Helvetica,sans-Serif" font-size="11.00">cfg/amar/</text>
<text xml:space="preserve" text-anchor="middle" x="661" y="-345.3" font-family="Helvetica,sans-Serif" font-size="11.00">config.json</text>
<text xml:space="preserve" text-anchor="middle" x="661" y="-331.8" font-family="Helvetica,sans-Serif" font-size="11.00">data/</text>
<text xml:space="preserve" text-anchor="middle" x="661" y="-318.3" font-family="Helvetica,sans-Serif" font-size="11.00">docker&#45;compose.yml</text>
<text xml:space="preserve" text-anchor="middle" x="661" y="-304.8" font-family="Helvetica,sans-Serif" font-size="11.00">...</text>
</g>
<!-- cfg_amar&#45;&gt;build -->
<g id="edge6" class="edge">
<title>cfg_amar&#45;&gt;build</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M603.83,-297.29C598.26,-294.48 592.6,-291.91 587,-289.75 524.46,-265.68 447.64,-253.76 398.5,-248.18"/>
<polygon fill="black" stroke="black" points="399.06,-244.72 388.74,-247.12 398.31,-251.68 399.06,-244.72"/>
</g>
<!-- cfg_other -->
<g id="node7" class="node">
<title>cfg_other</title>
<path fill="#ffe082" stroke="black" stroke-dasharray="5,2" d="M818.25,-353.5C818.25,-353.5 755.75,-353.5 755.75,-353.5 749.75,-353.5 743.75,-347.5 743.75,-341.5 743.75,-341.5 743.75,-329.5 743.75,-329.5 743.75,-323.5 749.75,-317.5 755.75,-317.5 755.75,-317.5 818.25,-317.5 818.25,-317.5 824.25,-317.5 830.25,-323.5 830.25,-329.5 830.25,-329.5 830.25,-341.5 830.25,-341.5 830.25,-347.5 824.25,-353.5 818.25,-353.5"/>
<text xml:space="preserve" text-anchor="middle" x="787" y="-338.55" font-family="Helvetica,sans-Serif" font-size="11.00">cfg/&lt;room&gt;/</text>
<text xml:space="preserve" text-anchor="middle" x="787" y="-325.05" font-family="Helvetica,sans-Serif" font-size="11.00">...</text>
</g>
<!-- cmd1 -->
<g id="node9" class="node">
<title>cmd1</title>
<path fill="#ce93d8" stroke="black" d="M243.75,-162.25C243.75,-162.25 142.25,-162.25 142.25,-162.25 136.25,-162.25 130.25,-156.25 130.25,-150.25 130.25,-150.25 130.25,-138.25 130.25,-138.25 130.25,-132.25 136.25,-126.25 142.25,-126.25 142.25,-126.25 243.75,-126.25 243.75,-126.25 249.75,-126.25 255.75,-132.25 255.75,-138.25 255.75,-138.25 255.75,-150.25 255.75,-150.25 255.75,-156.25 249.75,-162.25 243.75,-162.25"/>
<text xml:space="preserve" text-anchor="middle" x="193" y="-140.55" font-family="Helvetica,sans-Serif" font-size="11.00">python build.py dev</text>
</g>
<!-- build&#45;&gt;cmd1 -->
<!-- cmd2 -->
<g id="node10" class="node">
<title>cmd2</title>
<path fill="#ce93d8" stroke="black" d="M615.75,-162.25C615.75,-162.25 454.25,-162.25 454.25,-162.25 448.25,-162.25 442.25,-156.25 442.25,-150.25 442.25,-150.25 442.25,-138.25 442.25,-138.25 442.25,-132.25 448.25,-126.25 454.25,-126.25 454.25,-126.25 615.75,-126.25 615.75,-126.25 621.75,-126.25 627.75,-132.25 627.75,-138.25 627.75,-138.25 627.75,-150.25 627.75,-150.25 627.75,-156.25 621.75,-162.25 615.75,-162.25"/>
<text xml:space="preserve" text-anchor="middle" x="535" y="-140.55" font-family="Helvetica,sans-Serif" font-size="11.00">python build.py dev &#45;&#45;cfg amar</text>
</g>
<!-- build&#45;&gt;cmd2 -->
<!-- cmd3 -->
<g id="node11" class="node">
<title>cmd3</title>
<path fill="#ce93d8" stroke="black" d="M411.75,-162.25C411.75,-162.25 286.25,-162.25 286.25,-162.25 280.25,-162.25 274.25,-156.25 274.25,-150.25 274.25,-150.25 274.25,-138.25 274.25,-138.25 274.25,-132.25 280.25,-126.25 286.25,-126.25 286.25,-126.25 411.75,-126.25 411.75,-126.25 417.75,-126.25 423.75,-132.25 423.75,-138.25 423.75,-138.25 423.75,-150.25 423.75,-150.25 423.75,-156.25 417.75,-162.25 411.75,-162.25"/>
<text xml:space="preserve" text-anchor="middle" x="349" y="-140.55" font-family="Helvetica,sans-Serif" font-size="11.00">python build.py dev &#45;&#45;all</text>
</g>
<!-- build&#45;&gt;cmd3 -->
<!-- gen_standalone -->
<g id="node12" class="node">
<title>gen_standalone</title>
<path fill="#c8e6c9" stroke="black" d="M343.25,-52C343.25,-52 262.75,-52 262.75,-52 256.75,-52 250.75,-46 250.75,-40 250.75,-40 250.75,-28 250.75,-28 250.75,-22 256.75,-16 262.75,-16 262.75,-16 343.25,-16 343.25,-16 349.25,-16 355.25,-22 355.25,-28 355.25,-28 355.25,-40 355.25,-40 355.25,-46 349.25,-52 343.25,-52"/>
<text xml:space="preserve" text-anchor="middle" x="303" y="-37.05" font-family="Helvetica,sans-Serif" font-size="11.00">gen/standalone/</text>
<text xml:space="preserve" text-anchor="middle" x="303" y="-23.55" font-family="Helvetica,sans-Serif" font-size="11.00">(base soleprint)</text>
</g>
<!-- cmd1&#45;&gt;gen_standalone -->
<g id="edge10" class="edge">
<title>cmd1&#45;&gt;gen_standalone</title>
<path fill="none" stroke="black" d="M190.27,-126.13C189.61,-116.45 190.36,-104.51 196,-95.5 206.41,-78.87 223.15,-66.38 240.33,-57.2"/>
<polygon fill="black" stroke="black" points="241.69,-60.43 249.09,-52.85 238.58,-54.16 241.69,-60.43"/>
<text xml:space="preserve" text-anchor="middle" x="262" y="-98.75" font-family="Helvetica,sans-Serif" font-size="10.00">copies + standalone config</text>
</g>
<!-- gen_amar -->
<g id="node13" class="node">
<title>gen_amar</title>
<path fill="#c8e6c9" stroke="black" d="M478.62,-52C478.62,-52 385.38,-52 385.38,-52 379.38,-52 373.38,-46 373.38,-40 373.38,-40 373.38,-28 373.38,-28 373.38,-22 379.38,-16 385.38,-16 385.38,-16 478.62,-16 478.62,-16 484.62,-16 490.62,-22 490.62,-28 490.62,-28 490.62,-40 490.62,-40 490.62,-46 484.62,-52 478.62,-52"/>
<text xml:space="preserve" text-anchor="middle" x="432" y="-37.05" font-family="Helvetica,sans-Serif" font-size="11.00">gen/amar/</text>
<text xml:space="preserve" text-anchor="middle" x="432" y="-23.55" font-family="Helvetica,sans-Serif" font-size="11.00">(with amar config)</text>
</g>
<!-- cmd2&#45;&gt;gen_amar -->
<g id="edge11" class="edge">
<title>cmd2&#45;&gt;gen_amar</title>
<path fill="none" stroke="black" d="M518.45,-125.86C501.63,-108.18 475.4,-80.61 456.24,-60.47"/>
<polygon fill="black" stroke="black" points="458.98,-58.28 449.55,-53.45 453.91,-63.1 458.98,-58.28"/>
<text xml:space="preserve" text-anchor="middle" x="553.43" y="-98.75" font-family="Helvetica,sans-Serif" font-size="10.00">copies + amar config</text>
</g>
<!-- cmd3&#45;&gt;gen_standalone -->
<g id="edge12" class="edge">
<title>cmd3&#45;&gt;gen_standalone</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M343.29,-125.84C340.18,-116.72 336.13,-105.41 332,-95.5 327.41,-84.49 321.86,-72.6 316.84,-62.31"/>
<polygon fill="black" stroke="black" points="320.11,-61.02 312.54,-53.61 313.83,-64.13 320.11,-61.02"/>
</g>
<!-- cmd3&#45;&gt;gen_amar -->
<g id="edge13" class="edge">
<title>cmd3&#45;&gt;gen_amar</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M362.34,-125.86C375.71,-108.42 396.46,-81.35 411.84,-61.29"/>
<polygon fill="black" stroke="black" points="414.47,-63.62 417.78,-53.55 408.91,-59.36 414.47,-63.62"/>
</g>
</g>
</svg>