2237 lines
260 KiB
XML
2237 lines
260 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 16.1.0 (0)
|
|
-->
|
|
<!-- Title: automats Pages: 1 -->
|
|
<svg width="8916pt" height="2129pt"
|
|
viewBox="0.00 0.00 8916.00 2129.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background-color:#1e2430;">
|
|
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(36 2092.9)">
|
|
<title>automats</title>
|
|
<polygon fill="#1e2430" stroke="none" points="-36,36 -36,-2092.9 8879.76,-2092.9 8879.76,36 -36,36"/>
|
|
<g id="clust1" class="cluster">
|
|
<title>cluster_session_realtime</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M4581.76,-1554C4581.76,-1554 5270.76,-1554 5270.76,-1554 5276.76,-1554 5282.76,-1560 5282.76,-1566 5282.76,-1566 5282.76,-1863 5282.76,-1863 5282.76,-1869 5276.76,-1875 5270.76,-1875 5270.76,-1875 4581.76,-1875 4581.76,-1875 4575.76,-1875 4569.76,-1869 4569.76,-1863 4569.76,-1863 4569.76,-1566 4569.76,-1566 4569.76,-1560 4575.76,-1554 4581.76,-1554"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="4664.04" y="-1857.5" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Session & Real-Time Hub</text>
|
|
</g>
|
|
<g id="clust2" class="cluster">
|
|
<title>cluster_catalog_products</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M3015.76,-561.6C3015.76,-561.6 3988.76,-561.6 3988.76,-561.6 3994.76,-561.6 4000.76,-567.6 4000.76,-573.6 4000.76,-573.6 4000.76,-1841 4000.76,-1841 4000.76,-1847 3994.76,-1853 3988.76,-1853 3988.76,-1853 3015.76,-1853 3015.76,-1853 3009.76,-1853 3003.76,-1847 3003.76,-1841 3003.76,-1841 3003.76,-573.6 3003.76,-573.6 3003.76,-567.6 3009.76,-561.6 3015.76,-561.6"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="3076.37" y="-1835.5" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Catalog & Products</text>
|
|
</g>
|
|
<g id="clust3" class="cluster">
|
|
<title>cluster_search_indexing</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M3403.76,-8C3403.76,-8 3715.76,-8 3715.76,-8 3721.76,-8 3727.76,-14 3727.76,-20 3727.76,-20 3727.76,-508.8 3727.76,-508.8 3727.76,-514.8 3721.76,-520.8 3715.76,-520.8 3715.76,-520.8 3403.76,-520.8 3403.76,-520.8 3397.76,-520.8 3391.76,-514.8 3391.76,-508.8 3391.76,-508.8 3391.76,-20 3391.76,-20 3391.76,-14 3397.76,-8 3403.76,-8"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="3461.05" y="-503.3" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Search & Indexing</text>
|
|
</g>
|
|
<g id="clust4" class="cluster">
|
|
<title>cluster_properties_attributes</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M6770.76,-1587C6770.76,-1587 7460.76,-1587 7460.76,-1587 7466.76,-1587 7472.76,-1593 7472.76,-1599 7472.76,-1599 7472.76,-1830 7472.76,-1830 7472.76,-1836 7466.76,-1842 7460.76,-1842 7460.76,-1842 6770.76,-1842 6770.76,-1842 6764.76,-1842 6758.76,-1836 6758.76,-1830 6758.76,-1830 6758.76,-1599 6758.76,-1599 6758.76,-1593 6764.76,-1587 6770.76,-1587"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="6841.79" y="-1824.5" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Properties & Attributes</text>
|
|
</g>
|
|
<g id="clust5" class="cluster">
|
|
<title>cluster_purchasing_logistics</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M70.76,-583.6C70.76,-583.6 765.76,-583.6 765.76,-583.6 771.76,-583.6 777.76,-589.6 777.76,-595.6 777.76,-595.6 777.76,-1139.4 777.76,-1139.4 777.76,-1145.4 771.76,-1151.4 765.76,-1151.4 765.76,-1151.4 70.76,-1151.4 70.76,-1151.4 64.76,-1151.4 58.76,-1145.4 58.76,-1139.4 58.76,-1139.4 58.76,-595.6 58.76,-595.6 58.76,-589.6 64.76,-583.6 70.76,-583.6"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="140.12" y="-1133.9" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Suppliers & Deliveries</text>
|
|
</g>
|
|
<g id="clust6" class="cluster">
|
|
<title>cluster_sales_crm</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M6127.76,-896.4C6127.76,-896.4 6705.76,-896.4 6705.76,-896.4 6711.76,-896.4 6717.76,-902.4 6717.76,-908.4 6717.76,-908.4 6717.76,-1808 6717.76,-1808 6717.76,-1814 6711.76,-1820 6705.76,-1820 6705.76,-1820 6127.76,-1820 6127.76,-1820 6121.76,-1820 6115.76,-1814 6115.76,-1808 6115.76,-1808 6115.76,-908.4 6115.76,-908.4 6115.76,-902.4 6121.76,-896.4 6127.76,-896.4"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="6168.77" y="-1802.5" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Sales & CRM</text>
|
|
</g>
|
|
<g id="clust7" class="cluster">
|
|
<title>cluster_inventory_storage</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M7523.76,-1587C7523.76,-1587 7809.76,-1587 7809.76,-1587 7815.76,-1587 7821.76,-1593 7821.76,-1599 7821.76,-1599 7821.76,-1830 7821.76,-1830 7821.76,-1836 7815.76,-1842 7809.76,-1842 7809.76,-1842 7523.76,-1842 7523.76,-1842 7517.76,-1842 7511.76,-1836 7511.76,-1830 7511.76,-1830 7511.76,-1599 7511.76,-1599 7511.76,-1593 7517.76,-1587 7523.76,-1587"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="7603.97" y="-1824.5" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Inventory & Warehousing</text>
|
|
</g>
|
|
<g id="clust8" class="cluster">
|
|
<title>cluster_finance_config</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M1879.76,-1587C1879.76,-1587 2843.76,-1587 2843.76,-1587 2849.76,-1587 2855.76,-1593 2855.76,-1599 2855.76,-1599 2855.76,-1830 2855.76,-1830 2855.76,-1836 2849.76,-1842 2843.76,-1842 2843.76,-1842 1879.76,-1842 1879.76,-1842 1873.76,-1842 1867.76,-1836 1867.76,-1830 1867.76,-1830 1867.76,-1599 1867.76,-1599 1867.76,-1593 1873.76,-1587 1879.76,-1587"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="1943.71" y="-1824.5" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Company & Finance</text>
|
|
</g>
|
|
<g id="clust9" class="cluster">
|
|
<title>cluster_hardware_pos</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M2113.76,-1225.2C2113.76,-1225.2 2383.76,-1225.2 2383.76,-1225.2 2389.76,-1225.2 2395.76,-1231.2 2395.76,-1237.2 2395.76,-1237.2 2395.76,-1468.2 2395.76,-1468.2 2395.76,-1474.2 2389.76,-1480.2 2383.76,-1480.2 2383.76,-1480.2 2113.76,-1480.2 2113.76,-1480.2 2107.76,-1480.2 2101.76,-1474.2 2101.76,-1468.2 2101.76,-1468.2 2101.76,-1237.2 2101.76,-1237.2 2101.76,-1231.2 2107.76,-1225.2 2113.76,-1225.2"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="2167.28" y="-1462.7" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">POS & Hardware</text>
|
|
</g>
|
|
<g id="clust10" class="cluster">
|
|
<title>cluster_ai_workspace</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M4897.76,-1192.2C4897.76,-1192.2 5639.76,-1192.2 5639.76,-1192.2 5645.76,-1192.2 5651.76,-1198.2 5651.76,-1204.2 5651.76,-1204.2 5651.76,-1501.2 5651.76,-1501.2 5651.76,-1507.2 5645.76,-1513.2 5639.76,-1513.2 5639.76,-1513.2 4897.76,-1513.2 4897.76,-1513.2 4891.76,-1513.2 4885.76,-1507.2 4885.76,-1501.2 4885.76,-1501.2 4885.76,-1204.2 4885.76,-1204.2 4885.76,-1198.2 4891.76,-1192.2 4897.76,-1192.2"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="4980.04" y="-1495.7" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">AI Assistant & Workspace</text>
|
|
</g>
|
|
<g id="clust11" class="cluster">
|
|
<title>cluster_audit_grids</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M7873.76,-1609C7873.76,-1609 8823.76,-1609 8823.76,-1609 8829.76,-1609 8835.76,-1615 8835.76,-1621 8835.76,-1621 8835.76,-1808 8835.76,-1808 8835.76,-1814 8829.76,-1820 8823.76,-1820 8823.76,-1820 7873.76,-1820 7873.76,-1820 7867.76,-1820 7861.76,-1814 7861.76,-1808 7861.76,-1808 7861.76,-1621 7861.76,-1621 7861.76,-1615 7867.76,-1609 7873.76,-1609"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="7937.28" y="-1802.5" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">Audit & Virtual Grids</text>
|
|
</g>
|
|
<g id="clust12" class="cluster">
|
|
<title>cluster_system_ui</title>
|
|
<path fill="#202a3a" stroke="#3f4c5f" d="M131.76,-1214.2C131.76,-1214.2 1430.76,-1214.2 1430.76,-1214.2 1436.76,-1214.2 1442.76,-1220.2 1442.76,-1226.2 1442.76,-1226.2 1442.76,-1843.3 1442.76,-1843.3 1442.76,-1849.3 1436.76,-1855.3 1430.76,-1855.3 1430.76,-1855.3 131.76,-1855.3 131.76,-1855.3 125.76,-1855.3 119.76,-1849.3 119.76,-1843.3 119.76,-1843.3 119.76,-1226.2 119.76,-1226.2 119.76,-1220.2 125.76,-1214.2 131.76,-1214.2"/>
|
|
<text xml:space="preserve" text-anchor="middle" x="200.7" y="-1837.8" font-family="Helvetica,sans-Serif" font-size="15.00" fill="#e2e8f0">UI, Settings & System</text>
|
|
</g>
|
|
<!-- authAutomat -->
|
|
<g id="node1" class="node">
|
|
<title>authAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="4591.44,-1772 4591.44,-1803 4856.07,-1803 4856.07,-1772 4591.44,-1772"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1772 4591.44,-1803 4856.07,-1803 4856.07,-1772 4591.44,-1772"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4686.76" y="-1788.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">authAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4658.23" y="-1778.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Session & Multi-Tenant Gateway</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4591.44,-1750 4591.44,-1772 4856.07,-1772 4856.07,-1750 4591.44,-1750"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1750 4591.44,-1772 4856.07,-1772 4856.07,-1750 4591.44,-1750"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="4592.44,-1751 4592.44,-1771 4653.67,-1771 4653.67,-1751 4592.44,-1751"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4609.95" y="-1759.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4657.67" y="-1759" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">user: AuthUser</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4764.37" y="-1757.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Current user & company</text>
|
|
<polygon fill="#272e3d" stroke="none" points="4591.44,-1728 4591.44,-1750 4856.07,-1750 4856.07,-1728 4591.44,-1728"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1728 4591.44,-1750 4856.07,-1750 4856.07,-1728 4591.44,-1728"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="4592.44,-1729 4592.44,-1749 4666.74,-1749 4666.74,-1729 4592.44,-1729"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4616.48" y="-1737.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4670.74" y="-1737" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">status</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4760.79" y="-1735.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">'anon' | 'authed' | 'loading'</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4591.44,-1706 4591.44,-1728 4856.07,-1728 4856.07,-1706 4591.44,-1706"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1706 4591.44,-1728 4856.07,-1728 4856.07,-1706 4591.44,-1706"/>
|
|
<polygon fill="#143826" stroke="none" points="4592.44,-1707 4592.44,-1727 4647.53,-1727 4647.53,-1707 4592.44,-1707"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4604.65" y="-1715.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4651.53" y="-1715" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">bootstrapSession()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4764.81" y="-1713.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Restore or fetch session</text>
|
|
<polygon fill="#272e3d" stroke="none" points="4591.44,-1684 4591.44,-1706 4856.07,-1706 4856.07,-1684 4591.44,-1684"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1684 4591.44,-1706 4856.07,-1706 4856.07,-1684 4591.44,-1684"/>
|
|
<polygon fill="#143826" stroke="none" points="4592.44,-1685 4592.44,-1705 4653.83,-1705 4653.83,-1685 4592.44,-1685"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4607.8" y="-1693.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4657.83" y="-1693" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">switchCompany(id)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4784.82" y="-1691.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Multi-tenant switch</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4591.44,-1662 4591.44,-1684 4856.07,-1684 4856.07,-1662 4591.44,-1662"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1662 4591.44,-1684 4856.07,-1684 4856.07,-1662 4591.44,-1662"/>
|
|
<polygon fill="#143826" stroke="none" points="4592.44,-1663 4592.44,-1683 4669.65,-1683 4669.65,-1663 4592.44,-1663"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4615.71" y="-1671.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4673.65" y="-1671" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">logout()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4777.26" y="-1669.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Clear session cookie</text>
|
|
<polygon fill="#272e3d" stroke="none" points="4591.44,-1640 4591.44,-1662 4856.07,-1662 4856.07,-1640 4591.44,-1640"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1640 4591.44,-1662 4856.07,-1662 4856.07,-1640 4591.44,-1640"/>
|
|
<polygon fill="#182b40" stroke="none" points="4592.44,-1641 4592.44,-1661 4644.74,-1661 4644.74,-1641 4592.44,-1641"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4602.81" y="-1649.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4648.74" y="-1649" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectSelectedCompanyId()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4795.93" y="-1647.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Tenant selector</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4591.44,-1618 4591.44,-1640 4856.07,-1640 4856.07,-1618 4591.44,-1618"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1618 4591.44,-1640 4856.07,-1640 4856.07,-1618 4591.44,-1618"/>
|
|
<polygon fill="#382414" stroke="none" points="4592.44,-1619 4592.44,-1639 4640.44,-1639 4640.44,-1619 4592.44,-1619"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4604.44" y="-1627.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fb923c">HOOK</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4644.44" y="-1627" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">auth/sessionEstablished</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4769.7" y="-1625.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Session ready lifecycle</text>
|
|
<polygon fill="#272e3d" stroke="none" points="4591.44,-1596 4591.44,-1618 4856.07,-1618 4856.07,-1596 4591.44,-1596"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1596 4591.44,-1618 4856.07,-1618 4856.07,-1596 4591.44,-1596"/>
|
|
<polygon fill="#382414" stroke="none" points="4592.44,-1597 4592.44,-1617 4641.19,-1617 4641.19,-1597 4592.44,-1597"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4604.81" y="-1605.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fb923c">HOOK</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4645.19" y="-1605" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">auth/companyChanged</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4765.24" y="-1603.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company change signal</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4591.44,-1574 4591.44,-1596 4856.07,-1596 4856.07,-1574 4591.44,-1574"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4591.44,-1574 4591.44,-1596 4856.07,-1596 4856.07,-1574 4591.44,-1574"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="4592.44,-1575 4592.44,-1595 4646.04,-1595 4646.04,-1575 4592.44,-1575"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4612.57" y="-1583.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4650.04" y="-1583" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/auth/session</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4773.7" y="-1581.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Cookie session check</text>
|
|
</g>
|
|
<!-- sseAutomat -->
|
|
<g id="node2" class="node">
|
|
<title>sseAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="5022.83,-1770 5022.83,-1805 5260.68,-1805 5260.68,-1770 5022.83,-1770"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1770 5022.83,-1805 5260.68,-1805 5260.68,-1770 5022.83,-1770"/>
|
|
<polygon fill="#33415c" stroke="none" points="5024.83,-1799 5024.83,-1803 5141.76,-1803 5141.76,-1799 5024.83,-1799"/>
|
|
<polygon fill="#33415c" stroke="none" points="5141.76,-1799 5141.76,-1803 5258.68,-1803 5258.68,-1799 5141.76,-1799"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5107.41" y="-1786.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">sseAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5073.72" y="-1776.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Single Persistent SSE Connection</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5022.83,-1748 5022.83,-1770 5260.68,-1770 5260.68,-1748 5022.83,-1748"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1748 5022.83,-1770 5260.68,-1770 5260.68,-1748 5022.83,-1748"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="5023.83,-1749 5023.83,-1769 5097.15,-1769 5097.15,-1749 5023.83,-1749"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5047.38" y="-1757.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5101.15" y="-1757" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">status</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5189.24" y="-1755.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">'connected' | 'error'</text>
|
|
<polygon fill="#272e3d" stroke="none" points="5022.83,-1726 5022.83,-1748 5260.68,-1748 5260.68,-1726 5022.83,-1726"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1726 5022.83,-1748 5260.68,-1748 5260.68,-1726 5022.83,-1726"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="5023.83,-1727 5023.83,-1747 5075.54,-1747 5075.54,-1727 5023.83,-1727"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5036.58" y="-1735.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5079.54" y="-1735" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">clientId (cid)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5153.86" y="-1733.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Tab-scoped UUID in session</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5022.83,-1704 5022.83,-1726 5260.68,-1726 5260.68,-1704 5022.83,-1704"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1704 5022.83,-1726 5260.68,-1726 5260.68,-1704 5022.83,-1704"/>
|
|
<polygon fill="#143826" stroke="none" points="5023.83,-1705 5023.83,-1725 5080.88,-1725 5080.88,-1705 5023.83,-1705"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5037.02" y="-1713.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5084.88" y="-1713" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reconnect()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5165.42" y="-1711.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Cycle on company switch</text>
|
|
<polygon fill="#272e3d" stroke="none" points="5022.83,-1682 5022.83,-1704 5260.68,-1704 5260.68,-1682 5022.83,-1682"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1682 5022.83,-1704 5260.68,-1704 5260.68,-1682 5022.83,-1682"/>
|
|
<polygon fill="#143826" stroke="none" points="5023.83,-1683 5023.83,-1703 5073.25,-1703 5073.25,-1683 5023.83,-1683"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5033.21" y="-1691.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5077.25" y="-1691" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">on(event, handler)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5174.75" y="-1689.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Register signal listener</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5022.83,-1660 5022.83,-1682 5260.68,-1682 5260.68,-1660 5022.83,-1660"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1660 5022.83,-1682 5260.68,-1682 5260.68,-1660 5022.83,-1660"/>
|
|
<polygon fill="#143826" stroke="none" points="5023.83,-1661 5023.83,-1681 5077.76,-1681 5077.76,-1661 5023.83,-1661"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5035.47" y="-1669.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5081.76" y="-1669" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">watchArticle(sku)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5184.98" y="-1667.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Attach article-<sku></text>
|
|
<polygon fill="#272e3d" stroke="none" points="5022.83,-1638 5022.83,-1660 5260.68,-1660 5260.68,-1638 5022.83,-1638"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1638 5022.83,-1660 5260.68,-1660 5260.68,-1638 5022.83,-1638"/>
|
|
<polygon fill="#182b40" stroke="none" points="5023.83,-1639 5023.83,-1659 5071.83,-1659 5071.83,-1639 5023.83,-1639"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5032.05" y="-1647.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5075.83" y="-1647" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">invalidateArticle(sku)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5184.98" y="-1645.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Silent cache refresh</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5022.83,-1616 5022.83,-1638 5260.68,-1638 5260.68,-1616 5022.83,-1616"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1616 5022.83,-1638 5260.68,-1638 5260.68,-1616 5022.83,-1616"/>
|
|
<polygon fill="#3a181e" stroke="none" points="5023.83,-1617 5023.83,-1637 5072.01,-1637 5072.01,-1617 5023.83,-1617"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5039.92" y="-1625.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5076.01" y="-1625" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">category / articles</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5169.41" y="-1623.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Catalog mutation events</text>
|
|
<polygon fill="#272e3d" stroke="none" points="5022.83,-1594 5022.83,-1616 5260.68,-1616 5260.68,-1594 5022.83,-1594"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1594 5022.83,-1616 5260.68,-1616 5260.68,-1594 5022.83,-1594"/>
|
|
<polygon fill="#3a181e" stroke="none" points="5023.83,-1595 5023.83,-1615 5082.25,-1615 5082.25,-1595 5023.83,-1595"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5045.04" y="-1603.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5086.25" y="-1603" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">order / shipment</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5193.43" y="-1601.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fulfillment events</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5022.83,-1572 5022.83,-1594 5260.68,-1594 5260.68,-1572 5022.83,-1572"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5022.83,-1572 5022.83,-1594 5260.68,-1594 5260.68,-1572 5022.83,-1572"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="5023.83,-1573 5023.83,-1593 5083.36,-1593 5083.36,-1573 5023.83,-1573"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5046.93" y="-1581.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5087.36" y="-1581" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/events</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5193.44" y="-1579.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Persistent stream</text>
|
|
</g>
|
|
<!-- authAutomat->sseAutomat -->
|
|
<g id="edge1" class="edge">
|
|
<title>authAutomat:e->sseAutomat:n</title>
|
|
<g id="a_edge1"><a xlink:title="authAutomat → sseAutomat (bind session & cid)">
|
|
<path fill="none" stroke="#5aa7ff" stroke-width="1.4" d="M4857.07,-1607C4912.65,-1607 4940.64,-1587.19 4980.72,-1625.7 5038.59,-1681.3 4953.34,-1751.45 5014.83,-1803 5034.69,-1819.65 5070.37,-1830.73 5080.53,-1814.87"/>
|
|
<polygon fill="#5aa7ff" stroke="#5aa7ff" stroke-width="1.4" points="5083.42,-1813.44 5082.77,-1806.05 5078.67,-1812.23 5083.42,-1813.44"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4939.45" y="-1628.4" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#5aa7ff">  bind session & cid  </text>
|
|
</g>
|
|
<!-- categoryAutomat -->
|
|
<g id="node3" class="node">
|
|
<title>categoryAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="3066,-1057.4 3066,-1092.4 3341.51,-1092.4 3341.51,-1057.4 3066,-1057.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-1057.4 3066,-1092.4 3341.51,-1092.4 3341.51,-1057.4 3066,-1057.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="3068,-1086.4 3068,-1090.4 3106.79,-1090.4 3106.79,-1086.4 3068,-1086.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="3106.79,-1086.4 3106.79,-1090.4 3145.58,-1090.4 3145.58,-1086.4 3106.79,-1086.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="3145.58,-1086.4 3145.58,-1090.4 3184.36,-1090.4 3184.36,-1086.4 3145.58,-1086.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="3184.36,-1086.4 3184.36,-1090.4 3223.15,-1090.4 3223.15,-1086.4 3184.36,-1086.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="3223.15,-1086.4 3223.15,-1090.4 3261.94,-1090.4 3261.94,-1086.4 3223.15,-1086.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="3261.94,-1086.4 3261.94,-1090.4 3300.72,-1090.4 3300.72,-1086.4 3261.94,-1086.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="3300.72,-1086.4 3300.72,-1090.4 3339.51,-1090.4 3339.51,-1086.4 3300.72,-1086.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3154.41" y="-1073.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">categoryAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3149.99" y="-1064.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Hierarchical Category Tree</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3066,-1035.4 3066,-1057.4 3341.51,-1057.4 3341.51,-1035.4 3066,-1035.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-1035.4 3066,-1057.4 3341.51,-1057.4 3341.51,-1035.4 3066,-1035.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3067,-1036.4 3067,-1056.4 3129,-1056.4 3129,-1036.4 3067,-1036.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3084.89" y="-1045" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3133" y="-1044.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">categories: Map</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3245.14" y="-1043.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">ID -> Category Node Map</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3066,-1013.4 3066,-1035.4 3341.51,-1035.4 3341.51,-1013.4 3066,-1013.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-1013.4 3066,-1035.4 3341.51,-1035.4 3341.51,-1013.4 3066,-1013.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3067,-1014.4 3067,-1034.4 3134.12,-1034.4 3134.12,-1014.4 3067,-1014.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3087.45" y="-1023" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3138.12" y="-1022.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">rootCategoryId</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3256.02" y="-1021.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company root node ID</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3066,-991.4 3066,-1013.4 3341.51,-1013.4 3341.51,-991.4 3066,-991.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-991.4 3066,-1013.4 3341.51,-1013.4 3341.51,-991.4 3066,-991.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3067,-992.4 3067,-1012.4 3144.05,-1012.4 3144.05,-992.4 3067,-992.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3092.41" y="-1001" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3148.05" y="-1000.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">articleCount</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3272.48" y="-999.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Total parent items</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3066,-969.4 3066,-991.4 3341.51,-991.4 3341.51,-969.4 3066,-969.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-969.4 3066,-991.4 3341.51,-991.4 3341.51,-969.4 3066,-969.4"/>
|
|
<polygon fill="#143826" stroke="none" points="3067,-970.4 3067,-990.4 3139.53,-990.4 3139.53,-970.4 3067,-970.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3087.94" y="-979" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3143.53" y="-978.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">loadTree()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3248.93" y="-977.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch tree & warm views</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3066,-947.4 3066,-969.4 3341.51,-969.4 3341.51,-947.4 3066,-947.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-947.4 3066,-969.4 3341.51,-969.4 3341.51,-947.4 3066,-947.4"/>
|
|
<polygon fill="#143826" stroke="none" points="3067,-948.4 3067,-968.4 3138.78,-968.4 3138.78,-948.4 3067,-948.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3087.56" y="-957" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3142.78" y="-956.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">createCategory()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3277.81" y="-955.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Insert child node</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3066,-925.4 3066,-947.4 3341.51,-947.4 3341.51,-925.4 3066,-925.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-925.4 3066,-947.4 3341.51,-947.4 3341.51,-925.4 3066,-925.4"/>
|
|
<polygon fill="#143826" stroke="none" points="3067,-926.4 3067,-946.4 3137.37,-946.4 3137.37,-926.4 3067,-926.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3086.86" y="-935" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3141.37" y="-934.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">moveCategory()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3270.24" y="-933.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Parent reparenting</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3066,-903.4 3066,-925.4 3341.51,-925.4 3341.51,-903.4 3066,-903.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-903.4 3066,-925.4 3341.51,-925.4 3341.51,-903.4 3066,-903.4"/>
|
|
<polygon fill="#143826" stroke="none" points="3067,-904.4 3067,-924.4 3141.79,-924.4 3141.79,-904.4 3067,-904.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3089.06" y="-913" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3145.79" y="-912.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">deleteCategory()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3286.26" y="-911.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Prune subtree</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3066,-881.4 3066,-903.4 3341.51,-903.4 3341.51,-881.4 3066,-881.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-881.4 3066,-903.4 3341.51,-903.4 3341.51,-881.4 3066,-881.4"/>
|
|
<polygon fill="#182b40" stroke="none" points="3067,-882.4 3067,-902.4 3115,-902.4 3115,-882.4 3067,-882.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3075.22" y="-891" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3119" y="-890.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">getCategoryBreadcrumbs()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3256.48" y="-889.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Hierarchical path trace</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3066,-859.4 3066,-881.4 3341.51,-881.4 3341.51,-859.4 3066,-859.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3066,-859.4 3066,-881.4 3341.51,-881.4 3341.51,-859.4 3066,-859.4"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="3067,-860.4 3067,-880.4 3133.52,-880.4 3133.52,-860.4 3067,-860.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3093.59" y="-869" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3137.52" y="-868.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/category</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3267.59" y="-867.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Recursive tree load</text>
|
|
</g>
|
|
<!-- authAutomat->categoryAutomat -->
|
|
<g id="edge3" class="edge">
|
|
<title>authAutomat:w->categoryAutomat:n</title>
|
|
<g id="a_edge3"><a xlink:title="authAutomat → categoryAutomat (sync tree on authed)">
|
|
<path fill="none" stroke="#f5c15c" stroke-width="1.4" d="M4590.44,-1629C4333.74,-1629 4273.79,-1572.48 4017.76,-1554 3315.96,-1503.34 3137.61,-1564.96 2434.76,-1532 2374.63,-1529.18 2359.89,-1523.93 2299.76,-1521.2 2289.71,-1520.74 1582.77,-1520.35 1575.7,-1513.2 1464.85,-1401.12 1459.83,-1230.04 1600.76,-1159.4 1619.06,-1150.23 2317.3,-1152.16 2337.76,-1151.4 2387.79,-1149.54 3199.63,-1144.44 3275.63,-1098.48"/>
|
|
<polygon fill="#f5c15c" stroke="#f5c15c" stroke-width="1.4" points="3277.52,-1100.04 3280,-1093.05 3273.71,-1096.97 3277.52,-1100.04"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="1620.23" y="-1324" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#f5c15c">  sync tree on authed  </text>
|
|
</g>
|
|
<!-- brandAutomat -->
|
|
<g id="node7" class="node">
|
|
<title>brandAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="3394.33,-1748 3394.33,-1783 3669.18,-1783 3669.18,-1748 3394.33,-1748"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3394.33,-1748 3394.33,-1783 3669.18,-1783 3669.18,-1748 3394.33,-1748"/>
|
|
<polygon fill="#33415c" stroke="none" points="3396.33,-1777 3396.33,-1781 3531.76,-1781 3531.76,-1777 3396.33,-1777"/>
|
|
<polygon fill="#33415c" stroke="none" points="3531.76,-1777 3531.76,-1781 3667.18,-1781 3667.18,-1777 3531.76,-1777"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3490.76" y="-1764.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">brandAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3480.48" y="-1754.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Catalog Brands & Makers</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3394.33,-1726 3394.33,-1748 3669.18,-1748 3669.18,-1726 3394.33,-1726"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3394.33,-1726 3394.33,-1748 3669.18,-1748 3669.18,-1726 3394.33,-1726"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3395.33,-1727 3395.33,-1747 3458.3,-1747 3458.3,-1727 3395.33,-1727"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3413.7" y="-1735.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3462.3" y="-1735" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">brands: Brand[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3575.23" y="-1733.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Decoupled brand catalog</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3394.33,-1704 3394.33,-1726 3669.18,-1726 3669.18,-1704 3394.33,-1704"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3394.33,-1704 3394.33,-1726 3669.18,-1726 3669.18,-1704 3394.33,-1704"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3395.33,-1705 3395.33,-1725 3452.75,-1725 3452.75,-1705 3395.33,-1705"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3410.93" y="-1713.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3456.75" y="-1713" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">filteredBrands: Brand[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3593.04" y="-1711.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Filtered search slice</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3394.33,-1682 3394.33,-1704 3669.18,-1704 3669.18,-1682 3394.33,-1682"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3394.33,-1682 3394.33,-1704 3669.18,-1704 3669.18,-1682 3394.33,-1682"/>
|
|
<polygon fill="#143826" stroke="none" points="3395.33,-1683 3395.33,-1703 3469.08,-1703 3469.08,-1683 3395.33,-1683"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3416.87" y="-1691.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3473.08" y="-1691" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load(silent)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3585.92" y="-1689.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Deduplicated list fetch</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3394.33,-1660 3394.33,-1682 3669.18,-1682 3669.18,-1660 3394.33,-1660"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3394.33,-1660 3394.33,-1682 3669.18,-1682 3669.18,-1660 3394.33,-1660"/>
|
|
<polygon fill="#143826" stroke="none" points="3395.33,-1661 3395.33,-1681 3464.63,-1681 3464.63,-1661 3395.33,-1661"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3414.65" y="-1669.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3468.63" y="-1669" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">create() / rename()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3605.93" y="-1667.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Brand mutations</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3394.33,-1638 3394.33,-1660 3669.18,-1660 3669.18,-1638 3394.33,-1638"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3394.33,-1638 3394.33,-1660 3669.18,-1660 3669.18,-1638 3394.33,-1638"/>
|
|
<polygon fill="#143826" stroke="none" points="3395.33,-1639 3395.33,-1659 3443.33,-1659 3443.33,-1639 3395.33,-1639"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3404" y="-1647.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3447.33" y="-1647" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">addImage() / deleteImage()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3581.47" y="-1645.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Brand logo AVIF image</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3394.33,-1616 3394.33,-1638 3669.18,-1638 3669.18,-1616 3394.33,-1616"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3394.33,-1616 3394.33,-1638 3669.18,-1638 3669.18,-1616 3394.33,-1616"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="3395.33,-1617 3395.33,-1637 3460.04,-1637 3460.04,-1617 3395.33,-1617"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3421.02" y="-1625.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3464.04" y="-1625" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/brand</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3576.57" y="-1623.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Paginated brand records</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3394.33,-1594 3394.33,-1616 3669.18,-1616 3669.18,-1594 3394.33,-1594"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3394.33,-1594 3394.33,-1616 3669.18,-1616 3669.18,-1594 3394.33,-1594"/>
|
|
<polygon fill="#3a181e" stroke="none" points="3395.33,-1595 3395.33,-1615 3471.82,-1615 3471.82,-1595 3395.33,-1595"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3425.57" y="-1603.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3475.82" y="-1603" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">brand</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3568.57" y="-1601.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">SSE signal with sender tab</text>
|
|
</g>
|
|
<!-- authAutomat->brandAutomat -->
|
|
<g id="edge4" class="edge">
|
|
<title>authAutomat:w->brandAutomat:n</title>
|
|
<g id="a_edge4"><a xlink:title="authAutomat → brandAutomat (sync brands on authed)">
|
|
<path fill="none" stroke="#ff7fc2" stroke-width="1.4" d="M4590.44,-1629C4317.33,-1629 4286.18,-1801.44 4017.76,-1851.82 3883.65,-1876.99 3845.91,-1870.57 3710.76,-1851.82 3600.97,-1836.58 3471.35,-1892.74 3464.34,-1790.96"/>
|
|
<polygon fill="#ff7fc2" stroke="#ff7fc2" stroke-width="1.4" points="3466.8,-1791.03 3464.11,-1784.12 3461.9,-1791.2 3466.8,-1791.03"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4129.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff7fc2">  sync brands on authed  </text>
|
|
</g>
|
|
<!-- unitAutomat -->
|
|
<g id="node8" class="node">
|
|
<title>unitAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="3752.85,-1737 3752.85,-1772 3978.67,-1772 3978.67,-1737 3752.85,-1737"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3752.85,-1737 3752.85,-1772 3978.67,-1772 3978.67,-1737 3752.85,-1737"/>
|
|
<polygon fill="#33415c" stroke="none" points="3754.85,-1766 3754.85,-1770 3976.67,-1770 3976.67,-1766 3754.85,-1766"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3830.43" y="-1753.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">unitAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3817.99" y="-1743.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Units of Measure (UoM)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3752.85,-1715 3752.85,-1737 3978.67,-1737 3978.67,-1715 3752.85,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3752.85,-1715 3752.85,-1737 3978.67,-1737 3978.67,-1715 3752.85,-1715"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3753.85,-1716 3753.85,-1736 3807.96,-1736 3807.96,-1716 3753.85,-1716"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3767.79" y="-1724.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3811.96" y="-1724" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">units: Unit[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3888.29" y="-1722.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Allowed SI & sales units</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3752.85,-1693 3752.85,-1715 3978.67,-1715 3978.67,-1693 3752.85,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3752.85,-1693 3752.85,-1715 3978.67,-1715 3978.67,-1693 3752.85,-1693"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3753.85,-1694 3753.85,-1714 3801.85,-1714 3801.85,-1694 3753.85,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3764.73" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3805.85" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">status: 'idle'|'ready'</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3905.63" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Load lifecycle state</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3752.85,-1671 3752.85,-1693 3978.67,-1693 3978.67,-1671 3752.85,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3752.85,-1671 3752.85,-1693 3978.67,-1693 3978.67,-1671 3752.85,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="3753.85,-1672 3753.85,-1692 3821.89,-1692 3821.89,-1672 3753.85,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3772.53" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3825.89" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3901.19" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch localized units</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3752.85,-1649 3752.85,-1671 3978.67,-1671 3978.67,-1649 3752.85,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3752.85,-1649 3752.85,-1671 3978.67,-1671 3978.67,-1649 3752.85,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="3753.85,-1650 3753.85,-1670 3809.7,-1670 3809.7,-1650 3753.85,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3766.44" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3813.7" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">upsert(body)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3898.51" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Create or update unit</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3752.85,-1627 3752.85,-1649 3978.67,-1649 3978.67,-1627 3752.85,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3752.85,-1627 3752.85,-1649 3978.67,-1649 3978.67,-1627 3752.85,-1627"/>
|
|
<polygon fill="#143826" stroke="none" points="3753.85,-1628 3753.85,-1648 3815.84,-1648 3815.84,-1628 3753.85,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3769.51" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3819.84" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">delete(id)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3900.29" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Remove unused unit</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3752.85,-1605 3752.85,-1627 3978.67,-1627 3978.67,-1605 3752.85,-1605"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3752.85,-1605 3752.85,-1627 3978.67,-1627 3978.67,-1605 3752.85,-1605"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="3753.85,-1606 3753.85,-1626 3807.15,-1626 3807.15,-1606 3753.85,-1606"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3773.83" y="-1614.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3811.15" y="-1614" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/unit</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3891.41" y="-1612.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company unit directory</text>
|
|
</g>
|
|
<!-- authAutomat->unitAutomat -->
|
|
<g id="edge5" class="edge">
|
|
<title>authAutomat:w->unitAutomat:n</title>
|
|
<g id="a_edge5"><a xlink:title="authAutomat → unitAutomat (sync units on authed)">
|
|
<path fill="none" stroke="#c79bff" stroke-width="1.4" d="M4590.44,-1629C4434.14,-1629 4390.04,-1593.33 4238.78,-1632.7 4115.3,-1664.83 4110.18,-1738 3986.67,-1770 3938.91,-1782.37 3876.94,-1818.16 3867.1,-1782.37"/>
|
|
<polygon fill="#c79bff" stroke="#c79bff" stroke-width="1.4" points="3869.26,-1779.77 3866,-1773.1 3864.39,-1780.34 3869.26,-1779.77"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4285.06" y="-1635.4" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#c79bff">  sync units on authed  </text>
|
|
</g>
|
|
<!-- propertyAutomat -->
|
|
<g id="node11" class="node">
|
|
<title>propertyAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="6780.72,-1737 6780.72,-1772 7072.8,-1772 7072.8,-1737 6780.72,-1737"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6780.72,-1737 6780.72,-1772 7072.8,-1772 7072.8,-1737 6780.72,-1737"/>
|
|
<polygon fill="#33415c" stroke="none" points="6782.72,-1766 6782.72,-1770 6926.76,-1770 6926.76,-1766 6782.72,-1766"/>
|
|
<polygon fill="#33415c" stroke="none" points="6926.76,-1766 6926.76,-1770 7070.8,-1770 7070.8,-1766 6926.76,-1766"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6878.09" y="-1753.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">propertyAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6869.48" y="-1743.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Custom Metadata Properties</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6780.72,-1715 6780.72,-1737 7072.8,-1737 7072.8,-1715 6780.72,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6780.72,-1715 6780.72,-1737 7072.8,-1737 7072.8,-1715 6780.72,-1715"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="6781.72,-1716 6781.72,-1736 6829.72,-1736 6829.72,-1716 6781.72,-1716"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6792.61" y="-1724.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6833.72" y="-1724" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">properties: PropertyName[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6971.75" y="-1722.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Sorted company properties</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6780.72,-1693 6780.72,-1715 7072.8,-1715 7072.8,-1693 6780.72,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6780.72,-1693 6780.72,-1715 7072.8,-1715 7072.8,-1693 6780.72,-1693"/>
|
|
<polygon fill="#143826" stroke="none" points="6781.72,-1694 6781.72,-1714 6866.06,-1714 6866.06,-1694 6781.72,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6808.56" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6870.06" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6977.97" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch property definitions</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6780.72,-1671 6780.72,-1693 7072.8,-1693 7072.8,-1671 6780.72,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6780.72,-1671 6780.72,-1693 7072.8,-1693 7072.8,-1671 6780.72,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="6781.72,-1672 6781.72,-1692 6847.01,-1692 6847.01,-1672 6781.72,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6799.03" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6851.01" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">createProperty()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6970.85" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Add new property definition</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6780.72,-1649 6780.72,-1671 7072.8,-1671 7072.8,-1649 6780.72,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6780.72,-1649 6780.72,-1671 7072.8,-1671 7072.8,-1649 6780.72,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="6781.72,-1650 6781.72,-1670 6861.03,-1670 6861.03,-1650 6781.72,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6806.04" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6865.03" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">updateProperty()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7016.22" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Edit title & sort</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6780.72,-1627 6780.72,-1649 7072.8,-1649 7072.8,-1627 6780.72,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6780.72,-1627 6780.72,-1649 7072.8,-1649 7072.8,-1627 6780.72,-1627"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="6781.72,-1628 6781.72,-1648 6844.39,-1648 6844.39,-1628 6781.72,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6806.39" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6848.39" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/propertyname</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6995.76" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company properties</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6780.72,-1605 6780.72,-1627 7072.8,-1627 7072.8,-1605 6780.72,-1605"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6780.72,-1605 6780.72,-1627 7072.8,-1627 7072.8,-1605 6780.72,-1605"/>
|
|
<polygon fill="#3a181e" stroke="none" points="6781.72,-1606 6781.72,-1626 6853.21,-1626 6853.21,-1606 6781.72,-1606"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6809.46" y="-1614.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6857.21" y="-1614" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">propertyname</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6978.87" y="-1612.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Real-time property signal</text>
|
|
</g>
|
|
<!-- authAutomat->propertyAutomat -->
|
|
<g id="edge7" class="edge">
|
|
<title>authAutomat:e->propertyAutomat:n</title>
|
|
<g id="a_edge7"><a xlink:title="authAutomat → propertyAutomat (sync properties on authed)">
|
|
<path fill="none" stroke="#ff9f5a" stroke-width="1.4" d="M4857.07,-1629C4970.33,-1629 4883.15,-1794.36 4980.76,-1851.82 5064.73,-1901.25 6641.56,-1880.28 6734.76,-1851.82 6793.24,-1833.96 6849.02,-1835.12 6854.32,-1779.95"/>
|
|
<polygon fill="#ff9f5a" stroke="#ff9f5a" stroke-width="1.4" points="6856.76,-1780.22 6854.64,-1773.12 6851.87,-1780 6856.76,-1780.22"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5786.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff9f5a">  sync properties on authed  </text>
|
|
</g>
|
|
<!-- attributeAutomat -->
|
|
<g id="node12" class="node">
|
|
<title>attributeAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="7157.12,-1737 7157.12,-1772 7450.39,-1772 7450.39,-1737 7157.12,-1737"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7157.12,-1737 7157.12,-1772 7450.39,-1772 7450.39,-1737 7157.12,-1737"/>
|
|
<polygon fill="#33415c" stroke="none" points="7159.12,-1766 7159.12,-1770 7303.76,-1770 7303.76,-1766 7159.12,-1766"/>
|
|
<polygon fill="#33415c" stroke="none" points="7303.76,-1766 7303.76,-1770 7448.39,-1770 7448.39,-1766 7303.76,-1766"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7255.43" y="-1753.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">attributeAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7230.97" y="-1743.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Product Attributes & Discrete Values</text>
|
|
<polygon fill="#2a3242" stroke="none" points="7157.12,-1715 7157.12,-1737 7450.39,-1737 7450.39,-1715 7157.12,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7157.12,-1715 7157.12,-1737 7450.39,-1737 7450.39,-1715 7157.12,-1715"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="7158.12,-1716 7158.12,-1736 7206.12,-1736 7206.12,-1716 7158.12,-1716"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7169.01" y="-1724.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7210.12" y="-1724" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">attributes: AttributeName[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7345.35" y="-1722.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Attributes with sorted values</text>
|
|
<polygon fill="#272e3d" stroke="none" points="7157.12,-1693 7157.12,-1715 7450.39,-1715 7450.39,-1693 7157.12,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7157.12,-1693 7157.12,-1715 7450.39,-1715 7450.39,-1693 7157.12,-1693"/>
|
|
<polygon fill="#143826" stroke="none" points="7158.12,-1694 7158.12,-1714 7243.01,-1714 7243.01,-1694 7158.12,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7185.23" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7247.01" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7356.01" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch attribute definitions</text>
|
|
<polygon fill="#2a3242" stroke="none" points="7157.12,-1671 7157.12,-1693 7450.39,-1693 7450.39,-1671 7157.12,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7157.12,-1671 7157.12,-1693 7450.39,-1693 7450.39,-1671 7157.12,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="7158.12,-1672 7158.12,-1692 7230.01,-1692 7230.01,-1672 7158.12,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7178.73" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7234.01" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">createAttribute()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7367.57" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Create attribute group</text>
|
|
<polygon fill="#272e3d" stroke="none" points="7157.12,-1649 7157.12,-1671 7450.39,-1671 7450.39,-1649 7157.12,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7157.12,-1649 7157.12,-1671 7450.39,-1671 7450.39,-1649 7157.12,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="7158.12,-1650 7158.12,-1670 7215.08,-1670 7215.08,-1650 7158.12,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7171.27" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7219.08" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">addValue() / deleteValue()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7366.69" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Discrete value options</text>
|
|
<polygon fill="#2a3242" stroke="none" points="7157.12,-1627 7157.12,-1649 7450.39,-1649 7450.39,-1627 7157.12,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7157.12,-1627 7157.12,-1649 7450.39,-1649 7450.39,-1627 7157.12,-1627"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="7158.12,-1628 7158.12,-1648 7223.16,-1648 7223.16,-1628 7158.12,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7183.97" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7227.16" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/attributename</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7378.69" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Attributes & values</text>
|
|
<polygon fill="#272e3d" stroke="none" points="7157.12,-1605 7157.12,-1627 7450.39,-1627 7450.39,-1605 7157.12,-1605"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7157.12,-1605 7157.12,-1627 7450.39,-1627 7450.39,-1605 7157.12,-1605"/>
|
|
<polygon fill="#3a181e" stroke="none" points="7158.12,-1606 7158.12,-1626 7230.34,-1626 7230.34,-1606 7158.12,-1606"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7186.23" y="-1614.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7234.34" y="-1614" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">attributename</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7356.91" y="-1612.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Real-time attribute signal</text>
|
|
</g>
|
|
<!-- authAutomat->attributeAutomat -->
|
|
<g id="edge6" class="edge">
|
|
<title>authAutomat:e->attributeAutomat:n</title>
|
|
<g id="a_edge6"><a xlink:title="authAutomat → attributeAutomat (sync attributes on authed)">
|
|
<path fill="none" stroke="#5cd6d6" stroke-width="1.4" d="M4857.07,-1629C4970.33,-1629 4883.15,-1794.36 4980.76,-1851.82 5082.93,-1911.96 7001.6,-1887.18 7114.76,-1851.82 7172.03,-1833.92 7225.91,-1834.02 7231.04,-1779.79"/>
|
|
<polygon fill="#5cd6d6" stroke="#5cd6d6" stroke-width="1.4" points="7233.47,-1780.22 7231.34,-1773.12 7228.58,-1780 7233.47,-1780.22"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5903.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#5cd6d6">  sync attributes on authed  </text>
|
|
</g>
|
|
<!-- supplierAutomat -->
|
|
<g id="node13" class="node">
|
|
<title>supplierAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="80.91,-1024.4 80.91,-1059.4 304.61,-1059.4 304.61,-1024.4 80.91,-1024.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="80.91,-1024.4 80.91,-1059.4 304.61,-1059.4 304.61,-1024.4 80.91,-1024.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="82.91,-1053.4 82.91,-1057.4 156.14,-1057.4 156.14,-1053.4 82.91,-1053.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="156.14,-1053.4 156.14,-1057.4 229.37,-1057.4 229.37,-1053.4 156.14,-1053.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="229.37,-1053.4 229.37,-1057.4 302.61,-1057.4 302.61,-1053.4 229.37,-1053.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="145.09" y="-1040.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">supplierAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="133.73" y="-1031.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Supplier Directory & Catalogs</text>
|
|
<polygon fill="#2a3242" stroke="none" points="80.91,-1002.4 80.91,-1024.4 304.61,-1024.4 304.61,-1002.4 80.91,-1002.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="80.91,-1002.4 80.91,-1024.4 304.61,-1024.4 304.61,-1002.4 80.91,-1002.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="81.91,-1003.4 81.91,-1023.4 129.91,-1023.4 129.91,-1003.4 81.91,-1003.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="92.8" y="-1012" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="133.91" y="-1011.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">suppliers: Supplier[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="239.14" y="-1010.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Active vendor list</text>
|
|
<polygon fill="#272e3d" stroke="none" points="80.91,-980.4 80.91,-1002.4 304.61,-1002.4 304.61,-980.4 80.91,-980.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="80.91,-980.4 80.91,-1002.4 304.61,-1002.4 304.61,-980.4 80.91,-980.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="81.91,-981.4 81.91,-1001.4 137.46,-1001.4 137.46,-981.4 81.91,-981.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="96.57" y="-990" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="141.46" y="-989.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">status: 'ready'</text>
|
|
<text xml:space="preserve" text-anchor="start" x="231.57" y="-988.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Load lifecycle state</text>
|
|
<polygon fill="#2a3242" stroke="none" points="80.91,-958.4 80.91,-980.4 304.61,-980.4 304.61,-958.4 80.91,-958.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="80.91,-958.4 80.91,-980.4 304.61,-980.4 304.61,-958.4 80.91,-958.4"/>
|
|
<polygon fill="#143826" stroke="none" points="81.91,-959.4 81.91,-979.4 151.31,-979.4 151.31,-959.4 81.91,-959.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="101.28" y="-968" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="155.31" y="-967.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="233.34" y="-966.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Deduplicated fetch</text>
|
|
<polygon fill="#272e3d" stroke="none" points="80.91,-936.4 80.91,-958.4 304.61,-958.4 304.61,-936.4 80.91,-936.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="80.91,-936.4 80.91,-958.4 304.61,-958.4 304.61,-936.4 80.91,-936.4"/>
|
|
<polygon fill="#143826" stroke="none" points="81.91,-937.4 81.91,-957.4 142.68,-957.4 142.68,-937.4 81.91,-937.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="96.96" y="-946" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="146.68" y="-945.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="216.89" y="-944.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Silent background sync</text>
|
|
<polygon fill="#2a3242" stroke="none" points="80.91,-914.4 80.91,-936.4 304.61,-936.4 304.61,-914.4 80.91,-914.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="80.91,-914.4 80.91,-936.4 304.61,-936.4 304.61,-914.4 80.91,-914.4"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="81.91,-915.4 81.91,-935.4 136.83,-935.4 136.83,-915.4 81.91,-915.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="102.7" y="-924" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="140.83" y="-923.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/supplier</text>
|
|
<text xml:space="preserve" text-anchor="start" x="244.91" y="-922.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Vendor records</text>
|
|
<polygon fill="#272e3d" stroke="none" points="80.91,-892.4 80.91,-914.4 304.61,-914.4 304.61,-892.4 80.91,-892.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="80.91,-892.4 80.91,-914.4 304.61,-914.4 304.61,-892.4 80.91,-892.4"/>
|
|
<polygon fill="#3a181e" stroke="none" points="81.91,-893.4 81.91,-913.4 140.31,-913.4 140.31,-893.4 81.91,-893.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="103.1" y="-902" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="144.31" y="-901.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">supplier</text>
|
|
<text xml:space="preserve" text-anchor="start" x="212.01" y="-900.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Real-time supplier signal</text>
|
|
</g>
|
|
<!-- authAutomat->supplierAutomat -->
|
|
<g id="edge8" class="edge">
|
|
<title>authAutomat:w->supplierAutomat:n</title>
|
|
<g id="a_edge8"><a xlink:title="authAutomat → supplierAutomat (sync suppliers on authed)">
|
|
<path fill="none" stroke="#8f95ff" stroke-width="1.4" d="M4590.44,-1629C4463.06,-1629 4426.32,-1603.28 4320.76,-1532 4153.06,-1418.76 4201.57,-1276.79 4017.76,-1192.2 3962.28,-1166.67 2979.75,-1173.21 2918.76,-1170.2 2857.75,-1167.19 2842.78,-1161.91 2781.76,-1159.4 2716.81,-1156.73 505.7,-1163.06 441.76,-1151.4 328.6,-1130.76 199.75,-1174.14 193.03,-1067.41"/>
|
|
<polygon fill="#8f95ff" stroke="#8f95ff" stroke-width="1.4" points="195.48,-1067.44 192.82,-1060.52 190.59,-1067.59 195.48,-1067.44"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4347.59" y="-1324" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8f95ff">  sync suppliers on authed  </text>
|
|
</g>
|
|
<!-- deliveryAutomat -->
|
|
<g id="node14" class="node">
|
|
<title>deliveryAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="517.72,-711.6 517.72,-746.6 755.79,-746.6 755.79,-711.6 517.72,-711.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="517.72,-711.6 517.72,-746.6 755.79,-746.6 755.79,-711.6 517.72,-711.6"/>
|
|
<polygon fill="#33415c" stroke="none" points="519.72,-740.6 519.72,-744.6 636.76,-744.6 636.76,-740.6 519.72,-740.6"/>
|
|
<polygon fill="#33415c" stroke="none" points="636.76,-740.6 636.76,-744.6 753.79,-744.6 753.79,-740.6 636.76,-740.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="589.74" y="-727.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">deliveryAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="576.49" y="-718.5" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createListAutomat (Deliveries)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="517.72,-689.6 517.72,-711.6 755.79,-711.6 755.79,-689.6 517.72,-689.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="517.72,-689.6 517.72,-711.6 755.79,-711.6 755.79,-689.6 517.72,-689.6"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="518.72,-690.6 518.72,-710.6 566.72,-710.6 566.72,-690.6 518.72,-690.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="529.61" y="-699.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="570.72" y="-698.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">items: Delivery[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="656.53" y="-697.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company delivery receipts</text>
|
|
<polygon fill="#272e3d" stroke="none" points="517.72,-667.6 517.72,-689.6 755.79,-689.6 755.79,-667.6 517.72,-667.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="517.72,-667.6 517.72,-689.6 755.79,-689.6 755.79,-667.6 517.72,-667.6"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="518.72,-668.6 518.72,-688.6 580.85,-688.6 580.85,-668.6 518.72,-668.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="536.67" y="-677.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="584.85" y="-676.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">status: 'ready'</text>
|
|
<text xml:space="preserve" text-anchor="start" x="688.1" y="-675.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">List lifecycle state</text>
|
|
<polygon fill="#2a3242" stroke="none" points="517.72,-645.6 517.72,-667.6 755.79,-667.6 755.79,-645.6 517.72,-645.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="517.72,-645.6 517.72,-667.6 755.79,-667.6 755.79,-645.6 517.72,-645.6"/>
|
|
<polygon fill="#143826" stroke="none" points="518.72,-646.6 518.72,-666.6 569.17,-666.6 569.17,-646.6 518.72,-646.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="528.61" y="-655.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="573.17" y="-654.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load() / reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="658.3" y="-653.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Deduplicated fetch & sync</text>
|
|
<polygon fill="#272e3d" stroke="none" points="517.72,-623.6 517.72,-645.6 755.79,-645.6 755.79,-623.6 517.72,-623.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="517.72,-623.6 517.72,-645.6 755.79,-645.6 755.79,-623.6 517.72,-623.6"/>
|
|
<polygon fill="#143826" stroke="none" points="518.72,-624.6 518.72,-644.6 585.88,-644.6 585.88,-624.6 518.72,-624.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="536.97" y="-633.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="589.88" y="-632.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reset()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="666.76" y="-631.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Clear on session switch</text>
|
|
<polygon fill="#2a3242" stroke="none" points="517.72,-601.6 517.72,-623.6 755.79,-623.6 755.79,-601.6 517.72,-601.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="517.72,-601.6 517.72,-623.6 755.79,-623.6 755.79,-601.6 517.72,-601.6"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="518.72,-602.6 518.72,-622.6 573.16,-622.6 573.16,-602.6 518.72,-602.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="539.27" y="-611.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="577.16" y="-610.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/delivery</text>
|
|
<text xml:space="preserve" text-anchor="start" x="679.19" y="-609.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Inbound delivery log</text>
|
|
</g>
|
|
<!-- authAutomat->deliveryAutomat -->
|
|
<g id="edge11" class="edge">
|
|
<title>authAutomat:w->deliveryAutomat:n</title>
|
|
<g id="a_edge11"><a xlink:title="authAutomat → deliveryAutomat (sync deliveries on authed)">
|
|
<path fill="none" stroke="#4fc4e8" stroke-width="1.4" d="M4590.44,-1629C4523.35,-1629 4439.12,-1570.38 4484.76,-1521.2 4500.98,-1503.72 4575.54,-1530.68 4591.76,-1513.2 4688.8,-1408.63 4659.36,-1317.84 4591.76,-1192.2 4445.14,-919.71 4306.25,-900.42 4010.76,-808.6 3925.03,-781.96 857.15,-834.9 701.41,-752.33"/>
|
|
<polygon fill="#4fc4e8" stroke="#4fc4e8" stroke-width="1.4" points="703.23,-750.69 696.7,-747.17 699.61,-753.99 703.23,-750.69"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4634.99" y="-1162.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#4fc4e8">  sync deliveries on authed  </text>
|
|
</g>
|
|
<!-- quoteAutomat -->
|
|
<g id="node16" class="node">
|
|
<title>quoteAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="6475.28,-1715 6475.28,-1750 6696.23,-1750 6696.23,-1715 6475.28,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6475.28,-1715 6475.28,-1750 6696.23,-1750 6696.23,-1715 6475.28,-1715"/>
|
|
<polygon fill="#33415c" stroke="none" points="6477.28,-1744 6477.28,-1748 6694.23,-1748 6694.23,-1744 6477.28,-1744"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6545.1" y="-1731.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">quoteAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6530.73" y="-1721.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createListAutomat (Quotes)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6475.28,-1693 6475.28,-1715 6696.23,-1715 6696.23,-1693 6475.28,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6475.28,-1693 6475.28,-1715 6696.23,-1715 6696.23,-1693 6475.28,-1693"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="6476.28,-1694 6476.28,-1714 6524.28,-1714 6524.28,-1694 6476.28,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6487.17" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6528.28" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">items: Quote[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6604.06" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Sales quotes / Angebote</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6475.28,-1671 6475.28,-1693 6696.23,-1693 6696.23,-1671 6475.28,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6475.28,-1671 6475.28,-1693 6696.23,-1693 6696.23,-1671 6475.28,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="6476.28,-1672 6476.28,-1692 6529.77,-1692 6529.77,-1672 6476.28,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6487.69" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6533.77" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load() / reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6624.97" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Deduplicated fetch</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6475.28,-1649 6475.28,-1671 6696.23,-1671 6696.23,-1649 6475.28,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6475.28,-1649 6475.28,-1671 6696.23,-1671 6696.23,-1649 6475.28,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="6476.28,-1650 6476.28,-1670 6547.06,-1670 6547.06,-1650 6476.28,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6496.34" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6551.06" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reset()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6635.19" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Reset on logout</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6475.28,-1627 6475.28,-1649 6696.23,-1649 6696.23,-1627 6475.28,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6475.28,-1627 6475.28,-1649 6696.23,-1649 6696.23,-1627 6475.28,-1627"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="6476.28,-1628 6476.28,-1648 6529.59,-1648 6529.59,-1628 6476.28,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6496.26" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6533.59" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/quote</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6622.75" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company quote list</text>
|
|
</g>
|
|
<!-- authAutomat->quoteAutomat -->
|
|
<g id="edge12" class="edge">
|
|
<title>authAutomat:e->quoteAutomat:n</title>
|
|
<g id="a_edge12"><a xlink:title="authAutomat → quoteAutomat (sync quotes on authed)">
|
|
<path fill="none" stroke="#a98cff" stroke-width="1.4" d="M4857.07,-1629C4970.33,-1629 4883.15,-1794.36 4980.76,-1851.82 5050.32,-1892.77 6356.58,-1875.47 6433.76,-1851.82 6508.84,-1828.81 6580.26,-1830.4 6585.45,-1757.74"/>
|
|
<polygon fill="#a98cff" stroke="#a98cff" stroke-width="1.4" points="6587.89,-1758.2 6585.68,-1751.12 6582.99,-1758.03 6587.89,-1758.2"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5493.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#a98cff">  sync quotes on authed  </text>
|
|
</g>
|
|
<!-- orderAutomat -->
|
|
<g id="node17" class="node">
|
|
<title>orderAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="6256,-1397.2 6256,-1432.2 6521.51,-1432.2 6521.51,-1397.2 6256,-1397.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1397.2 6256,-1432.2 6521.51,-1432.2 6521.51,-1397.2 6256,-1397.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="6258,-1426.2 6258,-1430.2 6345.17,-1430.2 6345.17,-1426.2 6258,-1426.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="6345.17,-1426.2 6345.17,-1430.2 6432.34,-1430.2 6432.34,-1426.2 6345.17,-1426.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="6432.34,-1426.2 6432.34,-1430.2 6519.51,-1430.2 6519.51,-1426.2 6432.34,-1426.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6349.09" y="-1413.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">orderAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6325.97" y="-1404.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Chunk-Paginated Order Engine</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6256,-1375.2 6256,-1397.2 6521.51,-1397.2 6521.51,-1375.2 6256,-1375.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1375.2 6256,-1397.2 6521.51,-1397.2 6521.51,-1375.2 6256,-1375.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="6257,-1376.2 6257,-1396.2 6325.75,-1396.2 6325.75,-1376.2 6257,-1376.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6278.26" y="-1384.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6329.75" y="-1384.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">items: Order[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6445.37" y="-1383" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Sales orders & lines</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6256,-1353.2 6256,-1375.2 6521.51,-1375.2 6521.51,-1353.2 6256,-1353.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1353.2 6256,-1375.2 6521.51,-1375.2 6521.51,-1353.2 6256,-1353.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="6257,-1354.2 6257,-1374.2 6324.57,-1374.2 6324.57,-1354.2 6257,-1354.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6277.67" y="-1362.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6328.57" y="-1362.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">total: number</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6439.58" y="-1361" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Unfiltered order count</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6256,-1331.2 6256,-1353.2 6521.51,-1353.2 6521.51,-1331.2 6256,-1331.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1331.2 6256,-1353.2 6521.51,-1353.2 6521.51,-1331.2 6256,-1331.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="6257,-1332.2 6257,-1352.2 6305.38,-1352.2 6305.38,-1332.2 6257,-1332.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6268.08" y="-1340.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6309.38" y="-1340.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">onlyUnpaid / onlyUndelivered</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6458.72" y="-1339" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fulfillment filters</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6256,-1309.2 6256,-1331.2 6521.51,-1331.2 6521.51,-1309.2 6256,-1309.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1309.2 6256,-1331.2 6521.51,-1331.2 6521.51,-1309.2 6256,-1309.2"/>
|
|
<polygon fill="#143826" stroke="none" points="6257,-1310.2 6257,-1330.2 6316.08,-1330.2 6316.08,-1310.2 6257,-1310.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6271.21" y="-1318.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6320.08" y="-1318.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">loadChunk(index)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6434.69" y="-1317" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Chunk size 50 prefetch</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6256,-1287.2 6256,-1309.2 6521.51,-1309.2 6521.51,-1287.2 6256,-1287.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1287.2 6256,-1309.2 6521.51,-1309.2 6521.51,-1287.2 6256,-1287.2"/>
|
|
<polygon fill="#143826" stroke="none" points="6257,-1288.2 6257,-1308.2 6334.53,-1308.2 6334.53,-1288.2 6257,-1288.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6280.43" y="-1296.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6338.53" y="-1296.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6442.26" y="-1295" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Silent orders re-fetch</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6256,-1265.2 6256,-1287.2 6521.51,-1287.2 6521.51,-1265.2 6256,-1265.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1265.2 6256,-1287.2 6521.51,-1287.2 6521.51,-1265.2 6256,-1265.2"/>
|
|
<polygon fill="#182b40" stroke="none" points="6257,-1266.2 6257,-1286.2 6305,-1286.2 6305,-1266.2 6257,-1266.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6265.22" y="-1274.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6309" y="-1274.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectOrders() / selectTotal()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6452.04" y="-1273" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Filter-applied slice</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6256,-1243.2 6256,-1265.2 6521.51,-1265.2 6521.51,-1243.2 6256,-1243.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1243.2 6256,-1265.2 6521.51,-1265.2 6521.51,-1243.2 6256,-1243.2"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="6257,-1244.2 6257,-1264.2 6324.97,-1264.2 6324.97,-1244.2 6257,-1244.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6284.32" y="-1252.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6328.97" y="-1252.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/order</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6445.81" y="-1251" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Paged order stream</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6256,-1221.2 6256,-1243.2 6521.51,-1243.2 6521.51,-1221.2 6256,-1221.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6256,-1221.2 6256,-1243.2 6521.51,-1243.2 6521.51,-1221.2 6256,-1221.2"/>
|
|
<polygon fill="#3a181e" stroke="none" points="6257,-1222.2 6257,-1242.2 6320.94,-1242.2 6320.94,-1222.2 6257,-1222.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6280.96" y="-1230.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6324.94" y="-1230.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">order / shipment</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6443.15" y="-1229" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fulfillment mutations</text>
|
|
</g>
|
|
<!-- authAutomat->orderAutomat -->
|
|
<g id="edge13" class="edge">
|
|
<title>authAutomat:e->orderAutomat:n</title>
|
|
<g id="a_edge13"><a xlink:title="authAutomat → orderAutomat (sync orders on authed)">
|
|
<path fill="none" stroke="#ff8f66" stroke-width="1.4" d="M4857.07,-1629C4921.36,-1629 4918.96,-1571.73 4980.76,-1554 5023.32,-1541.79 6543.66,-1563.53 6574.76,-1532 6663.41,-1442.11 6319.09,-1554.84 6302.22,-1440.24"/>
|
|
<polygon fill="#ff8f66" stroke="#ff8f66" stroke-width="1.4" points="6304.67,-1440.12 6301.74,-1433.31 6299.78,-1440.47 6304.67,-1440.12"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="6631.89" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff8f66">  sync orders on authed  </text>
|
|
</g>
|
|
<!-- entityAutomat -->
|
|
<g id="node18" class="node">
|
|
<title>entityAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="6355.18,-1002.4 6355.18,-1037.4 6578.33,-1037.4 6578.33,-1002.4 6355.18,-1002.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6355.18,-1002.4 6355.18,-1037.4 6578.33,-1037.4 6578.33,-1002.4 6355.18,-1002.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="6357.18,-1031.4 6357.18,-1035.4 6466.76,-1035.4 6466.76,-1031.4 6357.18,-1031.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="6466.76,-1031.4 6466.76,-1035.4 6576.33,-1035.4 6576.33,-1031.4 6466.76,-1031.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6426.42" y="-1018.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">entityAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6411.48" y="-1009.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createListAutomat (Entities)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6355.18,-980.4 6355.18,-1002.4 6578.33,-1002.4 6578.33,-980.4 6355.18,-980.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6355.18,-980.4 6355.18,-1002.4 6578.33,-1002.4 6578.33,-980.4 6355.18,-980.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="6356.18,-981.4 6356.18,-1001.4 6408.41,-1001.4 6408.41,-981.4 6356.18,-981.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6369.18" y="-990" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6412.41" y="-989.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">items: Entity[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6495.52" y="-988.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Customers & partners</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6355.18,-958.4 6355.18,-980.4 6578.33,-980.4 6578.33,-958.4 6355.18,-958.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6355.18,-958.4 6355.18,-980.4 6578.33,-980.4 6578.33,-958.4 6355.18,-958.4"/>
|
|
<polygon fill="#143826" stroke="none" points="6356.18,-959.4 6356.18,-979.4 6404.18,-979.4 6404.18,-959.4 6356.18,-959.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6364.85" y="-968" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6408.18" y="-967.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load() / reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6488.41" y="-966.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Customer directory load</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6355.18,-936.4 6355.18,-958.4 6578.33,-958.4 6578.33,-936.4 6355.18,-936.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6355.18,-936.4 6355.18,-958.4 6578.33,-958.4 6578.33,-936.4 6355.18,-936.4"/>
|
|
<polygon fill="#143826" stroke="none" points="6356.18,-937.4 6356.18,-957.4 6417.77,-957.4 6417.77,-937.4 6356.18,-937.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6371.65" y="-946" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6421.77" y="-945.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reset()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6487.51" y="-944.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Reset on session switch</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6355.18,-914.4 6355.18,-936.4 6578.33,-936.4 6578.33,-914.4 6355.18,-914.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6355.18,-914.4 6355.18,-936.4 6578.33,-936.4 6578.33,-914.4 6355.18,-914.4"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="6356.18,-915.4 6356.18,-935.4 6412.93,-935.4 6412.93,-915.4 6356.18,-915.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6377.89" y="-924" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6416.93" y="-923.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/entity</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6512.43" y="-922.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Directory records</text>
|
|
</g>
|
|
<!-- authAutomat->entityAutomat -->
|
|
<g id="edge14" class="edge">
|
|
<title>authAutomat:e->entityAutomat:n</title>
|
|
<g id="a_edge14"><a xlink:title="authAutomat → entityAutomat (sync entities on authed)">
|
|
<path fill="none" stroke="#4ecb8f" stroke-width="1.4" d="M4857.07,-1629C4921.36,-1629 4918.94,-1571.67 4980.76,-1554 5030.94,-1539.66 6823.06,-1569.13 6859.76,-1532 6995.1,-1395.06 6778.35,-1292 6638.76,-1159.4 6557.89,-1082.59 6419.78,-1147.31 6412.29,-1045.4"/>
|
|
<polygon fill="#4ecb8f" stroke="#4ecb8f" stroke-width="1.4" points="6414.74,-1045.43 6412.05,-1038.52 6409.84,-1045.6 6414.74,-1045.43"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="6953.56" y="-1324" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#4ecb8f">  sync entities on authed  </text>
|
|
</g>
|
|
<!-- customergroupAutomat -->
|
|
<g id="node19" class="node">
|
|
<title>customergroupAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="6137.91,-1704 6137.91,-1739 6391.61,-1739 6391.61,-1704 6137.91,-1704"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6137.91,-1704 6137.91,-1739 6391.61,-1739 6391.61,-1704 6137.91,-1704"/>
|
|
<polygon fill="#33415c" stroke="none" points="6139.91,-1733 6139.91,-1737 6264.76,-1737 6264.76,-1733 6139.91,-1733"/>
|
|
<polygon fill="#33415c" stroke="none" points="6264.76,-1733 6264.76,-1737 6389.61,-1737 6389.61,-1733 6264.76,-1733"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6196.42" y="-1720.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">customergroupAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6209.48" y="-1710.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createListAutomat (Groups)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6137.91,-1682 6137.91,-1704 6391.61,-1704 6391.61,-1682 6137.91,-1682"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6137.91,-1682 6137.91,-1704 6391.61,-1704 6391.61,-1682 6137.91,-1682"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="6138.91,-1683 6138.91,-1703 6186.91,-1703 6186.91,-1683 6138.91,-1683"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6149.8" y="-1691.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6190.91" y="-1691" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">items: Customergroup[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6312.8" y="-1689.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Pricing discount tiers</text>
|
|
<polygon fill="#272e3d" stroke="none" points="6137.91,-1660 6137.91,-1682 6391.61,-1682 6391.61,-1660 6137.91,-1660"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6137.91,-1660 6137.91,-1682 6391.61,-1682 6391.61,-1660 6137.91,-1660"/>
|
|
<polygon fill="#143826" stroke="none" points="6138.91,-1661 6138.91,-1681 6201.68,-1681 6201.68,-1661 6138.91,-1661"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6154.96" y="-1669.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6205.68" y="-1669" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load() / reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6315.45" y="-1667.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Discount group load</text>
|
|
<polygon fill="#2a3242" stroke="none" points="6137.91,-1638 6137.91,-1660 6391.61,-1660 6391.61,-1638 6137.91,-1638"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="6137.91,-1638 6137.91,-1660 6391.61,-1660 6391.61,-1638 6137.91,-1638"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="6138.91,-1639 6138.91,-1659 6196.65,-1659 6196.65,-1639 6138.91,-1639"/>
|
|
<text xml:space="preserve" text-anchor="start" x="6161.11" y="-1647.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6200.65" y="-1647" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/customergroup</text>
|
|
<text xml:space="preserve" text-anchor="start" x="6344.82" y="-1645.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Pricing tiers</text>
|
|
</g>
|
|
<!-- authAutomat->customergroupAutomat -->
|
|
<g id="edge15" class="edge">
|
|
<title>authAutomat:e->customergroupAutomat:n</title>
|
|
<g id="a_edge15"><a xlink:title="authAutomat → customergroupAutomat (sync customer groups)">
|
|
<path fill="none" stroke="#ff7aa8" stroke-width="1.4" d="M4857.07,-1629C4970.33,-1629 4883.15,-1794.36 4980.76,-1851.82 5083.45,-1912.26 6281.49,-1896.37 6325.91,-1746.64"/>
|
|
<polygon fill="#ff7aa8" stroke="#ff7aa8" stroke-width="1.4" points="6328.28,-1747.38 6326.87,-1740.1 6323.43,-1746.67 6328.28,-1747.38"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="6012.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff7aa8">  sync customer groups  </text>
|
|
</g>
|
|
<!-- warehouseAutomat -->
|
|
<g id="node20" class="node">
|
|
<title>warehouseAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="7534.16,-1737 7534.16,-1772 7799.35,-1772 7799.35,-1737 7534.16,-1737"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7534.16,-1737 7534.16,-1772 7799.35,-1772 7799.35,-1737 7534.16,-1737"/>
|
|
<polygon fill="#33415c" stroke="none" points="7536.16,-1766 7536.16,-1770 7666.76,-1770 7666.76,-1766 7536.16,-1766"/>
|
|
<polygon fill="#33415c" stroke="none" points="7666.76,-1766 7666.76,-1770 7797.35,-1770 7797.35,-1766 7666.76,-1766"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7611.08" y="-1753.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">warehouseAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7606.47" y="-1743.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Warehouse Locations & Stock</text>
|
|
<polygon fill="#2a3242" stroke="none" points="7534.16,-1715 7534.16,-1737 7799.35,-1737 7799.35,-1715 7534.16,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7534.16,-1715 7534.16,-1737 7799.35,-1737 7799.35,-1715 7534.16,-1715"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="7535.16,-1716 7535.16,-1736 7583.16,-1736 7583.16,-1716 7535.16,-1716"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7546.05" y="-1724.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7587.16" y="-1724" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">warehouses: Warehouse[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7719.64" y="-1722.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Storage areas & bins</text>
|
|
<polygon fill="#272e3d" stroke="none" points="7534.16,-1693 7534.16,-1715 7799.35,-1715 7799.35,-1693 7534.16,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7534.16,-1693 7534.16,-1715 7799.35,-1715 7799.35,-1693 7534.16,-1693"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="7535.16,-1694 7535.16,-1714 7597.88,-1714 7597.88,-1694 7535.16,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7553.41" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7601.88" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">filteredWarehouses</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7732.11" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Filter search slice</text>
|
|
<polygon fill="#2a3242" stroke="none" points="7534.16,-1671 7534.16,-1693 7799.35,-1693 7799.35,-1671 7534.16,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7534.16,-1671 7534.16,-1693 7799.35,-1693 7799.35,-1671 7534.16,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="7535.16,-1672 7535.16,-1692 7603.69,-1692 7603.69,-1672 7535.16,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7554.1" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7607.69" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load() / reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7728.98" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Deduplicated sync</text>
|
|
<polygon fill="#272e3d" stroke="none" points="7534.16,-1649 7534.16,-1671 7799.35,-1671 7799.35,-1649 7534.16,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7534.16,-1649 7534.16,-1671 7799.35,-1671 7799.35,-1649 7534.16,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="7535.16,-1650 7535.16,-1670 7605.73,-1670 7605.73,-1650 7535.16,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7555.12" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7609.73" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">setFilter(query)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7735.65" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Local filter query</text>
|
|
<polygon fill="#2a3242" stroke="none" points="7534.16,-1627 7534.16,-1649 7799.35,-1649 7799.35,-1627 7534.16,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7534.16,-1627 7534.16,-1649 7799.35,-1649 7799.35,-1627 7534.16,-1627"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="7535.16,-1628 7535.16,-1648 7595.17,-1648 7595.17,-1628 7535.16,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7558.5" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7599.17" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/warehouse</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7726.76" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Warehouse listings</text>
|
|
<polygon fill="#272e3d" stroke="none" points="7534.16,-1605 7534.16,-1627 7799.35,-1627 7799.35,-1605 7534.16,-1605"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7534.16,-1605 7534.16,-1627 7799.35,-1627 7799.35,-1605 7534.16,-1605"/>
|
|
<polygon fill="#3a181e" stroke="none" points="7535.16,-1606 7535.16,-1626 7600.58,-1626 7600.58,-1606 7535.16,-1606"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7559.87" y="-1614.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7604.58" y="-1614" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">warehouse</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7699.65" y="-1612.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Real-time stock movement</text>
|
|
</g>
|
|
<!-- authAutomat->warehouseAutomat -->
|
|
<g id="edge9" class="edge">
|
|
<title>authAutomat:e->warehouseAutomat:n</title>
|
|
<g id="a_edge9"><a xlink:title="authAutomat → warehouseAutomat (sync warehouses on authed)">
|
|
<path fill="none" stroke="#ff6b6b" stroke-width="1.4" d="M4857.07,-1629C4970.33,-1629 4883.15,-1794.36 4980.76,-1851.82 5040.82,-1887.17 7423.45,-1873.29 7489.76,-1851.82 7545.09,-1833.9 7596.02,-1832.39 7601.05,-1779.88"/>
|
|
<polygon fill="#ff6b6b" stroke="#ff6b6b" stroke-width="1.4" points="7603.49,-1780.22 7601.36,-1773.12 7598.6,-1780 7603.49,-1780.22"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="6761.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff6b6b">  sync warehouses on authed  </text>
|
|
</g>
|
|
<!-- companyAutomat -->
|
|
<g id="node21" class="node">
|
|
<title>companyAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="1889.72,-1737 1889.72,-1772 2187.79,-1772 2187.79,-1737 1889.72,-1737"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1889.72,-1737 1889.72,-1772 2187.79,-1772 2187.79,-1737 1889.72,-1737"/>
|
|
<polygon fill="#33415c" stroke="none" points="1891.72,-1766 1891.72,-1770 2185.79,-1770 2185.79,-1766 1891.72,-1766"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1988.08" y="-1753.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">companyAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1977.98" y="-1743.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Active Company Configuration</text>
|
|
<polygon fill="#2a3242" stroke="none" points="1889.72,-1715 1889.72,-1737 2187.79,-1737 2187.79,-1715 1889.72,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1889.72,-1715 1889.72,-1737 2187.79,-1737 2187.79,-1715 1889.72,-1715"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="1890.72,-1716 1890.72,-1736 1956.69,-1736 1956.69,-1716 1890.72,-1716"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1910.59" y="-1724.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1960.69" y="-1724" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">current: Company</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2090.74" y="-1722.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Tax rates & ISO language</text>
|
|
<polygon fill="#272e3d" stroke="none" points="1889.72,-1693 1889.72,-1715 2187.79,-1715 2187.79,-1693 1889.72,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1889.72,-1693 1889.72,-1715 2187.79,-1715 2187.79,-1693 1889.72,-1693"/>
|
|
<polygon fill="#143826" stroke="none" points="1890.72,-1694 1890.72,-1714 1967.25,-1714 1967.25,-1694 1890.72,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1913.66" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1971.25" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load() / reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2108.52" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch tenant settings</text>
|
|
<polygon fill="#2a3242" stroke="none" points="1889.72,-1671 1889.72,-1693 2187.79,-1693 2187.79,-1671 1889.72,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1889.72,-1671 1889.72,-1693 2187.79,-1693 2187.79,-1671 1889.72,-1671"/>
|
|
<polygon fill="#182b40" stroke="none" points="1890.72,-1672 1890.72,-1692 1956.9,-1692 1956.9,-1672 1890.72,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1908.04" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1960.9" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectCompanyTaxrate()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2121.42" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Standard tax rate</text>
|
|
<polygon fill="#272e3d" stroke="none" points="1889.72,-1649 1889.72,-1671 2187.79,-1671 2187.79,-1649 1889.72,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1889.72,-1649 1889.72,-1671 2187.79,-1671 2187.79,-1649 1889.72,-1649"/>
|
|
<polygon fill="#182b40" stroke="none" points="1890.72,-1650 1890.72,-1670 1938.72,-1670 1938.72,-1650 1890.72,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1898.94" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1942.72" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectCompanyRootCategoryId()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2106.3" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Root category pointer</text>
|
|
<polygon fill="#2a3242" stroke="none" points="1889.72,-1627 1889.72,-1649 2187.79,-1649 2187.79,-1627 1889.72,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1889.72,-1627 1889.72,-1649 2187.79,-1649 2187.79,-1627 1889.72,-1627"/>
|
|
<polygon fill="#182b40" stroke="none" points="1890.72,-1628 1890.72,-1648 1954.94,-1648 1954.94,-1628 1890.72,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1907.05" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1958.94" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectCompanyName()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2107.19" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company legal name</text>
|
|
<polygon fill="#272e3d" stroke="none" points="1889.72,-1605 1889.72,-1627 2187.79,-1627 2187.79,-1605 1889.72,-1605"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1889.72,-1605 1889.72,-1627 2187.79,-1627 2187.79,-1605 1889.72,-1605"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="1890.72,-1606 1890.72,-1626 1960.65,-1626 1960.65,-1606 1890.72,-1606"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1919.02" y="-1614.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1964.65" y="-1614" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/company/:id</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2118.75" y="-1612.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Legal & tax profile</text>
|
|
</g>
|
|
<!-- authAutomat->companyAutomat -->
|
|
<g id="edge2" class="edge">
|
|
<title>authAutomat:w->companyAutomat:n</title>
|
|
<g id="a_edge2"><a xlink:title="authAutomat → companyAutomat (load company profile)">
|
|
<path fill="none" stroke="#6bdf9a" stroke-width="1.4" d="M4590.44,-1695C4326.55,-1695 4279.3,-1816.66 4017.76,-1851.82 3820.86,-1878.29 2424.46,-1891.31 2229.76,-1851.82 2142.42,-1834.1 2045.43,-1861.26 2039.09,-1779.78"/>
|
|
<polygon fill="#6bdf9a" stroke="#6bdf9a" stroke-width="1.4" points="2041.55,-1780.02 2038.84,-1773.12 2036.65,-1780.2 2041.55,-1780.02"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3449.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#6bdf9a">  load company profile  </text>
|
|
</g>
|
|
<!-- accountAutomat -->
|
|
<g id="node22" class="node">
|
|
<title>accountAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="2271.73,-1704 2271.73,-1739 2503.78,-1739 2503.78,-1704 2271.73,-1704"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2271.73,-1704 2271.73,-1739 2503.78,-1739 2503.78,-1704 2271.73,-1704"/>
|
|
<polygon fill="#33415c" stroke="none" points="2273.73,-1733 2273.73,-1737 2501.78,-1737 2501.78,-1733 2273.73,-1733"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2340.42" y="-1720.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">accountAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2328.73" y="-1710.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createListAutomat (Accounts)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="2271.73,-1682 2271.73,-1704 2503.78,-1704 2503.78,-1682 2271.73,-1682"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2271.73,-1682 2271.73,-1704 2503.78,-1704 2503.78,-1682 2271.73,-1682"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="2272.73,-1683 2272.73,-1703 2320.73,-1703 2320.73,-1683 2272.73,-1683"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2283.62" y="-1691.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2324.73" y="-1691" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">items: Account[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2411.62" y="-1689.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Bank & payment ledgers</text>
|
|
<polygon fill="#272e3d" stroke="none" points="2271.73,-1660 2271.73,-1682 2503.78,-1682 2503.78,-1660 2271.73,-1660"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2271.73,-1660 2271.73,-1682 2503.78,-1682 2503.78,-1660 2271.73,-1660"/>
|
|
<polygon fill="#143826" stroke="none" points="2272.73,-1661 2272.73,-1681 2324.29,-1681 2324.29,-1661 2272.73,-1661"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2283.18" y="-1669.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2328.29" y="-1669" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load() / reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2415.62" y="-1667.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Payment accounts load</text>
|
|
<polygon fill="#2a3242" stroke="none" points="2271.73,-1638 2271.73,-1660 2503.78,-1660 2503.78,-1638 2271.73,-1638"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2271.73,-1638 2271.73,-1660 2503.78,-1660 2503.78,-1638 2271.73,-1638"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="2272.73,-1639 2272.73,-1659 2327.95,-1659 2327.95,-1639 2272.73,-1639"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2293.67" y="-1647.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2331.95" y="-1647" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/account</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2436.08" y="-1645.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Chart of accounts</text>
|
|
</g>
|
|
<!-- authAutomat->accountAutomat -->
|
|
<g id="edge17" class="edge">
|
|
<title>authAutomat:w->accountAutomat:n</title>
|
|
<g id="a_edge17"><a xlink:title="authAutomat → accountAutomat (sync payment accounts)">
|
|
<path fill="none" stroke="#56c8c8" stroke-width="1.4" d="M4590.44,-1629C4317.33,-1629 4286.18,-1801.44 4017.76,-1851.82 3857.01,-1881.99 2701.41,-1902.04 2545.76,-1851.82 2466.29,-1826.17 2393.08,-1824.63 2388.03,-1746.81"/>
|
|
<polygon fill="#56c8c8" stroke="#56c8c8" stroke-width="1.4" points="2390.49,-1747.04 2387.82,-1740.12 2385.59,-1747.19 2390.49,-1747.04"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3620.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#56c8c8">  sync payment accounts  </text>
|
|
</g>
|
|
<!-- numberAutomat -->
|
|
<g id="node23" class="node">
|
|
<title>numberAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="2588,-1704 2588,-1739 2833.51,-1739 2833.51,-1704 2588,-1704"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2588,-1704 2588,-1739 2833.51,-1739 2833.51,-1704 2588,-1704"/>
|
|
<polygon fill="#33415c" stroke="none" points="2590,-1733 2590,-1737 2831.51,-1737 2831.51,-1733 2590,-1733"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2664.42" y="-1720.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">numberAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2647.72" y="-1710.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createListAutomat (Sequences)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="2588,-1682 2588,-1704 2833.51,-1704 2833.51,-1682 2588,-1682"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2588,-1682 2588,-1704 2833.51,-1704 2833.51,-1682 2588,-1682"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="2589,-1683 2589,-1703 2637,-1703 2637,-1683 2589,-1683"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2599.89" y="-1691.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2641" y="-1691" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">items: NumberSeq[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2744.02" y="-1689.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Invoice/receipt counters</text>
|
|
<polygon fill="#272e3d" stroke="none" points="2588,-1660 2588,-1682 2833.51,-1682 2833.51,-1660 2588,-1660"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2588,-1660 2588,-1682 2833.51,-1682 2833.51,-1660 2588,-1660"/>
|
|
<polygon fill="#143826" stroke="none" points="2589,-1661 2589,-1681 2649.2,-1681 2649.2,-1661 2589,-1661"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2603.77" y="-1669.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2653.2" y="-1669" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load() / reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2757.82" y="-1667.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Number series sync</text>
|
|
<polygon fill="#2a3242" stroke="none" points="2588,-1638 2588,-1660 2833.51,-1660 2833.51,-1638 2588,-1638"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2588,-1638 2588,-1660 2833.51,-1660 2833.51,-1638 2588,-1638"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="2589,-1639 2589,-1659 2647.05,-1659 2647.05,-1639 2589,-1639"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2611.36" y="-1647.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2651.05" y="-1647" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/number</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2759.14" y="-1645.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Document counters</text>
|
|
</g>
|
|
<!-- authAutomat->numberAutomat -->
|
|
<g id="edge16" class="edge">
|
|
<title>authAutomat:w->numberAutomat:n</title>
|
|
<g id="a_edge16"><a xlink:title="authAutomat → numberAutomat (sync number series)">
|
|
<path fill="none" stroke="#e0b25a" stroke-width="1.4" d="M4590.44,-1629C4317.33,-1629 4286.18,-1801.44 4017.76,-1851.82 3792.58,-1894.08 3211.5,-1896.34 2986.76,-1851.82 2859.65,-1826.64 2717.58,-1868.63 2710.99,-1747.04"/>
|
|
<polygon fill="#e0b25a" stroke="#e0b25a" stroke-width="1.4" points="2713.45,-1747.05 2710.81,-1740.12 2708.55,-1747.18 2713.45,-1747.05"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3220.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#e0b25a">  sync number series  </text>
|
|
</g>
|
|
<!-- posterminalAutomat -->
|
|
<g id="node24" class="node">
|
|
<title>posterminalAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="2123.73,-1375.2 2123.73,-1410.2 2373.78,-1410.2 2373.78,-1375.2 2123.73,-1375.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2123.73,-1375.2 2123.73,-1410.2 2373.78,-1410.2 2373.78,-1375.2 2123.73,-1375.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="2125.73,-1404.2 2125.73,-1408.2 2248.76,-1408.2 2248.76,-1404.2 2125.73,-1404.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="2248.76,-1404.2 2248.76,-1408.2 2371.78,-1408.2 2371.78,-1404.2 2248.76,-1404.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2190.42" y="-1391.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">posterminalAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2199.49" y="-1382.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">POS Terminals & Gating</text>
|
|
<polygon fill="#2a3242" stroke="none" points="2123.73,-1353.2 2123.73,-1375.2 2373.78,-1375.2 2373.78,-1353.2 2123.73,-1353.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2123.73,-1353.2 2123.73,-1375.2 2373.78,-1375.2 2373.78,-1353.2 2123.73,-1353.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="2124.73,-1354.2 2124.73,-1374.2 2172.8,-1374.2 2172.8,-1354.2 2124.73,-1354.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2135.66" y="-1362.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2176.8" y="-1362.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">terminals: Posterminal[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2299.43" y="-1361" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Hardware terminals</text>
|
|
<polygon fill="#272e3d" stroke="none" points="2123.73,-1331.2 2123.73,-1353.2 2373.78,-1353.2 2373.78,-1331.2 2123.73,-1331.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2123.73,-1331.2 2123.73,-1353.2 2373.78,-1353.2 2373.78,-1331.2 2123.73,-1331.2"/>
|
|
<polygon fill="#143826" stroke="none" points="2124.73,-1332.2 2124.73,-1352.2 2201,-1352.2 2201,-1332.2 2124.73,-1332.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2147.53" y="-1340.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2205" y="-1340.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">load()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2296.76" y="-1339" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch POS registers</text>
|
|
<polygon fill="#2a3242" stroke="none" points="2123.73,-1309.2 2123.73,-1331.2 2373.78,-1331.2 2373.78,-1309.2 2123.73,-1309.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2123.73,-1309.2 2123.73,-1331.2 2373.78,-1331.2 2373.78,-1309.2 2123.73,-1309.2"/>
|
|
<polygon fill="#143826" stroke="none" points="2124.73,-1310.2 2124.73,-1330.2 2181.77,-1330.2 2181.77,-1310.2 2124.73,-1310.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2137.92" y="-1318.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2185.77" y="-1318.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">create() / delete()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2291.87" y="-1317" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Terminal registrations</text>
|
|
<polygon fill="#272e3d" stroke="none" points="2123.73,-1287.2 2123.73,-1309.2 2373.78,-1309.2 2373.78,-1287.2 2123.73,-1287.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2123.73,-1287.2 2123.73,-1309.2 2373.78,-1309.2 2373.78,-1287.2 2123.73,-1287.2"/>
|
|
<polygon fill="#143826" stroke="none" points="2124.73,-1288.2 2124.73,-1308.2 2182.07,-1308.2 2182.07,-1288.2 2124.73,-1288.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2138.07" y="-1296.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2186.07" y="-1296.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">toggleCategory()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2292.75" y="-1295" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Gated category filters</text>
|
|
<polygon fill="#2a3242" stroke="none" points="2123.73,-1265.2 2123.73,-1287.2 2373.78,-1287.2 2373.78,-1265.2 2123.73,-1265.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2123.73,-1265.2 2123.73,-1287.2 2373.78,-1287.2 2373.78,-1265.2 2123.73,-1265.2"/>
|
|
<polygon fill="#182b40" stroke="none" points="2124.73,-1266.2 2124.73,-1286.2 2183.25,-1286.2 2183.25,-1266.2 2124.73,-1266.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2138.21" y="-1274.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2187.25" y="-1274.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectPosterminals()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2314.1" y="-1273" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Active registers</text>
|
|
<polygon fill="#272e3d" stroke="none" points="2123.73,-1243.2 2123.73,-1265.2 2373.78,-1265.2 2373.78,-1243.2 2123.73,-1243.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="2123.73,-1243.2 2123.73,-1265.2 2373.78,-1265.2 2373.78,-1243.2 2123.73,-1243.2"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="2124.73,-1244.2 2124.73,-1264.2 2172.73,-1264.2 2172.73,-1244.2 2124.73,-1244.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="2142.06" y="-1252.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2176.73" y="-1252.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/posterminal</text>
|
|
<text xml:space="preserve" text-anchor="start" x="2284.75" y="-1251" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Terminal device configs</text>
|
|
</g>
|
|
<!-- authAutomat->posterminalAutomat -->
|
|
<g id="edge10" class="edge">
|
|
<title>authAutomat:w->posterminalAutomat:n</title>
|
|
<g id="a_edge10"><a xlink:title="authAutomat → posterminalAutomat (sync terminals on authed)">
|
|
<path fill="none" stroke="#58d18a" stroke-width="1.4" d="M4590.44,-1629C4333.74,-1629 4273.76,-1572.96 4017.76,-1554 3741.57,-1533.54 3045.98,-1570.34 2771.7,-1532 2747.28,-1528.59 2369.44,-1448.31 2316.43,-1415.72"/>
|
|
<polygon fill="#58d18a" stroke="#58d18a" stroke-width="1.4" points="2318.31,-1414.15 2311.73,-1410.74 2314.75,-1417.51 2318.31,-1414.15"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2826.73" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#58d18a">  sync terminals on authed  </text>
|
|
</g>
|
|
<!-- chatAutomat -->
|
|
<g id="node25" class="node">
|
|
<title>chatAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="4907.66,-1408.2 4907.66,-1443.2 5199.85,-1443.2 5199.85,-1408.2 4907.66,-1408.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1408.2 4907.66,-1443.2 5199.85,-1443.2 5199.85,-1408.2 4907.66,-1408.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="4909.66,-1437.2 4909.66,-1441.2 5005.73,-1441.2 5005.73,-1437.2 4909.66,-1437.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="5005.73,-1437.2 5005.73,-1441.2 5101.79,-1441.2 5101.79,-1437.2 5005.73,-1437.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="5101.79,-1437.2 5101.79,-1441.2 5197.85,-1441.2 5197.85,-1437.2 5101.79,-1437.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5017.09" y="-1424.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">chatAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4999.74" y="-1415.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">AI Assistant Drawer & SSE</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4907.66,-1386.2 4907.66,-1408.2 5199.85,-1408.2 5199.85,-1386.2 4907.66,-1386.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1386.2 4907.66,-1408.2 5199.85,-1408.2 5199.85,-1386.2 4907.66,-1386.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="4908.66,-1387.2 4908.66,-1407.2 4974.22,-1407.2 4974.22,-1387.2 4908.66,-1387.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4928.33" y="-1395.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4978.22" y="-1395.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">isOpen: boolean</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5099.69" y="-1394" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Docked chat drawer toggle</text>
|
|
<polygon fill="#272e3d" stroke="none" points="4907.66,-1364.2 4907.66,-1386.2 5199.85,-1386.2 5199.85,-1364.2 4907.66,-1364.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1364.2 4907.66,-1386.2 5199.85,-1386.2 5199.85,-1364.2 4907.66,-1364.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="4908.66,-1365.2 4908.66,-1385.2 4978.37,-1385.2 4978.37,-1365.2 4908.66,-1365.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4930.41" y="-1373.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4982.37" y="-1373.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">conversations: []</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5114.37" y="-1372" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Conversation sessions</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4907.66,-1342.2 4907.66,-1364.2 5199.85,-1364.2 5199.85,-1342.2 4907.66,-1342.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1342.2 4907.66,-1364.2 5199.85,-1364.2 5199.85,-1342.2 4907.66,-1342.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="4908.66,-1343.2 4908.66,-1363.2 4959.81,-1363.2 4959.81,-1343.2 4908.66,-1343.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4921.12" y="-1351.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4963.81" y="-1351.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">messages: ModelMessage[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5110.37" y="-1350" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Live message transcript</text>
|
|
<polygon fill="#272e3d" stroke="none" points="4907.66,-1320.2 4907.66,-1342.2 5199.85,-1342.2 5199.85,-1320.2 4907.66,-1320.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1320.2 4907.66,-1342.2 5199.85,-1342.2 5199.85,-1320.2 4907.66,-1320.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="4908.66,-1321.2 4908.66,-1341.2 4967.27,-1341.2 4967.27,-1321.2 4908.66,-1321.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4924.85" y="-1329.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4971.27" y="-1329.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">sseStatus: 'connected'</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5108.6" y="-1328" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Token streaming stream</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4907.66,-1298.2 4907.66,-1320.2 5199.85,-1320.2 5199.85,-1298.2 4907.66,-1298.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1298.2 4907.66,-1320.2 5199.85,-1320.2 5199.85,-1298.2 4907.66,-1298.2"/>
|
|
<polygon fill="#143826" stroke="none" points="4908.66,-1299.2 4908.66,-1319.2 4973.59,-1319.2 4973.59,-1299.2 4908.66,-1299.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4925.8" y="-1307.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4977.59" y="-1307.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">sendMessage(text)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5109.48" y="-1306" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Prompt model with tools</text>
|
|
<polygon fill="#272e3d" stroke="none" points="4907.66,-1276.2 4907.66,-1298.2 5199.85,-1298.2 5199.85,-1276.2 4907.66,-1276.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1276.2 4907.66,-1298.2 5199.85,-1298.2 5199.85,-1276.2 4907.66,-1276.2"/>
|
|
<polygon fill="#143826" stroke="none" points="4908.66,-1277.2 4908.66,-1297.2 4979.48,-1297.2 4979.48,-1277.2 4908.66,-1277.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4928.74" y="-1285.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4983.48" y="-1285.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">answerAskUser()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5118.81" y="-1284" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Interactive tool modal</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4907.66,-1254.2 4907.66,-1276.2 5199.85,-1276.2 5199.85,-1254.2 4907.66,-1254.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1254.2 4907.66,-1276.2 5199.85,-1276.2 5199.85,-1254.2 4907.66,-1254.2"/>
|
|
<polygon fill="#182b40" stroke="none" points="4908.66,-1255.2 4908.66,-1275.2 4974.15,-1275.2 4974.15,-1255.2 4908.66,-1255.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4925.63" y="-1263.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4978.15" y="-1263.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">userEnv / routeTools</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5120.58" y="-1262" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Client navigation tool</text>
|
|
<polygon fill="#272e3d" stroke="none" points="4907.66,-1232.2 4907.66,-1254.2 5199.85,-1254.2 5199.85,-1232.2 4907.66,-1232.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1232.2 4907.66,-1254.2 5199.85,-1254.2 5199.85,-1232.2 4907.66,-1232.2"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="4908.66,-1233.2 4908.66,-1253.2 4956.66,-1253.2 4956.66,-1233.2 4908.66,-1233.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4925.99" y="-1241.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4960.66" y="-1241.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">POST /api/modelconversation</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5110.36" y="-1240" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">AI conversation session</text>
|
|
<polygon fill="#2a3242" stroke="none" points="4907.66,-1210.2 4907.66,-1232.2 5199.85,-1232.2 5199.85,-1210.2 4907.66,-1210.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="4907.66,-1210.2 4907.66,-1232.2 5199.85,-1232.2 5199.85,-1210.2 4907.66,-1210.2"/>
|
|
<polygon fill="#3a181e" stroke="none" points="4908.66,-1211.2 4908.66,-1231.2 4968.96,-1231.2 4968.96,-1211.2 4908.66,-1211.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="4930.81" y="-1219.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="4972.96" y="-1219.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">modelconversation/events</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5131.71" y="-1218" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Live token stream</text>
|
|
</g>
|
|
<!-- authAutomat->chatAutomat -->
|
|
<g id="edge18" class="edge">
|
|
<title>authAutomat:e->chatAutomat:n</title>
|
|
<g id="a_edge18"><a xlink:title="authAutomat → chatAutomat (auth chat & reload)">
|
|
<path fill="none" stroke="#ff5f9e" stroke-width="1.4" d="M4857.07,-1629C4884.97,-1629 5029.79,-1494.73 5051.13,-1450.89"/>
|
|
<polygon fill="#ff5f9e" stroke="#ff5f9e" stroke-width="1.4" points="5053.46,-1451.64 5053.14,-1444.23 5048.77,-1450.22 5053.46,-1451.64"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5030.45" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff5f9e">  auth chat & reload  </text>
|
|
</g>
|
|
<!-- vfsAutomat -->
|
|
<g id="node26" class="node">
|
|
<title>vfsAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="5375.85,-1386.2 5375.85,-1421.2 5629.67,-1421.2 5629.67,-1386.2 5375.85,-1386.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5375.85,-1386.2 5375.85,-1421.2 5629.67,-1421.2 5629.67,-1386.2 5375.85,-1386.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="5377.85,-1415.2 5377.85,-1419.2 5461.12,-1419.2 5461.12,-1415.2 5377.85,-1415.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="5461.12,-1415.2 5461.12,-1419.2 5544.39,-1419.2 5544.39,-1415.2 5461.12,-1415.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="5544.39,-1415.2 5544.39,-1419.2 5627.67,-1419.2 5627.67,-1415.2 5544.39,-1415.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5469.75" y="-1402.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">vfsAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5449.24" y="-1393.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Virtual Filesystem Explorer</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5375.85,-1364.2 5375.85,-1386.2 5629.67,-1386.2 5629.67,-1364.2 5375.85,-1364.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5375.85,-1364.2 5375.85,-1386.2 5629.67,-1386.2 5629.67,-1364.2 5375.85,-1364.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="5376.85,-1365.2 5376.85,-1385.2 5434.77,-1385.2 5434.77,-1365.2 5376.85,-1365.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5392.7" y="-1373.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5438.77" y="-1373.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">files: VfsFile[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5532.19" y="-1372" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company VFS workspace</text>
|
|
<polygon fill="#272e3d" stroke="none" points="5375.85,-1342.2 5375.85,-1364.2 5629.67,-1364.2 5629.67,-1342.2 5375.85,-1342.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5375.85,-1342.2 5375.85,-1364.2 5629.67,-1364.2 5629.67,-1342.2 5375.85,-1342.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="5376.85,-1343.2 5376.85,-1363.2 5438.54,-1363.2 5438.54,-1343.2 5376.85,-1343.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5394.58" y="-1351.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5442.54" y="-1351.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectedFileName</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5562.42" y="-1350" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Current active file</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5375.85,-1320.2 5375.85,-1342.2 5629.67,-1342.2 5629.67,-1320.2 5375.85,-1320.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5375.85,-1320.2 5375.85,-1342.2 5629.67,-1342.2 5629.67,-1320.2 5375.85,-1320.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="5376.85,-1321.2 5376.85,-1341.2 5435.55,-1341.2 5435.55,-1321.2 5376.85,-1321.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5393.09" y="-1329.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5439.55" y="-1329.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">fileContent / isDirty</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5560.64" y="-1328" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Editor buffer & diff</text>
|
|
<polygon fill="#272e3d" stroke="none" points="5375.85,-1298.2 5375.85,-1320.2 5629.67,-1320.2 5629.67,-1298.2 5375.85,-1298.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5375.85,-1298.2 5375.85,-1320.2 5629.67,-1320.2 5629.67,-1298.2 5375.85,-1298.2"/>
|
|
<polygon fill="#143826" stroke="none" points="5376.85,-1299.2 5376.85,-1319.2 5429.35,-1319.2 5429.35,-1299.2 5376.85,-1299.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5387.77" y="-1307.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5433.35" y="-1307.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectFile() / saveFile()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5557.07" y="-1306" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Applet editor buffer</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5375.85,-1276.2 5375.85,-1298.2 5629.67,-1298.2 5629.67,-1276.2 5375.85,-1276.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5375.85,-1276.2 5375.85,-1298.2 5629.67,-1298.2 5629.67,-1276.2 5375.85,-1276.2"/>
|
|
<polygon fill="#143826" stroke="none" points="5376.85,-1277.2 5376.85,-1297.2 5424.85,-1297.2 5424.85,-1277.2 5376.85,-1277.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5385.51" y="-1285.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5428.85" y="-1285.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">uploadFiles() / deleteFile()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5560.19" y="-1284" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">File manipulations</text>
|
|
<polygon fill="#272e3d" stroke="none" points="5375.85,-1254.2 5375.85,-1276.2 5629.67,-1276.2 5629.67,-1254.2 5375.85,-1254.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5375.85,-1254.2 5375.85,-1276.2 5629.67,-1276.2 5629.67,-1254.2 5375.85,-1254.2"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="5376.85,-1255.2 5376.85,-1275.2 5444.92,-1275.2 5444.92,-1255.2 5376.85,-1255.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5404.22" y="-1263.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5448.92" y="-1263.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/vfs</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5554.86" y="-1262" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">VFS directory index</text>
|
|
<polygon fill="#2a3242" stroke="none" points="5375.85,-1232.2 5375.85,-1254.2 5629.67,-1254.2 5629.67,-1232.2 5375.85,-1232.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="5375.85,-1232.2 5375.85,-1254.2 5629.67,-1254.2 5629.67,-1232.2 5375.85,-1232.2"/>
|
|
<polygon fill="#3a181e" stroke="none" points="5376.85,-1233.2 5376.85,-1253.2 5458.77,-1253.2 5458.77,-1233.2 5376.85,-1233.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="5409.8" y="-1241.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#f87171">SSE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5462.77" y="-1241.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">vfs</text>
|
|
<text xml:space="preserve" text-anchor="start" x="5553.08" y="-1240" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">VFS mutation signal</text>
|
|
</g>
|
|
<!-- authAutomat->vfsAutomat -->
|
|
<g id="edge19" class="edge">
|
|
<title>authAutomat:e->vfsAutomat:n</title>
|
|
<g id="a_edge19"><a xlink:title="authAutomat → vfsAutomat (load company vfs)">
|
|
<path fill="none" stroke="#ffb25a" stroke-width="1.4" d="M4857.07,-1629C4883.3,-1629 4869.69,-1592.41 4856.07,-1570 4836.3,-1537.48 4759.05,-1548.34 4785.72,-1521.2 4794.6,-1512.16 5229.48,-1516.33 5241.76,-1513.2 5325.1,-1491.93 5413.07,-1508.12 5419.15,-1429.21"/>
|
|
<polygon fill="#ffb25a" stroke="#ffb25a" stroke-width="1.4" points="5421.59,-1429.4 5419.4,-1422.32 5416.7,-1429.22 5421.59,-1429.4"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4825.74" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ffb25a">  load company vfs  </text>
|
|
</g>
|
|
<!-- articleHistoryGridAutomat -->
|
|
<g id="node27" class="node">
|
|
<title>articleHistoryGridAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="7883.74,-1715 7883.74,-1750 8131.77,-1750 8131.77,-1715 7883.74,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7883.74,-1715 7883.74,-1750 8131.77,-1750 8131.77,-1715 7883.74,-1715"/>
|
|
<polygon fill="#33415c" stroke="none" points="7885.74,-1744 7885.74,-1748 8129.77,-1748 8129.77,-1744 7885.74,-1744"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7932.74" y="-1731.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">articleHistoryGridAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7953.24" y="-1721.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createGridAutomat (Article)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="7883.74,-1693 7883.74,-1715 8131.77,-1715 8131.77,-1693 7883.74,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7883.74,-1693 7883.74,-1715 8131.77,-1715 8131.77,-1693 7883.74,-1693"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="7884.74,-1694 7884.74,-1714 7932.74,-1714 7932.74,-1694 7884.74,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7895.63" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7936.74" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">rows: [] / totalRows</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8036.96" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Block size 50 virtual rows</text>
|
|
<polygon fill="#272e3d" stroke="none" points="7883.74,-1671 7883.74,-1693 8131.77,-1693 8131.77,-1671 7883.74,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7883.74,-1671 7883.74,-1693 8131.77,-1693 8131.77,-1671 7883.74,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="7884.74,-1672 7884.74,-1692 7938.41,-1692 7938.41,-1672 7884.74,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7896.24" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7942.41" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">fetchRows(viewport)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8060.08" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Infinite scroll query</text>
|
|
<polygon fill="#2a3242" stroke="none" points="7883.74,-1649 7883.74,-1671 8131.77,-1671 8131.77,-1649 7883.74,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7883.74,-1649 7883.74,-1671 8131.77,-1671 8131.77,-1649 7883.74,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="7884.74,-1650 7884.74,-1670 7949.33,-1670 7949.33,-1650 7884.74,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7901.7" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7953.33" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8031.17" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Reload on company switch</text>
|
|
<polygon fill="#272e3d" stroke="none" points="7883.74,-1627 7883.74,-1649 8131.77,-1649 8131.77,-1627 7883.74,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="7883.74,-1627 7883.74,-1649 8131.77,-1649 8131.77,-1627 7883.74,-1627"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="7884.74,-1628 7884.74,-1648 7933.1,-1648 7933.1,-1628 7884.74,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="7902.25" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="7937.1" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/article/history</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8054.73" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Infinite audit window</text>
|
|
</g>
|
|
<!-- authAutomat->articleHistoryGridAutomat -->
|
|
<g id="edge20" class="edge">
|
|
<title>authAutomat:e->articleHistoryGridAutomat:n</title>
|
|
<g id="a_edge20"><a xlink:title="authAutomat → articleHistoryGridAutomat (reload history on authed)">
|
|
<path fill="none" stroke="#66b3ff" stroke-width="1.4" d="M4857.07,-1629C4970.33,-1629 4883.15,-1794.36 4980.76,-1851.82 5049.17,-1892.09 7762.31,-1873.24 7838.76,-1851.82 7920.44,-1828.92 8001.83,-1836.34 8007.45,-1757.92"/>
|
|
<polygon fill="#66b3ff" stroke="#66b3ff" stroke-width="1.4" points="8009.89,-1758.2 8007.68,-1751.12 8004.99,-1758.03 8009.89,-1758.2"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="7317.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#66b3ff">  reload history on authed  </text>
|
|
</g>
|
|
<!-- globalHistoryGridAutomat -->
|
|
<g id="node28" class="node">
|
|
<title>globalHistoryGridAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="8216,-1715 8216,-1750 8465.51,-1750 8465.51,-1715 8216,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8216,-1715 8216,-1750 8465.51,-1750 8465.51,-1715 8216,-1715"/>
|
|
<polygon fill="#33415c" stroke="none" points="8218,-1744 8218,-1748 8463.51,-1748 8463.51,-1744 8218,-1744"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8265.75" y="-1731.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">globalHistoryGridAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8285.73" y="-1721.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createGridAutomat (Global)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="8216,-1693 8216,-1715 8465.51,-1715 8465.51,-1693 8216,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8216,-1693 8216,-1715 8465.51,-1715 8465.51,-1693 8216,-1693"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="8217,-1694 8217,-1714 8265.5,-1714 8265.5,-1694 8217,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8228.14" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8269.5" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">rows: [] / totalRows</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8370.7" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Block size 50 virtual rows</text>
|
|
<polygon fill="#272e3d" stroke="none" points="8216,-1671 8216,-1693 8465.51,-1693 8465.51,-1671 8216,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8216,-1671 8216,-1693 8465.51,-1693 8465.51,-1671 8216,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="8217,-1672 8217,-1692 8271.16,-1692 8271.16,-1672 8217,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8228.75" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8275.16" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">fetchRows(viewport)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8393.81" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Infinite scroll query</text>
|
|
<polygon fill="#2a3242" stroke="none" points="8216,-1649 8216,-1671 8465.51,-1671 8465.51,-1649 8216,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8216,-1649 8216,-1671 8465.51,-1671 8465.51,-1649 8216,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="8217,-1650 8217,-1670 8282.08,-1670 8282.08,-1650 8217,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8234.21" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8286.08" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8364.9" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Reload on company switch</text>
|
|
<polygon fill="#272e3d" stroke="none" points="8216,-1627 8216,-1649 8465.51,-1649 8465.51,-1627 8216,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8216,-1627 8216,-1649 8465.51,-1649 8465.51,-1627 8216,-1627"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="8217,-1628 8217,-1648 8265,-1648 8265,-1628 8217,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8234.34" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8269" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/globalhistory</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8383.13" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Company global audit</text>
|
|
</g>
|
|
<!-- authAutomat->globalHistoryGridAutomat -->
|
|
<g id="edge21" class="edge">
|
|
<title>authAutomat:e->globalHistoryGridAutomat:n</title>
|
|
<g id="a_edge21"><a xlink:title="authAutomat → globalHistoryGridAutomat (reload audit on authed)">
|
|
<path fill="none" stroke="#5aa7ff" stroke-width="1.4" d="M4857.07,-1629C4970.33,-1629 4883.15,-1794.36 4980.76,-1851.82 5057.19,-1896.81 8088.42,-1875.98 8173.76,-1851.82 8254.67,-1828.91 8334.91,-1835.63 8340.45,-1757.85"/>
|
|
<polygon fill="#5aa7ff" stroke="#5aa7ff" stroke-width="1.4" points="8342.89,-1758.2 8340.68,-1751.12 8337.99,-1758.03 8342.89,-1758.2"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5131.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#5aa7ff">  reload audit on authed  </text>
|
|
</g>
|
|
<!-- ledgerHistoryGridAutomat -->
|
|
<g id="node29" class="node">
|
|
<title>ledgerHistoryGridAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="8549.55,-1715 8549.55,-1750 8813.97,-1750 8813.97,-1715 8549.55,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8549.55,-1715 8549.55,-1750 8813.97,-1750 8813.97,-1715 8549.55,-1715"/>
|
|
<polygon fill="#33415c" stroke="none" points="8551.55,-1744 8551.55,-1748 8811.97,-1748 8811.97,-1744 8551.55,-1744"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8606.41" y="-1731.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">ledgerHistoryGridAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8625.73" y="-1721.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">createGridAutomat (Ledger)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="8549.55,-1693 8549.55,-1715 8813.97,-1715 8813.97,-1693 8549.55,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8549.55,-1693 8549.55,-1715 8813.97,-1715 8813.97,-1693 8549.55,-1693"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="8550.55,-1694 8550.55,-1714 8604.01,-1714 8604.01,-1694 8550.55,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8564.17" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8608.01" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">rows: [] / totalRows</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8719.16" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Block size 50 virtual rows</text>
|
|
<polygon fill="#272e3d" stroke="none" points="8549.55,-1671 8549.55,-1693 8813.97,-1693 8813.97,-1671 8549.55,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8549.55,-1671 8549.55,-1693 8813.97,-1693 8813.97,-1671 8549.55,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="8550.55,-1672 8550.55,-1692 8609.67,-1692 8609.67,-1672 8550.55,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8564.78" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8613.67" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">fetchRows(viewport)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8742.27" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Infinite scroll query</text>
|
|
<polygon fill="#2a3242" stroke="none" points="8549.55,-1649 8549.55,-1671 8813.97,-1671 8813.97,-1649 8549.55,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8549.55,-1649 8549.55,-1671 8813.97,-1671 8813.97,-1649 8549.55,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="8550.55,-1650 8550.55,-1670 8620.59,-1670 8620.59,-1650 8550.55,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8570.24" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8624.59" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8713.36" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Reload on company switch</text>
|
|
<polygon fill="#272e3d" stroke="none" points="8549.55,-1627 8549.55,-1649 8813.97,-1649 8813.97,-1627 8549.55,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="8549.55,-1627 8549.55,-1649 8813.97,-1649 8813.97,-1627 8549.55,-1627"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="8550.55,-1628 8550.55,-1648 8598.55,-1648 8598.55,-1628 8550.55,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="8567.88" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8602.55" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/ledger/history</text>
|
|
<text xml:space="preserve" text-anchor="start" x="8720.01" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Append-only ledger audit</text>
|
|
</g>
|
|
<!-- authAutomat->ledgerHistoryGridAutomat -->
|
|
<g id="edge22" class="edge">
|
|
<title>authAutomat:e->ledgerHistoryGridAutomat:n</title>
|
|
<g id="a_edge22"><a xlink:title="authAutomat → ledgerHistoryGridAutomat (reload ledger on authed)">
|
|
<path fill="none" stroke="#6bdf9a" stroke-width="1.4" d="M4857.07,-1629C4970.33,-1629 4883.15,-1794.36 4980.76,-1851.82 5065.19,-1901.52 8413.25,-1877.65 8507.76,-1851.82 8591.36,-1828.96 8675.62,-1838.12 8681.44,-1758.11"/>
|
|
<polygon fill="#6bdf9a" stroke="#6bdf9a" stroke-width="1.4" points="8683.88,-1758.2 8681.68,-1751.12 8678.99,-1758.03 8683.88,-1758.2"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="7924.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#6bdf9a">  reload ledger on authed  </text>
|
|
</g>
|
|
<!-- sseAutomat->categoryAutomat -->
|
|
<g id="edge23" class="edge">
|
|
<title>sseAutomat:w->categoryAutomat:n</title>
|
|
<g id="a_edge23"><a xlink:title="sseAutomat → categoryAutomat ('category' sse trigger)">
|
|
<path fill="none" stroke="#f5c15c" stroke-width="1.4" d="M5021.83,-1627C4957.85,-1627 4959.41,-1571.11 4897.76,-1554 4836.57,-1537.02 2675.22,-1534.09 2611.76,-1532 2526.33,-1529.19 2505.17,-1524.18 2419.76,-1521.2 2411.62,-1520.92 1839,-1519 1833.28,-1513.2 1733.09,-1411.63 1740.3,-1300.41 1833.28,-1192.2 1864.85,-1155.46 2000.51,-1163.72 2048.76,-1159.4 2116.59,-1153.32 3232.54,-1161.48 3315.27,-1098.95"/>
|
|
<polygon fill="#f5c15c" stroke="#f5c15c" stroke-width="1.4" points="3317.26,-1100.4 3318.97,-1093.18 3313.13,-1097.75 3317.26,-1100.4"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="1879.52" y="-1324" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#f5c15c">  'category' sse trigger  </text>
|
|
</g>
|
|
<!-- categoryViewAutomat -->
|
|
<g id="node4" class="node">
|
|
<title>categoryViewAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="3265.56,-733.6 3265.56,-768.6 3559.95,-768.6 3559.95,-733.6 3265.56,-733.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3265.56,-733.6 3265.56,-768.6 3559.95,-768.6 3559.95,-733.6 3265.56,-733.6"/>
|
|
<polygon fill="#33415c" stroke="none" points="3267.56,-762.6 3267.56,-766.6 3412.76,-766.6 3412.76,-762.6 3267.56,-762.6"/>
|
|
<polygon fill="#33415c" stroke="none" points="3412.76,-762.6 3412.76,-766.6 3557.95,-766.6 3557.95,-762.6 3412.76,-762.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3349.74" y="-749.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">categoryViewAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3359.48" y="-740.5" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">KeyedAutomat (Slug Path)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3265.56,-711.6 3265.56,-733.6 3559.95,-733.6 3559.95,-711.6 3265.56,-711.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3265.56,-711.6 3265.56,-733.6 3559.95,-733.6 3559.95,-711.6 3265.56,-711.6"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3266.56,-712.6 3266.56,-732.6 3324.48,-732.6 3324.48,-712.6 3266.56,-712.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3282.41" y="-721.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3328.48" y="-720.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">views: Map<slug, Data></text>
|
|
<text xml:space="preserve" text-anchor="start" x="3469.14" y="-719.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Articles & direct children</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3265.56,-689.6 3265.56,-711.6 3559.95,-711.6 3559.95,-689.6 3265.56,-689.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3265.56,-689.6 3265.56,-711.6 3559.95,-711.6 3559.95,-689.6 3265.56,-689.6"/>
|
|
<polygon fill="#143826" stroke="none" points="3266.56,-690.6 3266.56,-710.6 3327.08,-710.6 3327.08,-690.6 3266.56,-690.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3281.49" y="-699.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3331.08" y="-698.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">loadAllCategoryViews()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3475.81" y="-697.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Prewarm all tree slugs</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3265.56,-667.6 3265.56,-689.6 3559.95,-689.6 3559.95,-667.6 3265.56,-667.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3265.56,-667.6 3265.56,-689.6 3559.95,-689.6 3559.95,-667.6 3265.56,-667.6"/>
|
|
<polygon fill="#143826" stroke="none" points="3266.56,-668.6 3266.56,-688.6 3316.63,-688.6 3316.63,-668.6 3266.56,-668.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3276.27" y="-677.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3320.63" y="-676.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reloadLoadedCategoryViews()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3476.69" y="-675.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Refresh cached views</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3265.56,-645.6 3265.56,-667.6 3559.95,-667.6 3559.95,-645.6 3265.56,-645.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3265.56,-645.6 3265.56,-667.6 3559.95,-667.6 3559.95,-645.6 3265.56,-645.6"/>
|
|
<polygon fill="#143826" stroke="none" points="3266.56,-646.6 3266.56,-666.6 3321.07,-666.6 3321.07,-646.6 3266.56,-646.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3278.49" y="-655.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3325.07" y="-654.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">invalidateAllCategoryViews()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3483.36" y="-653.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Clear on SSE signal</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3265.56,-623.6 3265.56,-645.6 3559.95,-645.6 3559.95,-623.6 3265.56,-623.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3265.56,-623.6 3265.56,-645.6 3559.95,-645.6 3559.95,-623.6 3265.56,-623.6"/>
|
|
<polygon fill="#182b40" stroke="none" points="3266.56,-624.6 3266.56,-644.6 3315.3,-644.6 3315.3,-624.6 3266.56,-624.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3275.15" y="-633.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3319.3" y="-632.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">collectLoadedCategoryViewData()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3490.46" y="-631.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Extract union data</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3265.56,-601.6 3265.56,-623.6 3559.95,-623.6 3559.95,-601.6 3265.56,-601.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3265.56,-601.6 3265.56,-623.6 3559.95,-623.6 3559.95,-601.6 3265.56,-601.6"/>
|
|
<polygon fill="#182b40" stroke="none" points="3266.56,-602.6 3266.56,-622.6 3314.56,-622.6 3314.56,-602.6 3266.56,-602.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3274.78" y="-611.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3318.56" y="-610.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">getOrCreateCategoryAutomat()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3474.92" y="-609.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Per-slug reactive store</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3265.56,-579.6 3265.56,-601.6 3559.95,-601.6 3559.95,-579.6 3265.56,-579.6"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3265.56,-579.6 3265.56,-601.6 3559.95,-601.6 3559.95,-579.6 3265.56,-579.6"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="3266.56,-580.6 3266.56,-600.6 3318.81,-600.6 3318.81,-580.6 3266.56,-580.6"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3286.02" y="-589.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3322.81" y="-588.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/category/:id/articles</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3477.13" y="-587.4" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Category article batch</text>
|
|
</g>
|
|
<!-- sseAutomat->categoryViewAutomat -->
|
|
<g id="edge24" class="edge">
|
|
<title>sseAutomat:w->categoryViewAutomat:n</title>
|
|
<g id="a_edge24"><a xlink:title="sseAutomat → categoryViewAutomat (invalidate views on sse)">
|
|
<path fill="none" stroke="#ff7fc2" stroke-width="1.4" d="M5021.83,-1627C4957.85,-1627 4959.11,-1572.13 4897.76,-1554 4826.13,-1532.83 4285.83,-1558.91 4226.76,-1513.2 4105.67,-1419.5 4227.48,-1279.58 4101.76,-1192.2 4036.1,-1146.57 2718.81,-1227.17 2662.71,-1170.2 2547.14,-1052.85 2617.73,-914.64 2743.76,-808.6 2804.56,-757.44 3435.85,-843.3 3482.62,-776.07"/>
|
|
<polygon fill="#ff7fc2" stroke="#ff7fc2" stroke-width="1.4" points="3484.88,-777.03 3484.7,-769.62 3480.22,-775.52 3484.88,-777.03"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2713.73" y="-1162.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff7fc2">  invalidate views on sse  </text>
|
|
</g>
|
|
<!-- artikelAutomat -->
|
|
<g id="node5" class="node">
|
|
<title>artikelAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="3168.93,-1397.2 3168.93,-1432.2 3450.59,-1432.2 3450.59,-1397.2 3168.93,-1397.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1397.2 3168.93,-1432.2 3450.59,-1432.2 3450.59,-1397.2 3168.93,-1397.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="3170.93,-1426.2 3170.93,-1430.2 3226.46,-1430.2 3226.46,-1426.2 3170.93,-1426.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="3226.46,-1426.2 3226.46,-1430.2 3281.99,-1430.2 3281.99,-1426.2 3226.46,-1426.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="3281.99,-1426.2 3281.99,-1430.2 3337.52,-1430.2 3337.52,-1426.2 3281.99,-1426.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="3337.52,-1426.2 3337.52,-1430.2 3393.05,-1430.2 3393.05,-1426.2 3337.52,-1426.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="3393.05,-1426.2 3393.05,-1430.2 3448.59,-1430.2 3448.59,-1426.2 3393.05,-1426.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3267.75" y="-1413.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">artikelAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3244.49" y="-1404.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">In-Memory Article Record Cache</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3168.93,-1375.2 3168.93,-1397.2 3450.59,-1397.2 3450.59,-1375.2 3168.93,-1375.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1375.2 3168.93,-1397.2 3450.59,-1397.2 3450.59,-1375.2 3168.93,-1375.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3169.93,-1376.2 3169.93,-1396.2 3217.93,-1396.2 3217.93,-1376.2 3169.93,-1376.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3180.82" y="-1384.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3221.93" y="-1384.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">articles: Map<sku, Object></text>
|
|
<text xml:space="preserve" text-anchor="start" x="3356.65" y="-1383" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Deduplicated SKU cache</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3168.93,-1353.2 3168.93,-1375.2 3450.59,-1375.2 3450.59,-1353.2 3168.93,-1353.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1353.2 3168.93,-1375.2 3450.59,-1375.2 3450.59,-1353.2 3168.93,-1353.2"/>
|
|
<polygon fill="#143826" stroke="none" points="3169.93,-1354.2 3169.93,-1374.2 3235.28,-1374.2 3235.28,-1354.2 3169.93,-1354.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3187.27" y="-1362.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3239.28" y="-1362.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">loadArticle(sku)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3357.55" y="-1361" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch or cached promise</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3168.93,-1331.2 3168.93,-1353.2 3450.59,-1353.2 3450.59,-1331.2 3168.93,-1331.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1331.2 3168.93,-1353.2 3450.59,-1353.2 3450.59,-1331.2 3168.93,-1331.2"/>
|
|
<polygon fill="#143826" stroke="none" points="3169.93,-1332.2 3169.93,-1352.2 3233.9,-1352.2 3233.9,-1332.2 3169.93,-1332.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3186.58" y="-1340.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3237.9" y="-1340.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reloadArticle(sku)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3362.87" y="-1339" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Silent background sync</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3168.93,-1309.2 3168.93,-1331.2 3450.59,-1331.2 3450.59,-1309.2 3168.93,-1309.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1309.2 3168.93,-1331.2 3450.59,-1331.2 3450.59,-1309.2 3168.93,-1309.2"/>
|
|
<polygon fill="#143826" stroke="none" points="3169.93,-1310.2 3169.93,-1330.2 3225.53,-1330.2 3225.53,-1310.2 3169.93,-1310.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3182.4" y="-1318.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3229.53" y="-1318.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">setArticleName(sku, name)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3381.13" y="-1317" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Optimistic rename</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3168.93,-1287.2 3168.93,-1309.2 3450.59,-1309.2 3450.59,-1287.2 3168.93,-1287.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1287.2 3168.93,-1309.2 3450.59,-1309.2 3450.59,-1287.2 3168.93,-1287.2"/>
|
|
<polygon fill="#143826" stroke="none" points="3169.93,-1288.2 3169.93,-1308.2 3237.76,-1308.2 3237.76,-1288.2 3169.93,-1288.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3188.51" y="-1296.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3241.76" y="-1296.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">clearArticle(sku)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3367.79" y="-1295" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Evict SKU from cache</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3168.93,-1265.2 3168.93,-1287.2 3450.59,-1287.2 3450.59,-1265.2 3168.93,-1265.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1265.2 3168.93,-1287.2 3450.59,-1287.2 3450.59,-1265.2 3168.93,-1265.2"/>
|
|
<polygon fill="#182b40" stroke="none" points="3169.93,-1266.2 3169.93,-1286.2 3240.54,-1286.2 3240.54,-1266.2 3169.93,-1266.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3189.45" y="-1274.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3244.54" y="-1274.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">getArticle(sku)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3367.77" y="-1273" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Sync constructor read</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3168.93,-1243.2 3168.93,-1265.2 3450.59,-1265.2 3450.59,-1243.2 3168.93,-1243.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1243.2 3168.93,-1265.2 3450.59,-1265.2 3450.59,-1243.2 3168.93,-1243.2"/>
|
|
<polygon fill="#182b40" stroke="none" points="3169.93,-1244.2 3169.93,-1264.2 3223.45,-1264.2 3223.45,-1244.2 3169.93,-1244.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3180.91" y="-1252.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3227.45" y="-1252.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">createArticleSelector(sku)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3370.44" y="-1251" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fine-grained selector</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3168.93,-1221.2 3168.93,-1243.2 3450.59,-1243.2 3450.59,-1221.2 3168.93,-1221.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3168.93,-1221.2 3168.93,-1243.2 3450.59,-1243.2 3450.59,-1221.2 3168.93,-1221.2"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="3169.93,-1222.2 3169.93,-1242.2 3233.16,-1242.2 3233.16,-1222.2 3169.93,-1222.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3194.88" y="-1230.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3237.16" y="-1230.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/article/:sku</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3371.78" y="-1229" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Full article document</text>
|
|
</g>
|
|
<!-- sseAutomat->artikelAutomat -->
|
|
<g id="edge26" class="edge">
|
|
<title>sseAutomat:w->artikelAutomat:n</title>
|
|
<g id="a_edge26"><a xlink:title="sseAutomat → artikelAutomat ('article-<sku>' sse reload)">
|
|
<path fill="none" stroke="#5cd6d6" stroke-width="1.4" d="M5021.83,-1627C4957.85,-1627 4958.91,-1572.82 4897.76,-1554 4743.29,-1506.46 3469.39,-1592.57 3422.17,-1440.11"/>
|
|
<polygon fill="#5cd6d6" stroke="#5cd6d6" stroke-width="1.4" points="3424.61,-1439.85 3421.14,-1433.3 3419.76,-1440.58 3424.61,-1439.85"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3949.87" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#5cd6d6">  'article-<sku>' sse reload  </text>
|
|
</g>
|
|
<!-- articleDetailAutomat -->
|
|
<g id="node6" class="node">
|
|
<title>articleDetailAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="3025.62,-1737 3025.62,-1772 3309.9,-1772 3309.9,-1737 3025.62,-1737"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3025.62,-1737 3025.62,-1772 3309.9,-1772 3309.9,-1737 3025.62,-1737"/>
|
|
<polygon fill="#33415c" stroke="none" points="3027.62,-1766 3027.62,-1770 3307.9,-1770 3307.9,-1766 3027.62,-1766"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3109.41" y="-1753.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">articleDetailAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3124.74" y="-1743.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">KeyedAutomat (SKU)</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3025.62,-1715 3025.62,-1737 3309.9,-1737 3309.9,-1715 3025.62,-1715"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3025.62,-1715 3025.62,-1737 3309.9,-1737 3309.9,-1715 3025.62,-1715"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3026.62,-1716 3026.62,-1736 3085.5,-1736 3085.5,-1716 3026.62,-1716"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3042.94" y="-1724.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3089.5" y="-1724" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">articleHistory: Map<sku></text>
|
|
<text xml:space="preserve" text-anchor="start" x="3238.19" y="-1722.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Change history log</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3025.62,-1693 3025.62,-1715 3309.9,-1715 3309.9,-1693 3025.62,-1693"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3025.62,-1693 3025.62,-1715 3309.9,-1715 3309.9,-1693 3025.62,-1693"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3026.62,-1694 3026.62,-1714 3080.83,-1714 3080.83,-1694 3026.62,-1694"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3040.61" y="-1702.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3084.83" y="-1702" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">articleSupplier: Map<sku></text>
|
|
<text xml:space="preserve" text-anchor="start" x="3229.75" y="-1700.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Assigned supplier list</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3025.62,-1671 3025.62,-1693 3309.9,-1693 3309.9,-1671 3025.62,-1671"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3025.62,-1671 3025.62,-1693 3309.9,-1693 3309.9,-1671 3025.62,-1671"/>
|
|
<polygon fill="#143826" stroke="none" points="3026.62,-1672 3026.62,-1692 3078.1,-1692 3078.1,-1672 3026.62,-1672"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3037.03" y="-1680.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3082.1" y="-1680" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">articleHistoryAutomat.load()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3231.53" y="-1678.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch SKU audit trail</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3025.62,-1649 3025.62,-1671 3309.9,-1671 3309.9,-1649 3025.62,-1649"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3025.62,-1649 3025.62,-1671 3309.9,-1671 3309.9,-1649 3025.62,-1649"/>
|
|
<polygon fill="#143826" stroke="none" points="3026.62,-1650 3026.62,-1670 3074.62,-1670 3074.62,-1650 3026.62,-1650"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3035.28" y="-1658.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3078.62" y="-1658" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">articleSupplierAutomat.load()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3226.63" y="-1656.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fetch supplier catalog</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3025.62,-1627 3025.62,-1649 3309.9,-1649 3309.9,-1627 3025.62,-1627"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3025.62,-1627 3025.62,-1649 3309.9,-1649 3309.9,-1627 3025.62,-1627"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="3026.62,-1628 3026.62,-1648 3078.98,-1648 3078.98,-1628 3026.62,-1628"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3046.13" y="-1636.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3082.98" y="-1636" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/article/:sku/history</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3231.96" y="-1634.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Audit change entries</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3025.62,-1605 3025.62,-1627 3309.9,-1627 3309.9,-1605 3025.62,-1605"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3025.62,-1605 3025.62,-1627 3309.9,-1627 3309.9,-1605 3025.62,-1605"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="3026.62,-1606 3026.62,-1626 3076.39,-1626 3076.39,-1606 3026.62,-1606"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3044.83" y="-1614.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3080.39" y="-1614" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">GET /api/article/:sku/supplier</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3229.75" y="-1612.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Vendor links & prices</text>
|
|
</g>
|
|
<!-- sseAutomat->articleDetailAutomat -->
|
|
<g id="edge27" class="edge">
|
|
<title>sseAutomat:w->articleDetailAutomat:n</title>
|
|
<g id="a_edge27"><a xlink:title="sseAutomat → articleDetailAutomat (invalidateArticle(sku))">
|
|
<path fill="none" stroke="#ff9f5a" stroke-width="1.4" d="M5021.83,-1627C4907.71,-1627 4996.04,-1793.8 4897.76,-1851.82 4823.84,-1895.45 3436.78,-1869.37 3352.76,-1851.82 3268.01,-1834.11 3174.58,-1858.87 3168.11,-1780.04"/>
|
|
<polygon fill="#ff9f5a" stroke="#ff9f5a" stroke-width="1.4" points="3170.56,-1780.02 3167.84,-1773.12 3165.67,-1780.21 3170.56,-1780.02"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4467.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff9f5a">  invalidateArticle(sku)  </text>
|
|
</g>
|
|
<!-- sseAutomat->brandAutomat -->
|
|
<g id="edge30" class="edge">
|
|
<title>sseAutomat:w->brandAutomat:n</title>
|
|
<g id="a_edge30"><a xlink:title="sseAutomat → brandAutomat ('brand' sse trigger)">
|
|
<path fill="none" stroke="#58d18a" stroke-width="1.4" d="M5021.83,-1627C4907.71,-1627 4996.04,-1793.8 4897.76,-1851.82 4784.18,-1918.86 3837.5,-1888.28 3710.76,-1851.82 3657.71,-1836.56 3605.51,-1839.94 3599.95,-1791.03"/>
|
|
<polygon fill="#58d18a" stroke="#58d18a" stroke-width="1.4" points="3602.41,-1790.97 3599.58,-1784.12 3597.51,-1791.24 3602.41,-1790.97"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4677.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#58d18a">  'brand' sse trigger  </text>
|
|
</g>
|
|
<!-- articleIndexAutomat -->
|
|
<g id="node9" class="node">
|
|
<title>articleIndexAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="3414.1,-415.8 3414.1,-450.8 3705.41,-450.8 3705.41,-415.8 3414.1,-415.8"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3414.1,-415.8 3414.1,-450.8 3705.41,-450.8 3705.41,-415.8 3414.1,-415.8"/>
|
|
<polygon fill="#33415c" stroke="none" points="3416.1,-444.8 3416.1,-448.8 3511.87,-448.8 3511.87,-444.8 3416.1,-444.8"/>
|
|
<polygon fill="#33415c" stroke="none" points="3511.87,-444.8 3511.87,-448.8 3607.64,-448.8 3607.64,-444.8 3511.87,-444.8"/>
|
|
<polygon fill="#33415c" stroke="none" points="3607.64,-444.8 3607.64,-448.8 3703.41,-448.8 3703.41,-444.8 3607.64,-444.8"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3502.08" y="-432" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">articleIndexAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3503.73" y="-422.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Derived Client Search Index</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3414.1,-393.8 3414.1,-415.8 3705.41,-415.8 3705.41,-393.8 3414.1,-393.8"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3414.1,-393.8 3414.1,-415.8 3705.41,-415.8 3705.41,-393.8 3414.1,-393.8"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3415.1,-394.8 3415.1,-414.8 3463.1,-414.8 3463.1,-394.8 3415.1,-394.8"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3425.99" y="-403.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3467.1" y="-402.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">items: ArticleIndexRecord[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3605.69" y="-401.6" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">De-duplicated article union</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3414.1,-371.8 3414.1,-393.8 3705.41,-393.8 3705.41,-371.8 3414.1,-371.8"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3414.1,-371.8 3414.1,-393.8 3705.41,-393.8 3705.41,-371.8 3414.1,-371.8"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3415.1,-372.8 3415.1,-392.8 3494.08,-392.8 3494.08,-372.8 3415.1,-372.8"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3441.48" y="-381.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3498.08" y="-380.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">status: 'ready'</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3635.04" y="-379.6" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Index lifecycle flag</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3414.1,-349.8 3414.1,-371.8 3705.41,-371.8 3705.41,-349.8 3414.1,-349.8"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3414.1,-349.8 3414.1,-371.8 3705.41,-371.8 3705.41,-349.8 3414.1,-349.8"/>
|
|
<polygon fill="#143826" stroke="none" points="3415.1,-350.8 3415.1,-370.8 3476.79,-370.8 3476.79,-350.8 3415.1,-350.8"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3430.61" y="-359.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3480.79" y="-358.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">buildArticleIndex()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3603.94" y="-357.6" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Derive from category views</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3414.1,-327.8 3414.1,-349.8 3705.41,-349.8 3705.41,-327.8 3414.1,-327.8"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3414.1,-327.8 3414.1,-349.8 3705.41,-349.8 3705.41,-327.8 3414.1,-327.8"/>
|
|
<polygon fill="#143826" stroke="none" points="3415.1,-328.8 3415.1,-348.8 3482.7,-348.8 3482.7,-328.8 3415.1,-328.8"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3433.57" y="-337.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3486.7" y="-336.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">setArticleIndexName()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3639.48" y="-335.6" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Patch on rename</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3414.1,-305.8 3414.1,-327.8 3705.41,-327.8 3705.41,-305.8 3414.1,-305.8"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3414.1,-305.8 3414.1,-327.8 3705.41,-327.8 3705.41,-305.8 3414.1,-305.8"/>
|
|
<polygon fill="#143826" stroke="none" points="3415.1,-306.8 3415.1,-326.8 3500.94,-326.8 3500.94,-306.8 3415.1,-306.8"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3442.69" y="-315.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3504.94" y="-314.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">reload()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3625.28" y="-313.6" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Re-derive from views</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3414.1,-283.8 3414.1,-305.8 3705.41,-305.8 3705.41,-283.8 3414.1,-283.8"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3414.1,-283.8 3414.1,-305.8 3705.41,-305.8 3705.41,-283.8 3414.1,-283.8"/>
|
|
<polygon fill="#182b40" stroke="none" points="3415.1,-284.8 3415.1,-304.8 3472.96,-304.8 3472.96,-284.8 3415.1,-284.8"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3428.25" y="-293.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3476.96" y="-292.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectArticleIndexItems()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3623.04" y="-291.6" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Fast record projection</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3414.1,-261.8 3414.1,-283.8 3705.41,-283.8 3705.41,-261.8 3414.1,-261.8"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3414.1,-261.8 3414.1,-283.8 3705.41,-283.8 3705.41,-261.8 3414.1,-261.8"/>
|
|
<polygon fill="#182b40" stroke="none" points="3415.1,-262.8 3415.1,-282.8 3492.01,-282.8 3492.01,-262.8 3415.1,-262.8"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3437.78" y="-271.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3496.01" y="-270.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">ensureLoaded()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3636.84" y="-269.6" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Await warm views</text>
|
|
</g>
|
|
<!-- sseAutomat->articleIndexAutomat -->
|
|
<g id="edge25" class="edge">
|
|
<title>sseAutomat:w->articleIndexAutomat:n</title>
|
|
<g id="a_edge25"><a xlink:title="sseAutomat → articleIndexAutomat ('articles' sse trigger)">
|
|
<path fill="none" stroke="#c79bff" stroke-width="1.4" d="M5021.83,-1627C4957.85,-1627 4959.2,-1571.83 4897.76,-1554 4811.32,-1528.92 4155.67,-1573.39 4088.76,-1513.2 3979.6,-1415.02 4125.45,-1283.86 4010.76,-1192.2 3980.92,-1168.35 2673.84,-1173.14 2635.76,-1170.2 2220.06,-1138.15 1208.52,-859.87 794.76,-808.6 753.58,-803.5 77.38,-802.64 48.76,-772.6 -15.94,-704.71 -16.52,-628.93 48.76,-561.6 186.25,-419.77 3554.66,-643.54 3653.32,-458.33"/>
|
|
<polygon fill="#c79bff" stroke="#c79bff" stroke-width="1.4" points="3655.61,-459.24 3654.99,-451.85 3650.87,-458.01 3655.61,-459.24"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2519.99" y="-973.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#c79bff">  'articles' sse trigger  </text>
|
|
</g>
|
|
<!-- sseAutomat->propertyAutomat -->
|
|
<g id="edge32" class="edge">
|
|
<title>sseAutomat:e->propertyAutomat:n</title>
|
|
<g id="a_edge32"><a xlink:title="sseAutomat → propertyAutomat ('propertyname' sse)">
|
|
<path fill="none" stroke="#a98cff" stroke-width="1.4" d="M5261.68,-1627C5646.9,-1627 5716.85,-1801.42 6098.76,-1851.82 6378.99,-1888.79 6455.2,-1893.64 6734.76,-1851.82 6853.04,-1834.12 6991.55,-1890.72 6998.5,-1780"/>
|
|
<polygon fill="#a98cff" stroke="#a98cff" stroke-width="1.4" points="7000.95,-1780.19 6998.71,-1773.12 6996.05,-1780.04 7000.95,-1780.19"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5681.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#a98cff">  'propertyname' sse  </text>
|
|
</g>
|
|
<!-- sseAutomat->attributeAutomat -->
|
|
<g id="edge31" class="edge">
|
|
<title>sseAutomat:e->attributeAutomat:n</title>
|
|
<g id="a_edge31"><a xlink:title="sseAutomat → attributeAutomat ('attributename' sse)">
|
|
<path fill="none" stroke="#4fc4e8" stroke-width="1.4" d="M5261.68,-1627C5646.9,-1627 5716.85,-1801.42 6098.76,-1851.82 6322.59,-1881.35 6891.51,-1885.55 7114.76,-1851.82 7231.91,-1834.11 7368.92,-1889.63 7375.8,-1779.92"/>
|
|
<polygon fill="#4fc4e8" stroke="#4fc4e8" stroke-width="1.4" points="7378.25,-1780.19 7376.01,-1773.12 7373.35,-1780.04 7378.25,-1780.19"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5591.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#4fc4e8">  'attributename' sse  </text>
|
|
</g>
|
|
<!-- sseAutomat->supplierAutomat -->
|
|
<g id="edge29" class="edge">
|
|
<title>sseAutomat:w->supplierAutomat:n</title>
|
|
<g id="a_edge29"><a xlink:title="sseAutomat → supplierAutomat ('supplier' sse trigger)">
|
|
<path fill="none" stroke="#ff6b6b" stroke-width="1.4" d="M5021.83,-1627C4957.85,-1627 4959.1,-1572.19 4897.76,-1554 4845.19,-1538.42 4442.65,-1571.63 4404.76,-1532 4401.44,-1528.53 4402.29,-1525.32 4404.76,-1521.2 4408.64,-1514.72 4415.87,-1519.68 4419.76,-1513.2 4493.16,-1390.86 4519.86,-1293.86 4419.76,-1192.2 4391.96,-1163.97 3033.28,-1172.84 2993.76,-1170.2 2953.12,-1167.48 2943.41,-1161.87 2902.76,-1159.4 2868.64,-1157.33 474.92,-1159.69 441.76,-1151.4 359.03,-1130.72 272.31,-1145.64 266.32,-1067.34"/>
|
|
<polygon fill="#ff6b6b" stroke="#ff6b6b" stroke-width="1.4" points="268.77,-1067.42 266.07,-1060.52 263.88,-1067.6 268.77,-1067.42"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4529.93" y="-1324" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff6b6b">  'supplier' sse trigger  </text>
|
|
</g>
|
|
<!-- sseAutomat->orderAutomat -->
|
|
<g id="edge33" class="edge">
|
|
<title>sseAutomat:e->orderAutomat:n</title>
|
|
<g id="a_edge33"><a xlink:title="sseAutomat → orderAutomat ('order'/'shipment' sse)">
|
|
<path fill="none" stroke="#ff8f66" stroke-width="1.4" d="M5261.68,-1627C5635.13,-1627 5725.99,-1576.57 6098.76,-1554 6134.71,-1551.82 6721.72,-1557.9 6746.76,-1532 6750.09,-1528.55 6749.71,-1524.99 6746.76,-1521.2 6741.02,-1513.84 6449.16,-1453.82 6396.77,-1435.36"/>
|
|
<polygon fill="#ff8f66" stroke="#ff8f66" stroke-width="1.4" points="6397.98,-1433.23 6390.64,-1432.18 6395.72,-1437.58 6397.98,-1433.23"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="6795.82" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff8f66">  'order'/'shipment' sse  </text>
|
|
</g>
|
|
<!-- sseAutomat->warehouseAutomat -->
|
|
<g id="edge28" class="edge">
|
|
<title>sseAutomat:e->warehouseAutomat:n</title>
|
|
<g id="a_edge28"><a xlink:title="sseAutomat → warehouseAutomat ('warehouse' sse trigger)">
|
|
<path fill="none" stroke="#8f95ff" stroke-width="1.4" d="M5261.68,-1627C5646.9,-1627 5716.85,-1801.42 6098.76,-1851.82 6405.21,-1892.25 7184.64,-1901.36 7489.76,-1851.82 7598.74,-1834.12 7724.94,-1881.79 7731.76,-1779.95"/>
|
|
<polygon fill="#8f95ff" stroke="#8f95ff" stroke-width="1.4" points="7734.21,-1780.19 7731.98,-1773.12 7729.31,-1780.04 7734.21,-1780.19"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5387.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8f95ff">  'warehouse' sse trigger  </text>
|
|
</g>
|
|
<!-- sseAutomat->vfsAutomat -->
|
|
<g id="edge34" class="edge">
|
|
<title>sseAutomat:e->vfsAutomat:n</title>
|
|
<g id="a_edge34"><a xlink:title="sseAutomat → vfsAutomat ('vfs' sse mutation)">
|
|
<path fill="none" stroke="#4ecb8f" stroke-width="1.4" d="M5261.68,-1627C5287.91,-1627 5278.47,-1587.27 5260.68,-1568 5204.25,-1506.88 4831.14,-1580.68 4889.29,-1521.2 4896.14,-1514.2 5232.06,-1514.6 5241.76,-1513.2 5395.56,-1491.01 5578.72,-1575.29 5585.82,-1429.21"/>
|
|
<polygon fill="#4ecb8f" stroke="#4ecb8f" stroke-width="1.4" points="5588.26,-1429.37 5585.98,-1422.32 5583.37,-1429.26 5588.26,-1429.37"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4928.52" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#4ecb8f">  'vfs' sse mutation  </text>
|
|
</g>
|
|
<!-- categoryAutomat->categoryAutomat -->
|
|
<g id="edge59" class="edge">
|
|
<title>categoryAutomat:ne->categoryAutomat:n</title>
|
|
<g id="a_edge59"><a xlink:title="categoryAutomat → categoryAutomat (nested tree hierarchy)">
|
|
<path fill="none" stroke="#ffb25a" stroke-width="1.4" d="M3341.51,-1057.4C3372.18,-1016.93 3417.51,-1016.93 3417.51,-1073.9 3417.51,-1128.87 3320.96,-1130.8 3250.17,-1094.52"/>
|
|
<polygon fill="#ffb25a" stroke="#ffb25a" stroke-width="1.4" points="3251.73,-1092.58 3244.41,-1091.41 3249.4,-1096.89 3251.73,-1092.58"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3464.78" y="-973.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ffb25a">  nested tree hierarchy  </text>
|
|
</g>
|
|
<!-- categoryAutomat->categoryViewAutomat -->
|
|
<g id="edge36" class="edge">
|
|
<title>categoryAutomat:e->categoryViewAutomat:n</title>
|
|
<g id="a_edge36"><a xlink:title="categoryAutomat → categoryViewAutomat (attachTree & warm slugs)">
|
|
<path fill="none" stroke="#e0b25a" stroke-width="1.4" d="M3342.51,-980.4C3434.14,-980.4 3346.03,-869.46 3340.44,-776.53"/>
|
|
<polygon fill="#e0b25a" stroke="#e0b25a" stroke-width="1.4" points="3342.89,-776.64 3340.23,-769.72 3337.99,-776.79 3342.89,-776.64"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3401.19" y="-811.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#e0b25a">  attachTree & warm slugs  </text>
|
|
</g>
|
|
<!-- articleSearchAutomat -->
|
|
<g id="node10" class="node">
|
|
<title>articleSearchAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="3423.66,-136 3423.66,-171 3703.85,-171 3703.85,-136 3423.66,-136"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3423.66,-136 3423.66,-171 3703.85,-171 3703.85,-136 3423.66,-136"/>
|
|
<polygon fill="#33415c" stroke="none" points="3425.66,-165 3425.66,-169 3563.76,-169 3563.76,-165 3425.66,-165"/>
|
|
<polygon fill="#33415c" stroke="none" points="3563.76,-165 3563.76,-169 3701.85,-169 3701.85,-165 3563.76,-165"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3501.73" y="-152.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">articleSearchAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3502.98" y="-142.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">In-Memory FlexSearch Engine</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3423.66,-114 3423.66,-136 3703.85,-136 3703.85,-114 3423.66,-114"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3423.66,-114 3423.66,-136 3703.85,-136 3703.85,-114 3423.66,-114"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3424.66,-115 3424.66,-135 3500.08,-135 3500.08,-115 3424.66,-115"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3449.26" y="-123.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3504.08" y="-123" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">target: string</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3628.6" y="-121.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Active search query</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3423.66,-92 3423.66,-114 3703.85,-114 3703.85,-92 3423.66,-92"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3423.66,-92 3423.66,-114 3703.85,-114 3703.85,-92 3423.66,-92"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3424.66,-93 3424.66,-113 3501.53,-113 3501.53,-93 3424.66,-93"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3449.98" y="-101.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3505.53" y="-101" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">filter: string</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3626.83" y="-99.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Active category filter</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3423.66,-70 3423.66,-92 3703.85,-92 3703.85,-70 3423.66,-70"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3423.66,-70 3423.66,-92 3703.85,-92 3703.85,-70 3423.66,-70"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="3424.66,-71 3424.66,-91 3472.66,-91 3472.66,-71 3424.66,-71"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3435.55" y="-79.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3476.66" y="-79" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">result: ArticleSearchResult</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3613.04" y="-77.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Facets, recordset, count</text>
|
|
<polygon fill="#272e3d" stroke="none" points="3423.66,-48 3423.66,-70 3703.85,-70 3703.85,-48 3423.66,-48"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3423.66,-48 3423.66,-70 3703.85,-70 3703.85,-48 3423.66,-48"/>
|
|
<polygon fill="#143826" stroke="none" points="3424.66,-49 3424.66,-69 3479.69,-69 3479.69,-49 3424.66,-49"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3436.84" y="-57.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3483.69" y="-57" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">search(target, filter)</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3599.68" y="-55.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Synchronous indexed query</text>
|
|
<polygon fill="#2a3242" stroke="none" points="3423.66,-26 3423.66,-48 3703.85,-48 3703.85,-26 3423.66,-26"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="3423.66,-26 3423.66,-48 3703.85,-48 3703.85,-26 3423.66,-26"/>
|
|
<polygon fill="#182b40" stroke="none" points="3424.66,-27 3424.66,-47 3480.99,-47 3480.99,-27 3424.66,-27"/>
|
|
<text xml:space="preserve" text-anchor="start" x="3437.05" y="-35.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3484.99" y="-35" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">selectSearchResult()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="3608.59" y="-33.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Reactive search outcome</text>
|
|
</g>
|
|
<!-- categoryAutomat->articleSearchAutomat -->
|
|
<g id="edge39" class="edge">
|
|
<title>categoryAutomat:e->articleSearchAutomat:n</title>
|
|
<g id="a_edge39"><a xlink:title="categoryAutomat → articleSearchAutomat (categoryFacets)">
|
|
<path fill="none" stroke="#ffb25a" stroke-width="1.4" d="M3342.51,-1046.4C3427.4,-1046.4 3380.83,-930.63 3341.51,-855.4 3311.88,-798.7 3253.24,-829.38 3223.76,-772.6 3180.54,-689.38 3158.95,-629.38 3223.76,-561.6 3261.5,-522.13 3662.29,-554.76 3714.76,-539.6 3730.97,-534.91 3739.27,-535.39 3747.76,-520.8 3816.95,-401.75 3837.15,-313.99 3745.76,-211 3710.44,-171.2 3519.13,-220.1 3496.83,-178.8"/>
|
|
<polygon fill="#ffb25a" stroke="#ffb25a" stroke-width="1.4" points="3499.23,-178.29 3495.2,-172.06 3494.46,-179.44 3499.23,-178.29"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3777.37" y="-531.5" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ffb25a">  categoryFacets  </text>
|
|
</g>
|
|
<!-- categoryViewAutomat->articleIndexAutomat -->
|
|
<g id="edge37" class="edge">
|
|
<title>categoryViewAutomat:e->articleIndexAutomat:n</title>
|
|
<g id="a_edge37"><a xlink:title="categoryViewAutomat → articleIndexAutomat (derived union index)">
|
|
<path fill="none" stroke="#56c8c8" stroke-width="1.4" d="M3560.95,-634.6C3640.2,-634.6 3565.41,-539.03 3560.05,-458.53"/>
|
|
<polygon fill="#56c8c8" stroke="#56c8c8" stroke-width="1.4" points="3562.52,-458.83 3559.83,-451.92 3557.62,-459 3562.52,-458.83"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3623.74" y="-531.5" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#56c8c8">  derived union index  </text>
|
|
</g>
|
|
<!-- artikelAutomat->categoryAutomat -->
|
|
<g id="edge41" class="edge">
|
|
<title>artikelAutomat:e->categoryAutomat:n</title>
|
|
<g id="a_edge41"><a xlink:title="artikelAutomat → categoryAutomat (articleCount updates)">
|
|
<path fill="none" stroke="#5aa7ff" stroke-width="1.4" d="M3451.59,-1386.2C3526.7,-1386.2 3490.02,-1281.13 3450.59,-1217.2 3387.59,-1115.06 3212.93,-1209.48 3204.1,-1100.35"/>
|
|
<polygon fill="#5aa7ff" stroke="#5aa7ff" stroke-width="1.4" points="3206.56,-1100.42 3203.84,-1093.52 3201.66,-1100.61 3206.56,-1100.42"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3425.76" y="-1162.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#5aa7ff">  articleCount updates  </text>
|
|
</g>
|
|
<!-- artikelAutomat->artikelAutomat -->
|
|
<g id="edge60" class="edge">
|
|
<title>artikelAutomat:ne->artikelAutomat:n</title>
|
|
<g id="a_edge60"><a xlink:title="artikelAutomat → artikelAutomat (variants & parent SKU)">
|
|
<path fill="none" stroke="#66b3ff" stroke-width="1.4" d="M3450.59,-1397.2C3481.25,-1356.72 3526.59,-1356.72 3526.59,-1413.7 3526.59,-1468.67 3443.71,-1470.6 3372.97,-1434.32"/>
|
|
<polygon fill="#66b3ff" stroke="#66b3ff" stroke-width="1.4" points="3374.48,-1432.35 3367.16,-1431.2 3372.17,-1436.67 3374.48,-1432.35"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3576.11" y="-1324" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#66b3ff">  variants & parent SKU  </text>
|
|
</g>
|
|
<!-- artikelAutomat->articleIndexAutomat -->
|
|
<g id="edge40" class="edge">
|
|
<title>artikelAutomat:e->articleIndexAutomat:n</title>
|
|
<g id="a_edge40"><a xlink:title="artikelAutomat → articleIndexAutomat (setArticleIndexName (optimistic))">
|
|
<path fill="none" stroke="#66b3ff" stroke-width="1.4" d="M3451.59,-1320.2C3497.37,-1320.2 3481.85,-1250.65 3450.59,-1217.2 3358.23,-1118.38 2937.24,-1267.95 2843.76,-1170.2 2656.76,-974.67 2642.01,-755.43 2830.76,-561.6 2894.96,-495.66 3594.55,-605.54 3658.76,-539.6 3723.05,-473.58 3480.98,-540.38 3464.83,-458.75"/>
|
|
<polygon fill="#66b3ff" stroke="#66b3ff" stroke-width="1.4" points="3467.28,-458.65 3464.19,-451.91 3462.4,-459.11 3467.28,-458.65"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2768.25" y="-811.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#66b3ff">  setArticleIndexName (optimistic)  </text>
|
|
</g>
|
|
<!-- articleDetailAutomat->artikelAutomat -->
|
|
<g id="edge42" class="edge">
|
|
<title>articleDetailAutomat:e->artikelAutomat:n</title>
|
|
<g id="a_edge42"><a xlink:title="articleDetailAutomat → artikelAutomat (watch SKU details)">
|
|
<path fill="none" stroke="#6bdf9a" stroke-width="1.4" d="M3310.9,-1726C3373.72,-1726 3315,-1515.13 3310.08,-1440.06"/>
|
|
<polygon fill="#6bdf9a" stroke="#6bdf9a" stroke-width="1.4" points="3312.54,-1440.22 3309.83,-1433.32 3307.64,-1440.4 3312.54,-1440.22"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3365.01" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#6bdf9a">  watch SKU details  </text>
|
|
</g>
|
|
<!-- articleIndexAutomat->articleSearchAutomat -->
|
|
<g id="edge38" class="edge">
|
|
<title>articleIndexAutomat:e->articleSearchAutomat:n</title>
|
|
<g id="a_edge38"><a xlink:title="articleIndexAutomat → articleSearchAutomat (query index items)">
|
|
<path fill="none" stroke="#ff5f9e" stroke-width="1.4" d="M3706.41,-404.8C3771.75,-404.8 3736.23,-315.41 3705.41,-257.8 3691.94,-232.63 3669.89,-244.22 3652.22,-221.8 3639.03,-205.05 3634.12,-196.89 3633.04,-178.98"/>
|
|
<polygon fill="#ff5f9e" stroke="#ff5f9e" stroke-width="1.4" points="3635.5,-179.05 3632.86,-172.12 3630.6,-179.18 3635.5,-179.05"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="3692.49" y="-213.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff5f9e">  query index items  </text>
|
|
</g>
|
|
<!-- deliveryEditorAutomat -->
|
|
<g id="node15" class="node">
|
|
<title>deliveryEditorAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="484.02,-1046.4 484.02,-1081.4 755.5,-1081.4 755.5,-1046.4 484.02,-1046.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-1046.4 484.02,-1081.4 755.5,-1081.4 755.5,-1046.4 484.02,-1046.4"/>
|
|
<polygon fill="#33415c" stroke="none" points="486.02,-1075.4 486.02,-1079.4 753.5,-1079.4 753.5,-1075.4 486.02,-1075.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="555.41" y="-1062.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">deliveryEditorAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="553.22" y="-1053.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Inbound Receipt & OCR Machine</text>
|
|
<polygon fill="#2a3242" stroke="none" points="484.02,-1024.4 484.02,-1046.4 755.5,-1046.4 755.5,-1024.4 484.02,-1024.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-1024.4 484.02,-1046.4 755.5,-1046.4 755.5,-1024.4 484.02,-1024.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="485.02,-1025.4 485.02,-1045.4 541.82,-1045.4 541.82,-1025.4 485.02,-1025.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="500.31" y="-1034" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="545.82" y="-1033.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">lines: DeliveryLine[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="666.47" y="-1032.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Uncommitted draft lines</text>
|
|
<polygon fill="#272e3d" stroke="none" points="484.02,-1002.4 484.02,-1024.4 755.5,-1024.4 755.5,-1002.4 484.02,-1002.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-1002.4 484.02,-1024.4 755.5,-1024.4 755.5,-1002.4 484.02,-1002.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="485.02,-1003.4 485.02,-1023.4 555.78,-1023.4 555.78,-1003.4 485.02,-1003.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="507.29" y="-1012" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="559.78" y="-1011.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">deliveryEntity</text>
|
|
<text xml:space="preserve" text-anchor="start" x="678.9" y="-1010.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Selected supplier ID</text>
|
|
<polygon fill="#2a3242" stroke="none" points="484.02,-980.4 484.02,-1002.4 755.5,-1002.4 755.5,-980.4 484.02,-980.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-980.4 484.02,-1002.4 755.5,-1002.4 755.5,-980.4 484.02,-980.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="485.02,-981.4 485.02,-1001.4 538.24,-1001.4 538.24,-981.4 485.02,-981.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="498.52" y="-990" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="542.24" y="-989.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">attachments: File[]</text>
|
|
<text xml:space="preserve" text-anchor="start" x="649.58" y="-988.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Invoice PDFs & OCR results</text>
|
|
<polygon fill="#272e3d" stroke="none" points="484.02,-958.4 484.02,-980.4 755.5,-980.4 755.5,-958.4 484.02,-958.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-958.4 484.02,-980.4 755.5,-980.4 755.5,-958.4 484.02,-958.4"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="485.02,-959.4 485.02,-979.4 536.27,-979.4 536.27,-959.4 485.02,-959.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="497.53" y="-968" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="540.27" y="-967.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">draftCount: number</text>
|
|
<text xml:space="preserve" text-anchor="start" x="648.67" y="-966.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Uncommitted lines for badge</text>
|
|
<polygon fill="#2a3242" stroke="none" points="484.02,-936.4 484.02,-958.4 755.5,-958.4 755.5,-936.4 484.02,-936.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-936.4 484.02,-958.4 755.5,-958.4 755.5,-936.4 484.02,-936.4"/>
|
|
<polygon fill="#143826" stroke="none" points="485.02,-937.4 485.02,-957.4 537.05,-957.4 537.05,-937.4 485.02,-937.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="495.7" y="-946" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="541.05" y="-945.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">addLine() / updateLine()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="670.46" y="-944.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Interactive item editing</text>
|
|
<polygon fill="#272e3d" stroke="none" points="484.02,-914.4 484.02,-936.4 755.5,-936.4 755.5,-914.4 484.02,-914.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-914.4 484.02,-936.4 755.5,-936.4 755.5,-914.4 484.02,-914.4"/>
|
|
<polygon fill="#143826" stroke="none" points="485.02,-915.4 485.02,-935.4 549.56,-935.4 549.56,-915.4 485.02,-915.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="501.96" y="-924" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="553.56" y="-923.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">commitDelivery()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="675.79" y="-922.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Persist goods receipt</text>
|
|
<polygon fill="#2a3242" stroke="none" points="484.02,-892.4 484.02,-914.4 755.5,-914.4 755.5,-892.4 484.02,-892.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-892.4 484.02,-914.4 755.5,-914.4 755.5,-892.4 484.02,-892.4"/>
|
|
<polygon fill="#182b40" stroke="none" points="485.02,-893.4 485.02,-913.4 533.02,-913.4 533.02,-893.4 485.02,-893.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="493.24" y="-902" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#38bdf8">SELECT</text>
|
|
<text xml:space="preserve" text-anchor="start" x="537.02" y="-901.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">buildSupplierArticlesMap()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="672.25" y="-900.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Auto-match SKU/EAN</text>
|
|
<polygon fill="#272e3d" stroke="none" points="484.02,-870.4 484.02,-892.4 755.5,-892.4 755.5,-870.4 484.02,-870.4"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="484.02,-870.4 484.02,-892.4 755.5,-892.4 755.5,-870.4 484.02,-870.4"/>
|
|
<polygon fill="#3b2c12" stroke="none" points="485.02,-871.4 485.02,-891.4 547.48,-891.4 547.48,-871.4 485.02,-871.4"/>
|
|
<text xml:space="preserve" text-anchor="start" x="509.58" y="-880" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fbbf24">API</text>
|
|
<text xml:space="preserve" text-anchor="start" x="551.48" y="-879.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">POST /api/delivery</text>
|
|
<text xml:space="preserve" text-anchor="start" x="676.23" y="-878.2" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Create goods receipt</text>
|
|
</g>
|
|
<!-- deliveryEditorAutomat->artikelAutomat -->
|
|
<g id="edge44" class="edge">
|
|
<title>deliveryEditorAutomat:e->artikelAutomat:n</title>
|
|
<g id="a_edge44"><a xlink:title="deliveryEditorAutomat → artikelAutomat (lookup SKU & pack units)">
|
|
<path fill="none" stroke="#ff7fc2" stroke-width="1.4" d="M756.5,-1035.4C1377.87,-1035.4 1529.1,-1121.67 2149.76,-1151.4 2184.83,-1153.08 2748.39,-1148.47 2781.76,-1159.4 2978.56,-1223.84 2964.06,-1365.95 3160.93,-1430.2 3197.11,-1442.01 3245.48,-1467.92 3253.17,-1440.02"/>
|
|
<polygon fill="#ff7fc2" stroke="#ff7fc2" stroke-width="1.4" points="3255.58,-1440.54 3253.97,-1433.3 3250.71,-1439.97 3255.58,-1440.54"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2864.27" y="-1162.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff7fc2">  lookup SKU & pack units  </text>
|
|
</g>
|
|
<!-- deliveryEditorAutomat->supplierAutomat -->
|
|
<g id="edge43" class="edge">
|
|
<title>deliveryEditorAutomat:w->supplierAutomat:n</title>
|
|
<g id="a_edge43"><a xlink:title="deliveryEditorAutomat → supplierAutomat (match vendor catalog)">
|
|
<path fill="none" stroke="#f5c15c" stroke-width="1.4" d="M483.02,-1013.4C324.2,-1013.4 129.3,-1211.16 119.88,-1069.67"/>
|
|
<polygon fill="#f5c15c" stroke="#f5c15c" stroke-width="1.4" points="122.26,-1067.44 119.59,-1060.52 117.36,-1067.59 122.26,-1067.44"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="394.31" y="-1048.07" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#f5c15c">  match vendor catalog  </text>
|
|
</g>
|
|
<!-- deliveryEditorAutomat->deliveryAutomat -->
|
|
<g id="edge45" class="edge">
|
|
<title>deliveryEditorAutomat:e->deliveryAutomat:n</title>
|
|
<g id="a_edge45"><a xlink:title="deliveryEditorAutomat → deliveryAutomat (commit delivery receipt)">
|
|
<path fill="none" stroke="#c79bff" stroke-width="1.4" d="M756.5,-925.4C782.72,-925.4 767.95,-889.48 755.5,-866.4 711.73,-785.28 586.91,-837.21 578.67,-754.6"/>
|
|
<polygon fill="#c79bff" stroke="#c79bff" stroke-width="1.4" points="581.12,-754.59 578.34,-747.72 576.23,-754.83 581.12,-754.59"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="740.44" y="-811.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#c79bff">  commit delivery receipt  </text>
|
|
</g>
|
|
<!-- quoteAutomat->orderAutomat -->
|
|
<g id="edge46" class="edge">
|
|
<title>quoteAutomat:w->orderAutomat:n</title>
|
|
<g id="a_edge46"><a xlink:title="quoteAutomat → orderAutomat (convert quote to order)">
|
|
<path fill="none" stroke="#5cd6d6" stroke-width="1.4" d="M6474.28,-1704C6416.38,-1704 6470.58,-1510.46 6475.57,-1440.25"/>
|
|
<polygon fill="#5cd6d6" stroke="#5cd6d6" stroke-width="1.4" points="6478.01,-1440.41 6475.84,-1433.32 6473.12,-1440.21 6478.01,-1440.41"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="6512.1" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#5cd6d6">  convert quote to order  </text>
|
|
</g>
|
|
<!-- orderAutomat->entityAutomat -->
|
|
<g id="edge47" class="edge">
|
|
<title>orderAutomat:e->entityAutomat:n</title>
|
|
<g id="a_edge47"><a xlink:title="orderAutomat → entityAutomat (customer lookup)">
|
|
<path fill="none" stroke="#ff9f5a" stroke-width="1.4" d="M6522.51,-1386.2C6675.1,-1386.2 6527.24,-1199.01 6521.7,-1045.09"/>
|
|
<polygon fill="#ff9f5a" stroke="#ff9f5a" stroke-width="1.4" points="6524.16,-1045.47 6521.58,-1038.52 6519.26,-1045.56 6524.16,-1045.47"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="6584.05" y="-1162.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff9f5a">  customer lookup  </text>
|
|
</g>
|
|
<!-- companyAutomat->categoryAutomat -->
|
|
<g id="edge35" class="edge">
|
|
<title>companyAutomat:e->categoryAutomat:n</title>
|
|
<g id="a_edge35"><a xlink:title="companyAutomat → categoryAutomat (rootCategoryId)">
|
|
<path fill="none" stroke="#ff7aa8" stroke-width="1.4" d="M2188.79,-1660C2239.3,-1660 2192.91,-1588.55 2229.76,-1554 2254.82,-1530.5 2323.71,-1545.83 2299.76,-1521.2 2277.71,-1498.52 2037.27,-1535.88 2015.22,-1513.2 1915.77,-1410.91 1922.28,-1300.44 2015.22,-1192.2 2094,-1100.46 3076.45,-1209.75 3124.37,-1100.05"/>
|
|
<polygon fill="#ff7aa8" stroke="#ff7aa8" stroke-width="1.4" points="3126.71,-1100.83 3125.75,-1093.47 3121.91,-1099.82 3126.71,-1100.83"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2049.99" y="-1324" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff7aa8">  rootCategoryId  </text>
|
|
</g>
|
|
<!-- companyAutomat->customergroupAutomat -->
|
|
<g id="edge48" class="edge">
|
|
<title>companyAutomat:e->customergroupAutomat:n</title>
|
|
<g id="a_edge48"><a xlink:title="companyAutomat → customergroupAutomat (poscustomergroup)">
|
|
<path fill="none" stroke="#8f95ff" stroke-width="1.4" d="M2188.79,-1726C2247.6,-1726 2182.17,-1817.27 2229.76,-1851.82 2298.76,-1901.92 5214.65,-1857.16 5299.76,-1851.82 5498.47,-1839.34 6181.23,-1937.13 6201.85,-1746.97"/>
|
|
<polygon fill="#8f95ff" stroke="#8f95ff" stroke-width="1.4" points="6204.29,-1747.24 6202.22,-1740.12 6199.4,-1746.98 6204.29,-1747.24"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4824.76" y="-1885.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8f95ff">  poscustomergroup  </text>
|
|
</g>
|
|
<!-- companyAutomat->posterminalAutomat -->
|
|
<g id="edge50" class="edge">
|
|
<title>companyAutomat:e->posterminalAutomat:n</title>
|
|
<g id="a_edge50"><a xlink:title="companyAutomat → posterminalAutomat (company context)">
|
|
<path fill="none" stroke="#58d18a" stroke-width="1.4" d="M2188.79,-1726C2256.44,-1726 2192.65,-1498.47 2187.56,-1418.23"/>
|
|
<polygon fill="#58d18a" stroke="#58d18a" stroke-width="1.4" points="2190.01,-1418.23 2187.32,-1411.32 2185.11,-1418.4 2190.01,-1418.23"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2243.51" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#58d18a">  company context  </text>
|
|
</g>
|
|
<!-- posterminalAutomat->categoryAutomat -->
|
|
<g id="edge49" class="edge">
|
|
<title>posterminalAutomat:e->categoryAutomat:n</title>
|
|
<g id="a_edge49"><a xlink:title="posterminalAutomat → categoryAutomat (filter enabled roots)">
|
|
<path fill="none" stroke="#ff6b6b" stroke-width="1.4" d="M2374.78,-1364.2C2430.34,-1364.2 2401.8,-1287.17 2373.78,-1239.2 2341.47,-1183.87 2210.12,-1206.36 2253.71,-1159.4 2257.78,-1155.02 3063.46,-1104.14 3156.28,-1092.98"/>
|
|
<polygon fill="#ff6b6b" stroke="#ff6b6b" stroke-width="1.4" points="3156.44,-1095.44 3162.88,-1091.78 3155.56,-1090.62 3156.44,-1095.44"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2295.73" y="-1162.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff6b6b">  filter enabled roots  </text>
|
|
</g>
|
|
<!-- chatAutomat->sseAutomat -->
|
|
<g id="edge53" class="edge">
|
|
<title>chatAutomat:e->sseAutomat:n</title>
|
|
<g id="a_edge53"><a xlink:title="chatAutomat → sseAutomat (getSseClientId())">
|
|
<path fill="none" stroke="#ff8f66" stroke-width="1.4" d="M5200.85,-1331.2C5306.77,-1331.2 5343.03,-1727.56 5268.68,-1803 5249.74,-1822.22 5210.56,-1832.07 5201.93,-1812.84"/>
|
|
<polygon fill="#ff8f66" stroke="#ff8f66" stroke-width="1.4" points="5204.35,-1812.49 5200.62,-1806.08 5199.54,-1813.42 5204.35,-1812.49"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5338.61" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff8f66">  getSseClientId()  </text>
|
|
</g>
|
|
<!-- chatAutomat->chatAutomat -->
|
|
<g id="edge61" class="edge">
|
|
<title>chatAutomat:nw->chatAutomat:n</title>
|
|
<g id="a_edge61"><a xlink:title="chatAutomat → chatAutomat (stream delta appends)">
|
|
<path fill="none" stroke="#5aa7ff" stroke-width="1.4" d="M4907.66,-1364.2C4877,-1323.72 4831.66,-1323.72 4831.66,-1402.7 4831.66,-1479.05 5059.85,-1481.59 5141.9,-1445.1"/>
|
|
<polygon fill="#5aa7ff" stroke="#5aa7ff" stroke-width="1.4" points="5142.72,-1447.42 5147.92,-1442.14 5140.55,-1443.03 5142.72,-1447.42"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="4783.38" y="-1324" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#5aa7ff">  stream delta appends  </text>
|
|
</g>
|
|
<!-- chatAutomat->vfsAutomat -->
|
|
<g id="edge51" class="edge">
|
|
<title>chatAutomat:e->vfsAutomat:n</title>
|
|
<g id="a_edge51"><a xlink:title="chatAutomat → vfsAutomat (inspect / edit applets)">
|
|
<path fill="none" stroke="#4fc4e8" stroke-width="1.4" d="M5200.85,-1353.2C5240.75,-1353.2 5328.67,-1411.59 5367.85,-1419.2 5422.45,-1429.81 5491.85,-1473.2 5501.6,-1431.54"/>
|
|
<polygon fill="#4fc4e8" stroke="#4fc4e8" stroke-width="1.4" points="5504.27,-1429.52 5502.54,-1422.31 5499.39,-1429.02 5504.27,-1429.52"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="5287.85" y="-1409.16" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#4fc4e8">  inspect / edit applets  </text>
|
|
</g>
|
|
<!-- navigationAutomat -->
|
|
<g id="node30" class="node">
|
|
<title>navigationAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="351.27,-1386.2 351.27,-1421.2 620.24,-1421.2 620.24,-1386.2 351.27,-1386.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="351.27,-1386.2 351.27,-1421.2 620.24,-1421.2 620.24,-1386.2 351.27,-1386.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="353.27,-1415.2 353.27,-1419.2 485.76,-1419.2 485.76,-1415.2 353.27,-1415.2"/>
|
|
<polygon fill="#33415c" stroke="none" points="485.76,-1415.2 485.76,-1419.2 618.24,-1419.2 618.24,-1415.2 485.76,-1415.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="431.42" y="-1402.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">navigationAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="417.48" y="-1393.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Cross-Section Navigation Memory</text>
|
|
<polygon fill="#2a3242" stroke="none" points="351.27,-1364.2 351.27,-1386.2 620.24,-1386.2 620.24,-1364.2 351.27,-1364.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="351.27,-1364.2 351.27,-1386.2 620.24,-1386.2 620.24,-1364.2 351.27,-1364.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="352.27,-1365.2 352.27,-1385.2 415.75,-1385.2 415.75,-1365.2 352.27,-1365.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="370.9" y="-1373.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="419.75" y="-1373.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">lastDeliveryPath</text>
|
|
<text xml:space="preserve" text-anchor="start" x="536.53" y="-1372" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Active receipt subpath</text>
|
|
<polygon fill="#272e3d" stroke="none" points="351.27,-1342.2 351.27,-1364.2 620.24,-1364.2 620.24,-1342.2 351.27,-1342.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="351.27,-1342.2 351.27,-1364.2 620.24,-1364.2 620.24,-1342.2 351.27,-1342.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="352.27,-1343.2 352.27,-1363.2 420.95,-1363.2 420.95,-1343.2 352.27,-1343.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="373.5" y="-1351.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="424.95" y="-1351.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">lastArticleSku</text>
|
|
<text xml:space="preserve" text-anchor="start" x="540.98" y="-1350" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Active SKU selection</text>
|
|
<polygon fill="#2a3242" stroke="none" points="351.27,-1320.2 351.27,-1342.2 620.24,-1342.2 620.24,-1320.2 351.27,-1320.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="351.27,-1320.2 351.27,-1342.2 620.24,-1342.2 620.24,-1320.2 351.27,-1320.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="352.27,-1321.2 352.27,-1341.2 400.27,-1341.2 400.27,-1321.2 352.27,-1321.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="363.16" y="-1329.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="404.27" y="-1329.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">lastCategorySlug / Path</text>
|
|
<text xml:space="preserve" text-anchor="start" x="524.52" y="-1328" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Active category tree node</text>
|
|
<polygon fill="#272e3d" stroke="none" points="351.27,-1298.2 351.27,-1320.2 620.24,-1320.2 620.24,-1298.2 351.27,-1298.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="351.27,-1298.2 351.27,-1320.2 620.24,-1320.2 620.24,-1298.2 351.27,-1298.2"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="352.27,-1299.2 352.27,-1319.2 404.6,-1319.2 404.6,-1299.2 352.27,-1299.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="365.33" y="-1307.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="408.6" y="-1307.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">lastSearchTerm / Path</text>
|
|
<text xml:space="preserve" text-anchor="start" x="530.31" y="-1306" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Preserved search query</text>
|
|
<polygon fill="#2a3242" stroke="none" points="351.27,-1276.2 351.27,-1298.2 620.24,-1298.2 620.24,-1276.2 351.27,-1276.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="351.27,-1276.2 351.27,-1298.2 620.24,-1298.2 620.24,-1276.2 351.27,-1276.2"/>
|
|
<polygon fill="#143826" stroke="none" points="352.27,-1277.2 352.27,-1297.2 405.39,-1297.2 405.39,-1277.2 352.27,-1277.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="363.5" y="-1285.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="409.39" y="-1285.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">setLastDeliveryPath()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="529.87" y="-1284" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Restore on sidebar click</text>
|
|
<polygon fill="#272e3d" stroke="none" points="351.27,-1254.2 351.27,-1276.2 620.24,-1276.2 620.24,-1254.2 351.27,-1254.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="351.27,-1254.2 351.27,-1276.2 620.24,-1276.2 620.24,-1254.2 351.27,-1254.2"/>
|
|
<polygon fill="#143826" stroke="none" points="352.27,-1255.2 352.27,-1275.2 403.17,-1275.2 403.17,-1255.2 352.27,-1255.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="362.39" y="-1263.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="407.17" y="-1263.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">setLastArticleSku()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="512.09" y="-1262" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Restore SKU on section click</text>
|
|
<polygon fill="#2a3242" stroke="none" points="351.27,-1232.2 351.27,-1254.2 620.24,-1254.2 620.24,-1232.2 351.27,-1232.2"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="351.27,-1232.2 351.27,-1254.2 620.24,-1254.2 620.24,-1232.2 351.27,-1232.2"/>
|
|
<polygon fill="#143826" stroke="none" points="352.27,-1233.2 352.27,-1253.2 410.5,-1253.2 410.5,-1233.2 352.27,-1233.2"/>
|
|
<text xml:space="preserve" text-anchor="start" x="366.06" y="-1241.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="414.5" y="-1241.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">clearNavigation()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="524.09" y="-1240" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Reset on company switch</text>
|
|
</g>
|
|
<!-- chatAutomat->navigationAutomat -->
|
|
<g id="edge52" class="edge">
|
|
<title>chatAutomat:w->navigationAutomat:n</title>
|
|
<g id="a_edge52"><a xlink:title="chatAutomat → navigationAutomat (set_user_route tool)">
|
|
<path fill="none" stroke="#a98cff" stroke-width="1.4" d="M4906.66,-1265.2C4774.13,-1265.2 4831.39,-1435.13 4710.76,-1490.02 4545.35,-1565.28 1621.34,-1497.15 1439.76,-1490.02 1245.11,-1482.37 573.44,-1613.88 552.5,-1429.23"/>
|
|
<polygon fill="#a98cff" stroke="#a98cff" stroke-width="1.4" points="554.95,-1429.17 552.11,-1422.32 550.06,-1429.44 554.95,-1429.17"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2942.76" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#a98cff">  set_user_route tool  </text>
|
|
</g>
|
|
<!-- navigationAutomat->categoryAutomat -->
|
|
<g id="edge55" class="edge">
|
|
<title>navigationAutomat:e->categoryAutomat:n</title>
|
|
<g id="a_edge55"><a xlink:title="navigationAutomat → categoryAutomat (restore last category)">
|
|
<path fill="none" stroke="#ff7aa8" stroke-width="1.4" d="M621.24,-1331.2C990.23,-1331.2 1072.47,-1227.63 1439.76,-1192.2 1842.89,-1153.31 1946.61,-1196.65 2350.76,-1170.2 2370.01,-1168.94 3000.6,-1118.87 3079.35,-1095.66"/>
|
|
<polygon fill="#ff7aa8" stroke="#ff7aa8" stroke-width="1.4" points="3080.48,-1097.83 3085.52,-1092.39 3078.19,-1093.5 3080.48,-1097.83"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2520.29" y="-1162.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff7aa8">  restore last category  </text>
|
|
</g>
|
|
<!-- navigationAutomat->artikelAutomat -->
|
|
<g id="edge54" class="edge">
|
|
<title>navigationAutomat:e->artikelAutomat:n</title>
|
|
<g id="a_edge54"><a xlink:title="navigationAutomat → artikelAutomat (restore last SKU)">
|
|
<path fill="none" stroke="#4ecb8f" stroke-width="1.4" d="M621.24,-1353.2C990.07,-1353.2 1072.19,-1459.51 1439.76,-1490.02 1870.72,-1525.79 1980.61,-1506.16 2412.76,-1490.02 2584.7,-1483.59 3177.35,-1602.06 3198.13,-1440.16"/>
|
|
<polygon fill="#4ecb8f" stroke="#4ecb8f" stroke-width="1.4" points="3200.57,-1440.45 3198.56,-1433.31 3195.68,-1440.15 3200.57,-1440.45"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2666.76" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#4ecb8f">  restore last SKU  </text>
|
|
</g>
|
|
<!-- navigationAutomat->deliveryEditorAutomat -->
|
|
<g id="edge56" class="edge">
|
|
<title>navigationAutomat:e->deliveryEditorAutomat:n</title>
|
|
<g id="a_edge56"><a xlink:title="navigationAutomat → deliveryEditorAutomat (restore draft path)">
|
|
<path fill="none" stroke="#e0b25a" stroke-width="1.4" d="M621.24,-1375.2C749.32,-1375.2 625.58,-1218.7 619.95,-1089.28"/>
|
|
<polygon fill="#e0b25a" stroke="#e0b25a" stroke-width="1.4" points="622.41,-1089.46 619.8,-1082.52 617.51,-1089.57 622.41,-1089.46"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="673.66" y="-1162.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#e0b25a">  restore draft path  </text>
|
|
</g>
|
|
<!-- userSettingsAutomat -->
|
|
<g id="node31" class="node">
|
|
<title>userSettingsAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="504.13,-1728 504.13,-1759 777.38,-1759 777.38,-1728 504.13,-1728"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="504.13,-1728 504.13,-1759 777.38,-1759 777.38,-1728 504.13,-1728"/>
|
|
<text xml:space="preserve" text-anchor="start" x="580.08" y="-1744.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">userSettingsAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="582.23" y="-1734.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">IndexedDB User Preferences</text>
|
|
<polygon fill="#2a3242" stroke="none" points="504.13,-1706 504.13,-1728 777.38,-1728 777.38,-1706 504.13,-1706"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="504.13,-1706 504.13,-1728 777.38,-1728 777.38,-1706 504.13,-1706"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="505.13,-1707 505.13,-1727 553.13,-1727 553.13,-1707 505.13,-1707"/>
|
|
<text xml:space="preserve" text-anchor="start" x="516.02" y="-1715.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="557.13" y="-1715" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">viewerPosition: 'top'|'right'</text>
|
|
<text xml:space="preserve" text-anchor="start" x="691.89" y="-1713.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Editor docking location</text>
|
|
<polygon fill="#272e3d" stroke="none" points="504.13,-1684 504.13,-1706 777.38,-1706 777.38,-1684 504.13,-1684"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="504.13,-1684 504.13,-1706 777.38,-1706 777.38,-1684 504.13,-1684"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="505.13,-1685 505.13,-1705 562.6,-1705 562.6,-1685 505.13,-1685"/>
|
|
<text xml:space="preserve" text-anchor="start" x="520.76" y="-1693.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="566.6" y="-1693" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">chatDrawerWidth: 460</text>
|
|
<text xml:space="preserve" text-anchor="start" x="698.57" y="-1691.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">AI drawer pixel width</text>
|
|
<polygon fill="#2a3242" stroke="none" points="504.13,-1662 504.13,-1684 777.38,-1684 777.38,-1662 504.13,-1662"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="504.13,-1662 504.13,-1684 777.38,-1684 777.38,-1662 504.13,-1662"/>
|
|
<polygon fill="#143826" stroke="none" points="505.13,-1663 505.13,-1683 573.2,-1683 573.2,-1663 505.13,-1663"/>
|
|
<text xml:space="preserve" text-anchor="start" x="523.83" y="-1671.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="577.2" y="-1671" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">setViewerPosition()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="718.14" y="-1669.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Persist docking</text>
|
|
<polygon fill="#272e3d" stroke="none" points="504.13,-1640 504.13,-1662 777.38,-1662 777.38,-1640 504.13,-1640"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="504.13,-1640 504.13,-1662 777.38,-1662 777.38,-1640 504.13,-1640"/>
|
|
<polygon fill="#143826" stroke="none" points="505.13,-1641 505.13,-1661 563.21,-1661 563.21,-1641 505.13,-1641"/>
|
|
<text xml:space="preserve" text-anchor="start" x="518.84" y="-1649.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="567.21" y="-1649" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">setChatDrawerWidth()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="700.36" y="-1647.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Persist drawer width</text>
|
|
<polygon fill="#2a3242" stroke="none" points="504.13,-1618 504.13,-1640 777.38,-1640 777.38,-1618 504.13,-1618"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="504.13,-1618 504.13,-1640 777.38,-1640 777.38,-1618 504.13,-1618"/>
|
|
<polygon fill="#382414" stroke="none" points="505.13,-1619 505.13,-1639 576.57,-1639 576.57,-1619 505.13,-1619"/>
|
|
<text xml:space="preserve" text-anchor="start" x="528.85" y="-1627.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fb923c">HOOK</text>
|
|
<text xml:space="preserve" text-anchor="start" x="580.57" y="-1627" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">persist: true</text>
|
|
<text xml:space="preserve" text-anchor="start" x="693.23" y="-1625.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Survives page reloads</text>
|
|
</g>
|
|
<!-- userSettingsAutomat->chatAutomat -->
|
|
<g id="edge57" class="edge">
|
|
<title>userSettingsAutomat:e->chatAutomat:n</title>
|
|
<g id="a_edge57"><a xlink:title="userSettingsAutomat → chatAutomat (chatDrawerWidth)">
|
|
<path fill="none" stroke="#56c8c8" stroke-width="1.4" d="M778.38,-1695C843.57,-1695 767.21,-1593.9 818.76,-1554 875.4,-1510.16 2036.11,-1522.22 2107.73,-1521.2 2180.03,-1520.17 4639.17,-1523.4 4710.76,-1513.2 4820.72,-1497.53 4950.39,-1553.21 4957.4,-1451.18"/>
|
|
<polygon fill="#56c8c8" stroke="#56c8c8" stroke-width="1.4" points="4959.84,-1451.39 4957.62,-1444.32 4954.94,-1451.23 4959.84,-1451.39"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="2147.25" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#56c8c8">  chatDrawerWidth  </text>
|
|
</g>
|
|
<!-- helpAutomat -->
|
|
<g id="node32" class="node">
|
|
<title>helpAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="141.51,-1728 141.51,-1759 420.01,-1759 420.01,-1728 141.51,-1728"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="141.51,-1728 141.51,-1759 420.01,-1759 420.01,-1728 141.51,-1728"/>
|
|
<text xml:space="preserve" text-anchor="start" x="244.09" y="-1744.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">helpAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="225.22" y="-1734.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">IndexedDB Contextual Help</text>
|
|
<polygon fill="#2a3242" stroke="none" points="141.51,-1706 141.51,-1728 420.01,-1728 420.01,-1706 141.51,-1706"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="141.51,-1706 141.51,-1728 420.01,-1728 420.01,-1706 141.51,-1706"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="142.51,-1707 142.51,-1727 206.35,-1727 206.35,-1707 142.51,-1707"/>
|
|
<text xml:space="preserve" text-anchor="start" x="161.32" y="-1715.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="210.35" y="-1715" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">enabled: boolean</text>
|
|
<text xml:space="preserve" text-anchor="start" x="332.28" y="-1713.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Interactive help badges</text>
|
|
<polygon fill="#272e3d" stroke="none" points="141.51,-1684 141.51,-1706 420.01,-1706 420.01,-1684 141.51,-1684"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="141.51,-1684 141.51,-1706 420.01,-1706 420.01,-1684 141.51,-1684"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="142.51,-1685 142.51,-1705 203.84,-1705 203.84,-1685 142.51,-1685"/>
|
|
<text xml:space="preserve" text-anchor="start" x="160.06" y="-1693.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="207.84" y="-1693" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">activeHelpId: string|null</text>
|
|
<text xml:space="preserve" text-anchor="start" x="355.87" y="-1691.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Active popper ID</text>
|
|
<polygon fill="#2a3242" stroke="none" points="141.51,-1662 141.51,-1684 420.01,-1684 420.01,-1662 141.51,-1662"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="141.51,-1662 141.51,-1684 420.01,-1684 420.01,-1662 141.51,-1662"/>
|
|
<polygon fill="#143826" stroke="none" points="142.51,-1663 142.51,-1683 202.62,-1683 202.62,-1663 142.51,-1663"/>
|
|
<text xml:space="preserve" text-anchor="start" x="157.23" y="-1671.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="206.62" y="-1671" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">toggle() / setEnabled()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="343.84" y="-1669.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Toggle badge mode</text>
|
|
<polygon fill="#272e3d" stroke="none" points="141.51,-1640 141.51,-1662 420.01,-1662 420.01,-1640 141.51,-1640"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="141.51,-1640 141.51,-1662 420.01,-1662 420.01,-1640 141.51,-1640"/>
|
|
<polygon fill="#143826" stroke="none" points="142.51,-1641 142.51,-1661 190.51,-1661 190.51,-1641 142.51,-1641"/>
|
|
<text xml:space="preserve" text-anchor="start" x="151.17" y="-1649.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="194.51" y="-1649" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">openPopper() / closePopper()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="342.52" y="-1647.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Single active popper</text>
|
|
<polygon fill="#2a3242" stroke="none" points="141.51,-1618 141.51,-1640 420.01,-1640 420.01,-1618 141.51,-1618"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="141.51,-1618 141.51,-1640 420.01,-1640 420.01,-1618 141.51,-1618"/>
|
|
<polygon fill="#382414" stroke="none" points="142.51,-1619 142.51,-1639 215.69,-1639 215.69,-1619 142.51,-1619"/>
|
|
<text xml:space="preserve" text-anchor="start" x="167.1" y="-1627.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#fb923c">HOOK</text>
|
|
<text xml:space="preserve" text-anchor="start" x="219.69" y="-1627" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">persist: true</text>
|
|
<text xml:space="preserve" text-anchor="start" x="335.85" y="-1625.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Survives page reloads</text>
|
|
</g>
|
|
<!-- helpAutomat->navigationAutomat -->
|
|
<g id="edge58" class="edge">
|
|
<title>helpAutomat:e->navigationAutomat:n</title>
|
|
<g id="a_edge58"><a xlink:title="helpAutomat → navigationAutomat (route-contextual help)">
|
|
<path fill="none" stroke="#ff5f9e" stroke-width="1.4" d="M421.01,-1695C479.45,-1695 424.66,-1499.24 419.85,-1428.89"/>
|
|
<polygon fill="#ff5f9e" stroke="#ff5f9e" stroke-width="1.4" points="422.31,-1429.22 419.6,-1422.32 417.42,-1429.41 422.31,-1429.22"/>
|
|
</a>
|
|
</g>
|
|
<text xml:space="preserve" text-anchor="middle" x="482.6" y="-1523.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#ff5f9e">  route-contextual help  </text>
|
|
</g>
|
|
<!-- pwaAutomat -->
|
|
<g id="node33" class="node">
|
|
<title>pwaAutomat</title>
|
|
<polygon fill="#33415c" stroke="none" points="861.11,-1728 861.11,-1759 1122.4,-1759 1122.4,-1728 861.11,-1728"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="861.11,-1728 861.11,-1759 1122.4,-1759 1122.4,-1728 861.11,-1728"/>
|
|
<text xml:space="preserve" text-anchor="start" x="955.76" y="-1744.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="12.00" fill="#e2e8f0">pwaAutomat</text>
|
|
<text xml:space="preserve" text-anchor="start" x="923.74" y="-1734.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#8b95a7">Service Worker & Offline Lifecycle</text>
|
|
<polygon fill="#2a3242" stroke="none" points="861.11,-1706 861.11,-1728 1122.4,-1728 1122.4,-1706 861.11,-1706"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="861.11,-1706 861.11,-1728 1122.4,-1728 1122.4,-1706 861.11,-1706"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="862.11,-1707 862.11,-1727 910.11,-1727 910.11,-1707 862.11,-1707"/>
|
|
<text xml:space="preserve" text-anchor="start" x="873" y="-1715.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="914.11" y="-1715" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">needRefresh: boolean</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1027.13" y="-1713.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">New SW release pending</text>
|
|
<polygon fill="#272e3d" stroke="none" points="861.11,-1684 861.11,-1706 1122.4,-1706 1122.4,-1684 861.11,-1684"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="861.11,-1684 861.11,-1706 1122.4,-1706 1122.4,-1684 861.11,-1684"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="862.11,-1685 862.11,-1705 914.9,-1705 914.9,-1685 862.11,-1685"/>
|
|
<text xml:space="preserve" text-anchor="start" x="875.39" y="-1693.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="918.9" y="-1693" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">offlineReady: boolean</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1040.92" y="-1691.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Offline assets cached</text>
|
|
<polygon fill="#2a3242" stroke="none" points="861.11,-1662 861.11,-1684 1122.4,-1684 1122.4,-1662 861.11,-1662"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="861.11,-1662 861.11,-1684 1122.4,-1684 1122.4,-1662 861.11,-1662"/>
|
|
<polygon fill="#2b1a42" stroke="none" points="862.11,-1663 862.11,-1683 916.9,-1683 916.9,-1663 862.11,-1663"/>
|
|
<text xml:space="preserve" text-anchor="start" x="876.4" y="-1671.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#c084fc">STATE</text>
|
|
<text xml:space="preserve" text-anchor="start" x="920.9" y="-1671" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">dialogOpen / updating</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1048.04" y="-1669.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Prompt modal state</text>
|
|
<polygon fill="#272e3d" stroke="none" points="861.11,-1640 861.11,-1662 1122.4,-1662 1122.4,-1640 861.11,-1640"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="861.11,-1640 861.11,-1662 1122.4,-1662 1122.4,-1640 861.11,-1640"/>
|
|
<polygon fill="#143826" stroke="none" points="862.11,-1641 862.11,-1661 928.08,-1661 928.08,-1641 862.11,-1641"/>
|
|
<text xml:space="preserve" text-anchor="start" x="879.77" y="-1649.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="932.08" y="-1649" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">applyUpdate()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1042.69" y="-1647.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Skip waiting & reload</text>
|
|
<polygon fill="#2a3242" stroke="none" points="861.11,-1618 861.11,-1640 1122.4,-1640 1122.4,-1618 861.11,-1618"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="861.11,-1618 861.11,-1640 1122.4,-1640 1122.4,-1618 861.11,-1618"/>
|
|
<polygon fill="#143826" stroke="none" points="862.11,-1619 862.11,-1639 913.79,-1639 913.79,-1619 862.11,-1619"/>
|
|
<text xml:space="preserve" text-anchor="start" x="872.62" y="-1627.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="8.00" fill="#4ade80">ACTION</text>
|
|
<text xml:space="preserve" text-anchor="start" x="917.79" y="-1627" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="10.00" fill="#d8dee9">openDialog() / closeDialog()</text>
|
|
<text xml:space="preserve" text-anchor="start" x="1065.38" y="-1625.8" font-family="Helvetica,sans-Serif" font-size="8.00" fill="#8b95a7">Modal controls</text>
|
|
</g>
|
|
<!-- Legend -->
|
|
<g id="node34" class="node">
|
|
<title>Legend</title>
|
|
<polygon fill="#2a3242" stroke="none" points="1206.46,-1591.7 1206.46,-1785.3 1421.06,-1785.3 1421.06,-1591.7 1206.46,-1591.7"/>
|
|
<polygon fill="#33415c" stroke="none" points="1206.46,-1762.1 1206.46,-1785.3 1421.06,-1785.3 1421.06,-1762.1 1206.46,-1762.1"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1762.1 1206.46,-1785.3 1421.06,-1785.3 1421.06,-1762.1 1206.46,-1762.1"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1252.64" y="-1771.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="11.00" fill="#e2e8f0">Automat Graph Legend</text>
|
|
<polygon fill="#2b1a42" stroke="none" points="1206.46,-1741.3 1206.46,-1762.1 1254.46,-1762.1 1254.46,-1741.3 1206.46,-1741.3"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1741.3 1206.46,-1762.1 1254.46,-1762.1 1254.46,-1741.3 1206.46,-1741.3"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1215.71" y="-1750" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00" fill="#c084fc">STATE</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1254.46,-1741.3 1254.46,-1762.1 1421.06,-1762.1 1421.06,-1741.3 1254.46,-1741.3"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1259.46" y="-1748.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#d8dee9">Reactive store state property</text>
|
|
<polygon fill="#143826" stroke="none" points="1206.46,-1720.5 1206.46,-1741.3 1254.46,-1741.3 1254.46,-1720.5 1206.46,-1720.5"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1720.5 1206.46,-1741.3 1254.46,-1741.3 1254.46,-1720.5 1206.46,-1720.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1213.21" y="-1729.2" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00" fill="#4ade80">ACTION</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1254.46,-1720.5 1254.46,-1741.3 1421.06,-1741.3 1421.06,-1720.5 1254.46,-1720.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1259.46" y="-1727.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#d8dee9">State mutation action</text>
|
|
<polygon fill="#182b40" stroke="none" points="1206.46,-1699.7 1206.46,-1720.5 1254.46,-1720.5 1254.46,-1699.7 1206.46,-1699.7"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1699.7 1206.46,-1720.5 1254.46,-1720.5 1254.46,-1699.7 1206.46,-1699.7"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1212.71" y="-1708.4" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00" fill="#38bdf8">SELECT</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1254.46,-1699.7 1254.46,-1720.5 1421.06,-1720.5 1421.06,-1699.7 1254.46,-1699.7"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1259.46" y="-1706.5" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#d8dee9">Reactive PureComponent selector</text>
|
|
<polygon fill="#3b2c12" stroke="none" points="1206.46,-1678.9 1206.46,-1699.7 1254.46,-1699.7 1254.46,-1678.9 1206.46,-1678.9"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1678.9 1206.46,-1699.7 1254.46,-1699.7 1254.46,-1678.9 1206.46,-1678.9"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1222.96" y="-1687.6" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00" fill="#fbbf24">API</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1254.46,-1678.9 1254.46,-1699.7 1421.06,-1699.7 1421.06,-1678.9 1254.46,-1678.9"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1259.46" y="-1685.7" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#d8dee9">Backend REST/Fetch endpoint</text>
|
|
<polygon fill="#3a181e" stroke="none" points="1206.46,-1658.1 1206.46,-1678.9 1254.46,-1678.9 1254.46,-1658.1 1206.46,-1658.1"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1658.1 1206.46,-1678.9 1254.46,-1678.9 1254.46,-1658.1 1206.46,-1658.1"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1221.45" y="-1666.8" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00" fill="#f87171">SSE</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1254.46,-1658.1 1254.46,-1678.9 1421.06,-1678.9 1421.06,-1658.1 1254.46,-1658.1"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1259.46" y="-1664.9" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#d8dee9">Inbound Server-Sent Event trigger</text>
|
|
<polygon fill="#382414" stroke="none" points="1206.46,-1637.3 1206.46,-1658.1 1254.46,-1658.1 1254.46,-1637.3 1206.46,-1637.3"/>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1637.3 1206.46,-1658.1 1254.46,-1658.1 1254.46,-1637.3 1206.46,-1637.3"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1216.96" y="-1646" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00" fill="#fb923c">HOOK</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1254.46,-1637.3 1254.46,-1658.1 1421.06,-1658.1 1421.06,-1637.3 1254.46,-1637.3"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1259.46" y="-1644.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#d8dee9">Auth / persistence lifecycle hook</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1614.5 1206.46,-1637.3 1254.46,-1637.3 1254.46,-1614.5 1206.46,-1614.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1220.34" y="-1622.7" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="14.00" fill="#e2e8f0">in#</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1254.46,-1614.5 1254.46,-1637.3 1421.06,-1637.3 1421.06,-1614.5 1254.46,-1614.5"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1259.46" y="-1622.3" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#d8dee9">Inbound arrival port on Automat header</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1206.46,-1591.7 1206.46,-1614.5 1254.46,-1614.5 1254.46,-1591.7 1206.46,-1591.7"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1212.95" y="-1597.5" font-family="Helvetica,sans-Serif" font-size="14.00" fill="#5aa7ff">▪—▶</text>
|
|
<polygon fill="none" stroke="#3f4c5f" points="1254.46,-1591.7 1254.46,-1614.5 1421.06,-1614.5 1421.06,-1591.7 1254.46,-1591.7"/>
|
|
<text xml:space="preserve" text-anchor="start" x="1259.46" y="-1599.5" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#d8dee9">Reactive dataflow / upstream trigger</text>
|
|
</g>
|
|
</g>
|
|
</svg>
|