102 lines
10 KiB
XML
102 lines
10 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="600" viewBox="0 0 1200 600" font-family="Inter, 'Segoe UI', Arial, sans-serif">
|
||
<defs>
|
||
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="#4A4A50"/></marker>
|
||
<marker id="arrow-start" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="#4A4A50"/></marker>
|
||
</defs>
|
||
<rect x="0" y="0" width="1200" height="600" fill="#FAFAFB"/>
|
||
<text x="40" y="46" font-size="22" font-weight="600" fill="#1D1D1F" text-anchor="start">From scan report to stored finding</text>
|
||
<text x="40" y="72" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Every import is a two-stage transaction: preview first, save only after the analyst confirms.</text>
|
||
<text x="40" y="116" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Preview: parsed in memory, nothing saved yet</text>
|
||
<rect x="40" y="132" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="65" cy="153" r="11" fill="#1D1D1F"/>
|
||
<text x="65" y="158" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">1</text>
|
||
<text x="84" y="158" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Upload</text>
|
||
<text x="54" y="182" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Data Hub › client ›</text>
|
||
<text x="54" y="201" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Import Data. Up to 50</text>
|
||
<text x="54" y="220" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">files, 100 MiB each.</text>
|
||
<rect x="270" y="132" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="295" cy="153" r="11" fill="#1D1D1F"/>
|
||
<text x="295" y="158" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">2</text>
|
||
<text x="314" y="158" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Isolated worker</text>
|
||
<text x="284" y="182" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Parser runs with time</text>
|
||
<text x="284" y="201" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">and memory limits.</text>
|
||
<text x="284" y="220" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Active content never</text>
|
||
<text x="284" y="239" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">runs.</text>
|
||
<rect x="500" y="132" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="525" cy="153" r="11" fill="#1D1D1F"/>
|
||
<text x="525" y="158" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">3</text>
|
||
<text x="544" y="158" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Format parser</text>
|
||
<text x="514" y="182" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">HTML, XML, JSON, CSV,</text>
|
||
<text x="514" y="201" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Excel to one</text>
|
||
<text x="514" y="220" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">ImportDocument with</text>
|
||
<text x="514" y="239" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">source positions.</text>
|
||
<rect x="730" y="132" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="755" cy="153" r="11" fill="#1D1D1F"/>
|
||
<text x="755" y="158" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">4</text>
|
||
<text x="774" y="158" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Recognition</text>
|
||
<text x="744" y="182" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Detects the tool,</text>
|
||
<text x="744" y="201" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">relevant tables and</text>
|
||
<text x="744" y="220" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">field roles, with a</text>
|
||
<text x="744" y="239" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">confidence score.</text>
|
||
<rect x="960" y="132" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="985" cy="153" r="11" fill="#1D1D1F"/>
|
||
<text x="985" y="158" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">5</text>
|
||
<text x="1004" y="158" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Scanner profile</text>
|
||
<text x="974" y="182" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Maps fields, status,</text>
|
||
<text x="974" y="201" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">severity, first-read</text>
|
||
<text x="974" y="220" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">and native score of</text>
|
||
<text x="974" y="239" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">that tool.</text>
|
||
<path d="M240 207 H268" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<path d="M470 207 H498" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<path d="M700 207 H728" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<path d="M930 207 H958" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<path d="M960 282 V342 H140 V378" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<rect x="427.4" y="332" width="245.20000000000002" height="20" fill="#FAFAFB"/>
|
||
<text x="550" y="347" font-size="14" font-weight="400" fill="#1D1D1F" text-anchor="middle">analyst confirms the selection</text>
|
||
<text x="40" y="318" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Commit: one atomic repository transaction</text>
|
||
<rect x="40" y="380" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="65" cy="401" r="11" fill="#1D1D1F"/>
|
||
<text x="65" y="406" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">6</text>
|
||
<text x="84" y="406" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Preview review</text>
|
||
<text x="54" y="430" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Tool, confidence,</text>
|
||
<text x="54" y="449" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">warnings, unmapped</text>
|
||
<text x="54" y="468" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">fields, SHA-256</text>
|
||
<text x="54" y="487" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">duplicates.</text>
|
||
<rect x="270" y="380" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="295" cy="401" r="11" fill="#1D1D1F"/>
|
||
<text x="295" y="406" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">7</text>
|
||
<text x="314" y="406" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Canonical model</text>
|
||
<text x="284" y="430" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Definitions and</text>
|
||
<text x="284" y="449" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">occurrences. Original</text>
|
||
<text x="284" y="468" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">and normalized values</text>
|
||
<text x="284" y="487" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">side by side.</text>
|
||
<rect x="500" y="380" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="525" cy="401" r="11" fill="#1D1D1F"/>
|
||
<text x="525" y="406" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">8</text>
|
||
<text x="544" y="406" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Atomic commit</text>
|
||
<text x="514" y="430" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">One DB transaction,</text>
|
||
<text x="514" y="449" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">one revision. No</text>
|
||
<text x="514" y="468" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">partial imports on</text>
|
||
<text x="514" y="487" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">error.</text>
|
||
<rect x="730" y="380" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="755" cy="401" r="11" fill="#1D1D1F"/>
|
||
<text x="755" y="406" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">9</text>
|
||
<text x="774" y="406" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">PostgreSQL</text>
|
||
<text x="744" y="430" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">System of record. Full</text>
|
||
<text x="744" y="449" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">canonical object plus</text>
|
||
<text x="744" y="468" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">relational keys.</text>
|
||
<rect x="960" y="380" width="200" height="150" rx="0" fill="#F5F5F7" stroke="#DCDDE3" stroke-width="1"/>
|
||
<circle cx="985" cy="401" r="11" fill="#1D1D1F"/>
|
||
<text x="985" y="406" font-size="12" font-weight="600" fill="#FFFFFF" text-anchor="middle">10</text>
|
||
<text x="1004" y="406" font-size="16" font-weight="600" fill="#1D1D1F" text-anchor="start">Read models</text>
|
||
<text x="974" y="430" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">Unified results, Work</text>
|
||
<text x="974" y="449" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">sheets, Result DB rows</text>
|
||
<text x="974" y="468" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">rebuilt and checked.</text>
|
||
<path d="M240 455 H268" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<path d="M470 455 H498" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<path d="M700 455 H728" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<path d="M930 455 H958" fill="none" stroke="#4A4A50" stroke-width="2" marker-end="url(#arrow)"/>
|
||
<text x="40" y="566" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">GPO backups take a parallel path through the GPO inventory worker and the baseline comparison (next diagram). A reimport must be</text>
|
||
<text x="40" y="585" font-size="14" font-weight="400" fill="#5F6068" text-anchor="start">byte-identical to the original files (SHA-256) and keeps all reviews and accepted risks.</text>
|
||
</svg>
|