276 lines
28 KiB
XML
276 lines
28 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.2 (0)
|
|
-->
|
|
<!-- Title: data_model Pages: 1 -->
|
|
<svg width="1661pt" height="442pt"
|
|
viewBox="0.00 0.00 1661.00 442.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 437.5)">
|
|
<title>data_model</title>
|
|
<polygon fill="#0a0e17" stroke="none" points="-4,4 -4,-437.5 1656.75,-437.5 1656.75,4 -4,4"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="826.38" y="-414.3" font-family="Helvetica,sans-Serif" font-size="16.00" fill="#0066ff">Data Model</text>
|
|
<!-- MediaAsset -->
|
|
<g id="node1" class="node">
|
|
<title>MediaAsset</title>
|
|
<polygon fill="#121829" stroke="none" points="51.12,-176.25 51.12,-276 258.12,-276 258.12,-176.25 51.12,-176.25"/>
|
|
<polygon fill="#0d1a33" stroke="none" points="51.12,-254.25 51.12,-276 258.12,-276 258.12,-254.25 51.12,-254.25"/>
|
|
<polygon fill="none" stroke="#1e2a4a" points="51.12,-254.25 51.12,-276 258.12,-276 258.12,-254.25 51.12,-254.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="123.12" y="-263.55" font-family="JetBrains Mono" font-weight="bold" font-size="11.00" fill="#0066ff">MediaAsset</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="51.12,-234.75 51.12,-254.25 163.62,-254.25 163.62,-234.75 51.12,-234.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="102.5" y="-240.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="163.62,-234.75 163.62,-254.25 258.12,-254.25 258.12,-234.75 163.62,-234.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="188" y="-240.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">UUID PK</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="51.12,-215.25 51.12,-234.75 163.62,-234.75 163.62,-215.25 51.12,-215.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="83.75" y="-221.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">filename</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="163.62,-215.25 163.62,-234.75 258.12,-234.75 258.12,-215.25 163.62,-215.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="203.38" y="-221.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="51.12,-195.75 51.12,-215.25 163.62,-215.25 163.62,-195.75 51.12,-195.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="84.12" y="-201.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">file_path</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="163.62,-195.75 163.62,-215.25 258.12,-215.25 258.12,-195.75 163.62,-195.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="176" y="-201.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str (relative)</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="51.12,-176.25 51.12,-195.75 163.62,-195.75 163.62,-176.25 51.12,-176.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="54.12" y="-182.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">duration / fps / size</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="163.62,-176.25 163.62,-195.75 258.12,-195.75 258.12,-176.25 163.62,-176.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="166.62" y="-182.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">probe metadata</text>
|
|
</g>
|
|
<!-- Timeline -->
|
|
<g id="node3" class="node">
|
|
<title>Timeline</title>
|
|
<polygon fill="#121829" stroke="none" points="423.75,-166.5 423.75,-285.75 619.5,-285.75 619.5,-166.5 423.75,-166.5"/>
|
|
<polygon fill="#0d1a33" stroke="none" points="423.75,-264 423.75,-285.75 619.5,-285.75 619.5,-264 423.75,-264"/>
|
|
<polygon fill="none" stroke="#1e2a4a" points="423.75,-264 423.75,-285.75 619.5,-285.75 619.5,-264 423.75,-264"/>
|
|
<text xml:space="preserve" text-anchor="start" x="498.38" y="-273.3" font-family="JetBrains Mono" font-weight="bold" font-size="11.00" fill="#0066ff">Timeline</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="423.75,-244.5 423.75,-264 516.75,-264 516.75,-244.5 423.75,-244.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="465.38" y="-250.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="516.75,-244.5 516.75,-264 619.5,-264 619.5,-244.5 516.75,-244.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="545.25" y="-250.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">UUID PK</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="423.75,-225 423.75,-244.5 516.75,-244.5 516.75,-225 423.75,-225"/>
|
|
<text xml:space="preserve" text-anchor="start" x="426.75" y="-231.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">source_asset_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="516.75,-225 516.75,-244.5 619.5,-244.5 619.5,-225 516.75,-225"/>
|
|
<text xml:space="preserve" text-anchor="start" x="527.62" y="-231.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK MediaAsset</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="423.75,-205.5 423.75,-225 516.75,-225 516.75,-205.5 423.75,-205.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="436.12" y="-211.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">chunk_paths</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="516.75,-205.5 516.75,-225 619.5,-225 619.5,-205.5 516.75,-205.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="556.12" y="-211.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str[]</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="423.75,-186 423.75,-205.5 516.75,-205.5 516.75,-186 423.75,-186"/>
|
|
<text xml:space="preserve" text-anchor="start" x="435" y="-192.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">profile_name</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="516.75,-186 516.75,-205.5 619.5,-205.5 619.5,-186 516.75,-186"/>
|
|
<text xml:space="preserve" text-anchor="start" x="560.62" y="-192.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="423.75,-166.5 423.75,-186 516.75,-186 516.75,-166.5 423.75,-166.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="439.12" y="-172.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">fps / status</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="516.75,-166.5 516.75,-186 619.5,-186 619.5,-166.5 516.75,-166.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="519.75" y="-172.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">cached, ready, ...</text>
|
|
</g>
|
|
<!-- MediaAsset->Timeline -->
|
|
<g id="edge1" class="edge">
|
|
<title>MediaAsset->Timeline</title>
|
|
<path fill="none" stroke="#4a5568" d="M265.63,-226.12C309.46,-226.12 359.96,-226.12 404.39,-226.12"/>
|
|
<polygon fill="#4a5568" stroke="#4a5568" points="404.33,-229.63 414.33,-226.13 404.33,-222.63 404.33,-229.63"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="362.5" y="-228.82" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">source_asset_id</text>
|
|
</g>
|
|
<!-- Profile -->
|
|
<g id="node2" class="node">
|
|
<title>Profile</title>
|
|
<polygon fill="#121829" stroke="none" points="449.25,-43 449.25,-123.25 594,-123.25 594,-43 449.25,-43"/>
|
|
<polygon fill="#0d1a33" stroke="none" points="449.25,-101.5 449.25,-123.25 594,-123.25 594,-101.5 449.25,-101.5"/>
|
|
<polygon fill="none" stroke="#1e2a4a" points="449.25,-101.5 449.25,-123.25 594,-123.25 594,-101.5 449.25,-101.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="504" y="-110.8" font-family="JetBrains Mono" font-weight="bold" font-size="11.00" fill="#0066ff">Profile</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="449.25,-82 449.25,-101.5 498,-101.5 498,-82 449.25,-82"/>
|
|
<text xml:space="preserve" text-anchor="start" x="458.25" y="-88.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">name</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="498,-82 498,-101.5 594,-101.5 594,-82 498,-82"/>
|
|
<text xml:space="preserve" text-anchor="start" x="538.5" y="-88.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="449.25,-62.5 449.25,-82 498,-82 498,-62.5 449.25,-62.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="452.25" y="-68.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">pipeline</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="498,-62.5 498,-82 594,-82 594,-62.5 498,-62.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="502.88" y="-68.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">JSONB topology</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="449.25,-43 449.25,-62.5 498,-62.5 498,-43 449.25,-43"/>
|
|
<text xml:space="preserve" text-anchor="start" x="454.12" y="-49.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">configs</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="498,-43 498,-62.5 594,-62.5 594,-43 498,-43"/>
|
|
<text xml:space="preserve" text-anchor="start" x="501" y="-49.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">JSONB per-stage</text>
|
|
</g>
|
|
<!-- Job -->
|
|
<g id="node4" class="node">
|
|
<title>Job</title>
|
|
<polygon fill="#121829" stroke="none" points="730,-4 730,-162.25 977.5,-162.25 977.5,-4 730,-4"/>
|
|
<polygon fill="#0d1a33" stroke="none" points="730,-140.5 730,-162.25 977.5,-162.25 977.5,-140.5 730,-140.5"/>
|
|
<polygon fill="none" stroke="#1e2a4a" points="730,-140.5 730,-162.25 977.5,-162.25 977.5,-140.5 730,-140.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="845.12" y="-149.8" font-family="JetBrains Mono" font-weight="bold" font-size="11.00" fill="#0066ff">Job</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="730,-121 730,-140.5 857.5,-140.5 857.5,-121 730,-121"/>
|
|
<text xml:space="preserve" text-anchor="start" x="788.88" y="-127.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="857.5,-121 857.5,-140.5 977.5,-140.5 977.5,-121 857.5,-121"/>
|
|
<text xml:space="preserve" text-anchor="start" x="894.62" y="-127.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">UUID PK</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="730,-101.5 730,-121 857.5,-121 857.5,-101.5 730,-101.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="764.12" y="-107.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">timeline_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="857.5,-101.5 857.5,-121 977.5,-121 977.5,-101.5 857.5,-101.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="885.62" y="-107.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK Timeline</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="730,-82 730,-101.5 857.5,-101.5 857.5,-82 730,-82"/>
|
|
<text xml:space="preserve" text-anchor="start" x="768.25" y="-88.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">parent_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="857.5,-82 857.5,-101.5 977.5,-101.5 977.5,-82 857.5,-82"/>
|
|
<text xml:space="preserve" text-anchor="start" x="863.88" y="-88.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK Job (replay tree)</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="730,-62.5 730,-82 857.5,-82 857.5,-62.5 730,-62.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="758.5" y="-68.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">profile_name</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="857.5,-62.5 857.5,-82 977.5,-82 977.5,-62.5 857.5,-62.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="910" y="-68.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="730,-43 730,-62.5 857.5,-62.5 857.5,-43 730,-43"/>
|
|
<text xml:space="preserve" text-anchor="start" x="748.75" y="-49.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">config_overrides</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="857.5,-43 857.5,-62.5 977.5,-62.5 977.5,-43 857.5,-43"/>
|
|
<text xml:space="preserve" text-anchor="start" x="900.25" y="-49.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">JSONB</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="730,-23.5 730,-43 857.5,-43 857.5,-23.5 730,-23.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="769.75" y="-29.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">run_type</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="857.5,-23.5 857.5,-43 977.5,-43 977.5,-23.5 857.5,-23.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="860.5" y="-29.55" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">initial / replay / retry</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="730,-4 730,-23.5 857.5,-23.5 857.5,-4 730,-4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="733" y="-10.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">status / current_stage</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="857.5,-4 857.5,-23.5 977.5,-23.5 977.5,-4 857.5,-4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="896.12" y="-10.05" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">runtime</text>
|
|
</g>
|
|
<!-- Profile->Job -->
|
|
<g id="edge4" class="edge">
|
|
<title>Profile->Job</title>
|
|
<path fill="none" stroke="#0066ff" d="M601.7,-83.12C634.51,-83.12 673.61,-83.12 711.08,-83.12"/>
|
|
<polygon fill="#0066ff" stroke="#0066ff" points="710.6,-86.63 720.6,-83.13 710.6,-79.63 710.6,-86.63"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="674.75" y="-85.83" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">profile_name</text>
|
|
</g>
|
|
<!-- Timeline->Job -->
|
|
<g id="edge2" class="edge">
|
|
<title>Timeline->Job</title>
|
|
<path fill="none" stroke="#4a5568" d="M627.08,-180.88C654,-169.22 683.41,-156.48 711.85,-144.16"/>
|
|
<polygon fill="#4a5568" stroke="#4a5568" points="713.1,-147.43 720.89,-140.24 710.32,-141.01 713.1,-147.43"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="674.75" y="-174.34" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">timeline_id</text>
|
|
</g>
|
|
<!-- Checkpoint -->
|
|
<g id="node5" class="node">
|
|
<title>Checkpoint</title>
|
|
<polygon fill="#121829" stroke="none" points="1055.75,-116.75 1055.75,-255.5 1310,-255.5 1310,-116.75 1055.75,-116.75"/>
|
|
<polygon fill="#0d1a33" stroke="none" points="1055.75,-233.75 1055.75,-255.5 1310,-255.5 1310,-233.75 1055.75,-233.75"/>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1055.75,-233.75 1055.75,-255.5 1310,-255.5 1310,-233.75 1055.75,-233.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1151.75" y="-243.05" font-family="JetBrains Mono" font-weight="bold" font-size="11.00" fill="#0066ff">Checkpoint</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1055.75,-214.25 1055.75,-233.75 1190.75,-233.75 1190.75,-214.25 1055.75,-214.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1118.38" y="-220.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1190.75,-214.25 1190.75,-233.75 1310,-233.75 1310,-214.25 1190.75,-214.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1227.5" y="-220.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">UUID PK</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1055.75,-194.75 1055.75,-214.25 1190.75,-214.25 1190.75,-194.75 1055.75,-194.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1093.62" y="-200.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">timeline_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1190.75,-194.75 1190.75,-214.25 1310,-214.25 1310,-194.75 1190.75,-194.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1218.5" y="-200.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK Timeline</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1055.75,-175.25 1055.75,-194.75 1190.75,-194.75 1190.75,-175.25 1055.75,-175.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1107.5" y="-181.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">job_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1190.75,-175.25 1190.75,-194.75 1310,-194.75 1310,-175.25 1190.75,-175.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1205.75" y="-181.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK Job (nullable)</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1055.75,-155.75 1055.75,-175.25 1190.75,-175.25 1190.75,-155.75 1055.75,-155.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1097.75" y="-161.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">parent_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1190.75,-155.75 1190.75,-175.25 1310,-175.25 1310,-155.75 1190.75,-155.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1193.75" y="-161.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK Checkpoint (tree)</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1055.75,-136.25 1055.75,-155.75 1190.75,-155.75 1190.75,-136.25 1055.75,-136.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1089.88" y="-142.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">stage_name</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1190.75,-136.25 1190.75,-155.75 1310,-155.75 1310,-136.25 1190.75,-136.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1242.88" y="-142.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1055.75,-116.75 1055.75,-136.25 1190.75,-136.25 1190.75,-116.75 1055.75,-116.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1058.75" y="-122.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">config_overrides / stats</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1190.75,-116.75 1190.75,-136.25 1310,-136.25 1310,-116.75 1190.75,-116.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1203.5" y="-122.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">JSONB (no blobs)</text>
|
|
</g>
|
|
<!-- Timeline->Checkpoint -->
|
|
<g id="edge6" class="edge">
|
|
<title>Timeline->Checkpoint</title>
|
|
<path fill="none" stroke="#4a5568" d="M627.16,-227.73C721.11,-228.26 862.78,-226.78 985.5,-216.12 1002.13,-214.68 1019.49,-212.71 1036.71,-210.47"/>
|
|
<polygon fill="#4a5568" stroke="#4a5568" points="1037.05,-213.95 1046.5,-209.15 1036.12,-207.01 1037.05,-213.95"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="853.75" y="-230.12" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">timeline_id</text>
|
|
</g>
|
|
<!-- Job->Job -->
|
|
<g id="edge3" class="edge">
|
|
<title>Job->Job</title>
|
|
<path fill="none" stroke="#4a5568" stroke-dasharray="5,2" d="M826.82,-166.05C831.41,-176.99 840.39,-184.25 853.75,-184.25 862.73,-184.25 869.72,-180.97 874.74,-175.5"/>
|
|
<polygon fill="#4a5568" stroke="#4a5568" points="877.52,-177.66 879.88,-167.33 871.59,-173.94 877.52,-177.66"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="853.75" y="-198.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">parent_id</text>
|
|
<text xml:space="preserve" text-anchor="middle" x="853.75" y="-186.95" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">(replay tree)</text>
|
|
</g>
|
|
<!-- Job->Checkpoint -->
|
|
<g id="edge5" class="edge">
|
|
<title>Job->Checkpoint</title>
|
|
<path fill="none" stroke="#4a5568" d="M985.45,-124.28C1002.47,-129.64 1019.99,-135.15 1037.22,-140.58"/>
|
|
<polygon fill="#4a5568" stroke="#4a5568" points="1035.87,-143.82 1046.46,-143.49 1037.98,-137.15 1035.87,-143.82"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="1016.62" y="-140.41" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">job_id</text>
|
|
</g>
|
|
<!-- StageOutput -->
|
|
<g id="node6" class="node">
|
|
<title>StageOutput</title>
|
|
<polygon fill="#121829" stroke="none" points="1425,-29.75 1425,-168.5 1644.75,-168.5 1644.75,-29.75 1425,-29.75"/>
|
|
<polygon fill="#0d1a33" stroke="none" points="1425,-146.75 1425,-168.5 1644.75,-168.5 1644.75,-146.75 1425,-146.75"/>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1425,-146.75 1425,-168.5 1644.75,-168.5 1644.75,-146.75 1425,-146.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1499.62" y="-156.05" font-family="JetBrains Mono" font-weight="bold" font-size="11.00" fill="#0066ff">StageOutput</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1425,-127.25 1425,-146.75 1505.25,-146.75 1505.25,-127.25 1425,-127.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1460.25" y="-133.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1505.25,-127.25 1505.25,-146.75 1644.75,-146.75 1644.75,-127.25 1505.25,-127.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1552.12" y="-133.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">UUID PK</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1425,-107.75 1425,-127.25 1505.25,-127.25 1505.25,-107.75 1425,-107.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1449.38" y="-113.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">job_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1505.25,-107.75 1505.25,-127.25 1644.75,-127.25 1644.75,-107.75 1505.25,-107.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1558.12" y="-113.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK Job</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1425,-88.25 1425,-107.75 1505.25,-107.75 1505.25,-88.25 1425,-88.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1435.5" y="-94.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">timeline_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1505.25,-88.25 1505.25,-107.75 1644.75,-107.75 1644.75,-88.25 1505.25,-88.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1543.12" y="-94.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK Timeline</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1425,-68.75 1425,-88.25 1505.25,-88.25 1505.25,-68.75 1425,-68.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1431.75" y="-74.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">stage_name</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1505.25,-68.75 1505.25,-88.25 1644.75,-88.25 1644.75,-68.75 1505.25,-68.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1567.5" y="-74.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1425,-49.25 1425,-68.75 1505.25,-68.75 1505.25,-49.25 1425,-49.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1428" y="-55.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">checkpoint_id</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1505.25,-49.25 1505.25,-68.75 1644.75,-68.75 1644.75,-49.25 1505.25,-49.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1508.25" y="-55.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">FK Checkpoint (nullable)</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1425,-29.75 1425,-49.25 1505.25,-49.25 1505.25,-29.75 1425,-29.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1447.12" y="-35.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">output</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="1505.25,-29.75 1505.25,-49.25 1644.75,-49.25 1644.75,-29.75 1505.25,-29.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1522.88" y="-35.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">JSONB (flat upsert)</text>
|
|
</g>
|
|
<!-- Job->StageOutput -->
|
|
<g id="edge8" class="edge">
|
|
<title>Job->StageOutput</title>
|
|
<path fill="none" stroke="#4a5568" d="M985.05,-85.59C1077.88,-87.42 1205.62,-90.07 1318,-92.88 1346.37,-93.58 1376.84,-94.42 1405.69,-95.25"/>
|
|
<polygon fill="#4a5568" stroke="#4a5568" points="1405.47,-98.74 1415.57,-95.53 1405.67,-91.74 1405.47,-98.74"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="1182.88" y="-95.58" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">job_id</text>
|
|
</g>
|
|
<!-- Checkpoint->Checkpoint -->
|
|
<g id="edge7" class="edge">
|
|
<title>Checkpoint->Checkpoint</title>
|
|
<path fill="none" stroke="#4a5568" stroke-dasharray="5,2" d="M1154.6,-259.25C1159,-270.14 1168.43,-277.5 1182.88,-277.5 1192.58,-277.5 1200.02,-274.18 1205.2,-268.69"/>
|
|
<polygon fill="#4a5568" stroke="#4a5568" points="1207.97,-270.86 1210.35,-260.53 1202.05,-267.12 1207.97,-270.86"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="1182.88" y="-291.45" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">parent_id</text>
|
|
<text xml:space="preserve" text-anchor="middle" x="1182.88" y="-280.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">(tree)</text>
|
|
</g>
|
|
<!-- Checkpoint->StageOutput -->
|
|
<g id="edge9" class="edge">
|
|
<title>Checkpoint->StageOutput</title>
|
|
<path fill="none" stroke="#4a5568" stroke-dasharray="1,5" d="M1317.69,-152.86C1346.78,-145.63 1377.48,-138 1406.32,-130.83"/>
|
|
<polygon fill="#4a5568" stroke="#4a5568" points="1406.95,-134.28 1415.81,-128.47 1405.26,-127.49 1406.95,-134.28"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="1367.5" y="-150.53" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8892a8">checkpoint_id</text>
|
|
</g>
|
|
<!-- Brand -->
|
|
<g id="node7" class="node">
|
|
<title>Brand</title>
|
|
<polygon fill="#121829" stroke="none" points="8,-302.25 8,-402 301.25,-402 301.25,-302.25 8,-302.25"/>
|
|
<polygon fill="#0d1a33" stroke="none" points="8,-380.25 8,-402 301.25,-402 301.25,-380.25 8,-380.25"/>
|
|
<polygon fill="none" stroke="#1e2a4a" points="8,-380.25 8,-402 301.25,-402 301.25,-380.25 8,-380.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="138.12" y="-389.55" font-family="JetBrains Mono" font-weight="bold" font-size="11.00" fill="#0066ff">Brand</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="8,-360.75 8,-380.25 101.75,-380.25 101.75,-360.75 8,-360.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="11" y="-366.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">canonical_name</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="101.75,-360.75 101.75,-380.25 301.25,-380.25 301.25,-360.75 101.75,-360.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="166.25" y="-366.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str (indexed)</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="8,-341.25 8,-360.75 101.75,-360.75 101.75,-341.25 8,-341.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="35.75" y="-347.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">aliases</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="101.75,-341.25 101.75,-360.75 301.25,-360.75 301.25,-341.25 101.75,-341.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="189.5" y="-347.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">str[]</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="8,-321.75 8,-341.25 101.75,-341.25 101.75,-321.75 8,-321.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="36.5" y="-327.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">source</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="101.75,-321.75 101.75,-341.25 301.25,-341.25 301.25,-321.75 101.75,-321.75"/>
|
|
<text xml:space="preserve" text-anchor="start" x="104.75" y="-327.8" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">ocr / local_vlm / cloud_llm / manual</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="8,-302.25 8,-321.75 101.75,-321.75 101.75,-302.25 8,-302.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="36.5" y="-308.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#8892a8">airings</text>
|
|
<polygon fill="none" stroke="#1e2a4a" points="101.75,-302.25 101.75,-321.75 301.25,-321.75 301.25,-302.25 101.75,-302.25"/>
|
|
<text xml:space="preserve" text-anchor="start" x="179.75" y="-308.3" font-family="Helvetica,sans-Serif" font-size="11.00" fill="#e8eaf0">JSONB[]</text>
|
|
</g>
|
|
</g>
|
|
</svg>
|