57 lines
5.1 KiB
XML
57 lines
5.1 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 1040" role="img" aria-labelledby="title desc">
|
||
<title id="title">Разрешённые направления и публичные поверхности учебных модулей</title>
|
||
<desc id="desc">Модули catalog, checkout, payments и notifications разделены на API и internal. Стрелки разрешают checkout обращаться к API catalog и payments, а payments к API notifications. Пунктирная красная стрелка к catalog internal запрещена.</desc>
|
||
<defs>
|
||
<marker id="arrow-green" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0,0 L10,5 L0,10 Z" fill="#39D49A"/></marker>
|
||
<marker id="arrow-red" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto"><path d="M0,0 L10,5 L0,10 Z" fill="#FB7185"/></marker>
|
||
</defs>
|
||
<rect width="820" height="1040" rx="28" fill="#0B1220"/>
|
||
<rect x="24" y="24" width="772" height="992" rx="20" fill="#111C30" stroke="#263653" stroke-width="2"/>
|
||
<text x="54" y="78" fill="#F8FAFC" font-family="Arial, sans-serif" font-size="31" font-weight="700">Разрешённые направления</text>
|
||
<text x="54" y="112" fill="#B9C8DE" font-family="Arial, sans-serif" font-size="19">Каждая стрелка заканчивается на public API, не на весь модуль.</text>
|
||
|
||
<g font-family="Arial, sans-serif">
|
||
<rect x="58" y="184" width="276" height="176" rx="18" fill="#172740" stroke="#5D79A5" stroke-width="2"/>
|
||
<text x="82" y="222" fill="#F8FAFC" font-size="26" font-weight="700">catalog</text>
|
||
<rect x="80" y="242" width="232" height="43" rx="9" fill="#1E5A4E"/>
|
||
<text x="96" y="270" fill="#C9F7E1" font-size="19" font-weight="700">public: catalog.api</text>
|
||
<rect x="80" y="298" width="232" height="40" rx="9" fill="#263247"/>
|
||
<text x="96" y="324" fill="#B5C4D8" font-size="18">internal: catalog.internal</text>
|
||
|
||
<rect x="474" y="144" width="276" height="176" rx="18" fill="#172740" stroke="#5D79A5" stroke-width="2"/>
|
||
<text x="498" y="182" fill="#F8FAFC" font-size="26" font-weight="700">checkout</text>
|
||
<rect x="496" y="202" width="232" height="43" rx="9" fill="#1E5A4E"/>
|
||
<text x="512" y="230" fill="#C9F7E1" font-size="19" font-weight="700">public: checkout.api</text>
|
||
<rect x="496" y="258" width="232" height="40" rx="9" fill="#263247"/>
|
||
<text x="512" y="284" fill="#B5C4D8" font-size="18">internal: checkout.internal</text>
|
||
|
||
<rect x="474" y="498" width="276" height="176" rx="18" fill="#172740" stroke="#5D79A5" stroke-width="2"/>
|
||
<text x="498" y="536" fill="#F8FAFC" font-size="26" font-weight="700">payments</text>
|
||
<rect x="496" y="556" width="232" height="43" rx="9" fill="#1E5A4E"/>
|
||
<text x="512" y="584" fill="#C9F7E1" font-size="19" font-weight="700">public: payments.api</text>
|
||
<rect x="496" y="612" width="232" height="40" rx="9" fill="#263247"/>
|
||
<text x="512" y="638" fill="#B5C4D8" font-size="18">internal: payments.internal</text>
|
||
|
||
<rect x="58" y="748" width="276" height="176" rx="18" fill="#172740" stroke="#5D79A5" stroke-width="2"/>
|
||
<text x="82" y="786" fill="#F8FAFC" font-size="26" font-weight="700">notifications</text>
|
||
<rect x="80" y="806" width="232" height="43" rx="9" fill="#1E5A4E"/>
|
||
<text x="96" y="834" fill="#C9F7E1" font-size="19" font-weight="700">public: notifications.api</text>
|
||
<rect x="80" y="862" width="232" height="40" rx="9" fill="#263247"/>
|
||
<text x="96" y="888" fill="#B5C4D8" font-size="18">internal: notifications.internal</text>
|
||
</g>
|
||
|
||
<path d="M474 230 C420 230 390 252 334 260" fill="none" stroke="#39D49A" stroke-width="5" marker-end="url(#arrow-green)"/>
|
||
<text x="354" y="223" fill="#B6F4D8" font-family="Arial, sans-serif" font-size="17" font-weight="700">checkout → catalog.api</text>
|
||
<path d="M612 320 L612 498" fill="none" stroke="#39D49A" stroke-width="5" marker-end="url(#arrow-green)"/>
|
||
<text x="486" y="394" fill="#B6F4D8" font-family="Arial, sans-serif" font-size="17" font-weight="700">checkout →</text>
|
||
<text x="486" y="418" fill="#B6F4D8" font-family="Arial, sans-serif" font-size="17" font-weight="700">payments.api</text>
|
||
<path d="M474 606 C400 635 370 748 334 826" fill="none" stroke="#39D49A" stroke-width="5" marker-end="url(#arrow-green)"/>
|
||
<text x="230" y="604" fill="#B6F4D8" font-family="Arial, sans-serif" font-size="17" font-weight="700">payments → notifications.api</text>
|
||
|
||
<path d="M474 276 C412 316 378 328 312 316" fill="none" stroke="#FB7185" stroke-width="4" stroke-dasharray="11 9" marker-end="url(#arrow-red)"/>
|
||
<text x="350" y="351" fill="#FDA4AF" font-family="Arial, sans-serif" font-size="17" font-weight="700">запрещено: checkout → catalog.internal</text>
|
||
<rect x="358" y="920" width="392" height="68" rx="12" fill="#0E1727" stroke="#2B3A54" stroke-width="2"/>
|
||
<text x="378" y="950" fill="#B9C8DE" font-family="Arial, sans-serif" font-size="17">Не «весь модуль», а</text>
|
||
<text x="378" y="974" fill="#B9C8DE" font-family="Arial, sans-serif" font-size="17">«его public API по правилу».</text>
|
||
</svg>
|