pinkmine/docs/_resources/Архитектура.svg

1430 lines
90 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1087.3479mm"
height="1205.6333mm"
viewBox="0 0 1087.3479 1205.6332"
version="1.1"
id="svg8"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
sodipodi:docname="Архитектура.svg"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Архитектура.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<defs
id="defs2">
<marker
style="overflow:visible"
id="marker2232"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path2230" />
</marker>
<marker
style="overflow:visible"
id="marker2222"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Lend"
inkscape:isstock="true">
<path
transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path2220" />
</marker>
<marker
style="overflow:visible"
id="marker1532"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path1530" />
</marker>
<marker
style="overflow:visible"
id="Arrow2Mend"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true"
inkscape:collect="always">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path1171" />
</marker>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1455">
<rect
style="fill:#000000;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1457"
width="5.291657"
height="5.291667"
x="87.312508"
y="-2.6458354" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1455-6">
<rect
style="fill:#000000;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1457-2"
width="5.291657"
height="5.291667"
x="87.312508"
y="-2.6458354" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1455-2">
<rect
style="fill:#000000;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1457-0"
width="5.291657"
height="5.291667"
x="87.312508"
y="-2.6458354" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1455-6-2">
<rect
style="fill:#000000;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1457-2-3"
width="5.291657"
height="5.291667"
x="87.312508"
y="-2.6458354" />
</clipPath>
<marker
style="overflow:visible"
id="marker1532-7"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow2Mend"
inkscape:isstock="true">
<path
transform="scale(-0.6)"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
style="fill:#808080;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
id="path1530-5" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="0.16470588"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="2.04425"
inkscape:cx="2429.2066"
inkscape:cy="3158.3482"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="true"
inkscape:snap-text-baseline="true"
inkscape:window-width="1856"
inkscape:window-height="1051"
inkscape:window-x="64"
inkscape:window-y="0"
inkscape:window-maximized="1"
fit-margin-top="10"
lock-margins="true"
fit-margin-left="10"
fit-margin-right="10"
fit-margin-bottom="10"
inkscape:snap-global="true"
showguides="false"
inkscape:snap-smooth-nodes="true">
<inkscape:grid
type="xygrid"
id="grid18"
originx="158.31669"
originy="539.31661" />
<sodipodi:guide
position="539.31669,179.48337"
orientation="380.00001,0"
id="guide1634" />
<sodipodi:guide
position="713.94169,171.54586"
orientation="380.00001,0"
id="guide1638" />
<sodipodi:guide
position="851.52502,174.19169"
orientation="380.00001,0"
id="guide1640" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Слой 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(158.31667,539.31669)">
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1564-7"
width="365.12497"
height="227.54166"
x="354.54169"
y="190.49995"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:55.1297;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="44.043743"
y="25.374104"
id="text12"
transform="translate(-36.105469,1.0842298)"><tspan
x="44.043743"
y="25.374104"><tspan
style="stroke-width:0.3">redmine issue </tspan></tspan><tspan
x="44.043743"
y="33.311604"><tspan
style="stroke-width:0.3">event emitter</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:52.9162;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="113.68213"
y="28.999422"
id="text16"
transform="translate(0.08919271,-2.5410887)"><tspan
x="113.68213"
y="28.999422"><tspan
style="stroke-width:0.3">сохранение </tspan></tspan><tspan
x="113.68213"
y="36.936922"><tspan
style="stroke-width:0.3">задачи в кеш</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:26.4583;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="66.145836"
y="58.208332"
id="text22"
transform="translate(7.936849,-31.749999)"><tspan
x="66.145836"
y="58.208332"><tspan
style="stroke-width:0.3">анализ </tspan></tspan><tspan
x="66.145836"
y="66.14583"><tspan
style="stroke-width:0.3">задачи</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:71.4375;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="166.6875"
y="26.458332"
id="text26"
transform="translate(92.60416)"><tspan
x="166.6875"
y="26.458332"><tspan
style="stroke-width:0.3">сохранение событий </tspan></tspan><tspan
x="166.6875"
y="34.395832"><tspan
style="stroke-width:0.3">в журнал</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:113.771;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="-47.625"
y="7.9375"
id="text48"
transform="translate(-74.083333,18.520833)"><tspan
x="-47.625"
y="7.9375"><tspan
style="stroke-width:0.3">подписка на источники событий </tspan></tspan><tspan
x="-47.625"
y="15.875"><tspan
style="stroke-width:0.3">по </tspan><tspan
style="stroke-width:0.3">email, </tspan><tspan
style="stroke-width:0.3">через </tspan><tspan
style="stroke-width:0.3">cron, rss</tspan></tspan></text>
<path
id="path50-3"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
d="m 60.854166,18.520835 5.291667,10.583333 -5.291667,10.583334 m 10e-7,-21.166668 H -2.6458333 L 2.6458333,29.104167 -2.6458333,39.687501 H 60.854167" />
<path
id="path142"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="M 100.54167,39.687499 H 63.499999 m 0,-21.166667 h 37.041671 m 0,0 5.29166,10.583333 -5.29166,10.583334 M 63.5,18.520833 68.791667,29.104166 63.5,39.6875" />
<path
id="path298"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 166.6875,39.6875 h -63.5 m 0,-21.166667 h 63.5 m 0,0 5.29167,10.583333 -5.29167,10.583334 m -63.5,-21.166667 5.29167,10.583333 -5.29167,10.583334" />
<path
id="path303"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 330.72916,39.687496 h -82.02083 m 0,-21.166667 h 82.02083 m 1e-5,2e-6 5.29166,10.583333 -5.29166,10.583334 M 248.70833,18.52083 254,29.104163 248.70833,39.687497" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="M -5.2916681,18.520833 -1.5475337e-6,29.104166 -5.2916681,39.687499 H -132.29167 V 18.520833 H -5.2916681"
id="path310"
sodipodi:nodetypes="cccccc" />
<g
id="g1599">
<g
id="g317"
transform="translate(10.583334,2.6458334)">
<text
xml:space="preserve"
style="font-size:3.52778px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:55.5618;fill:#808080;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="-80.198532"
y="-38.043388"
id="text308"
transform="translate(-41.509115,98.897553)"><tspan
x="-80.198532"
y="-38.043388"><tspan
style="font-size:3.52778px;fill:#808080;stroke-width:0.3">события - это обнаружение </tspan></tspan><tspan
x="-80.198532"
y="-33.633662"><tspan
style="font-size:3.52778px;fill:#808080;stroke-width:0.3">факта внесения какого-либо </tspan></tspan><tspan
x="-80.198532"
y="-29.223937"><tspan
style="font-size:3.52778px;fill:#808080;stroke-width:0.3">изменения в задачу</tspan></tspan></text>
<rect
style="fill:none;stroke:#808080;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel"
id="rect312"
width="63.5"
height="18.520834"
x="-125.67709"
y="55.562492" />
</g>
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow2Mend);stop-color:#000000;stop-opacity:1"
d="m -48.947917,67.468747 c 17.845545,2.548099 6.614585,-13.229165 2.645834,-23.812499"
id="path319"
sodipodi:nodetypes="cc" />
</g>
<g
id="g1449"
clip-path="url(#clipPath1455)"
transform="matrix(2,0,0,2,-74.083349,10.583335)">
<path
id="path1442"
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
d="m 91.281258,2.6458313 a 3.96875,3.96875 0 0 1 -3.96875,3.96875 3.96875,3.96875 0 0 1 -3.96875,-3.96875 3.96875,3.96875 0 0 1 3.96875,-3.96875 3.96875,3.96875 0 0 1 3.96875,3.96875 z m -1.322917,0 A 2.6458333,2.6458333 0 0 1 87.312508,5.2916646 2.6458333,2.6458333 0 0 1 84.666674,2.6458313 2.6458333,2.6458333 0 0 1 87.312508,-1.9073486e-6 2.6458333,2.6458333 0 0 1 89.958341,2.6458313 Z m -1.322917,0 A 1.3229166,1.3229166 0 0 1 87.312508,3.968748 1.3229166,1.3229166 0 0 1 85.989591,2.6458313 1.3229166,1.3229166 0 0 1 87.312508,1.3229147 1.3229166,1.3229166 0 0 1 88.635424,2.6458313 Z" />
</g>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:63.5;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="171.97917"
y="-10.583335"
id="text1462"
transform="translate(7.938151,37.041666)"><tspan
x="171.97917"
y="-10.583335"><tspan
style="stroke-width:0.3">анализ изменений </tspan></tspan><tspan
x="171.97917"
y="-2.6458356"><tspan
style="stroke-width:0.3">в задаче</tspan></tspan></text>
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 169.33332,18.520831 5.29167,10.583334 -5.29167,10.583332 h 76.72917 l 5.29167,-10.583332 -5.29167,-10.583334 z"
id="path1464" />
<g
id="g1449-6"
clip-path="url(#clipPath1455-6)"
transform="matrix(2,0,0,2,71.437485,10.583335)">
<path
id="path1442-1"
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
d="m 91.281258,2.6458313 a 3.96875,3.96875 0 0 1 -3.96875,3.96875 3.96875,3.96875 0 0 1 -3.96875,-3.96875 3.96875,3.96875 0 0 1 3.96875,-3.96875 3.96875,3.96875 0 0 1 3.96875,3.96875 z m -1.322917,0 A 2.6458333,2.6458333 0 0 1 87.312508,5.2916646 2.6458333,2.6458333 0 0 1 84.666674,2.6458313 2.6458333,2.6458333 0 0 1 87.312508,-1.9073486e-6 2.6458333,2.6458333 0 0 1 89.958341,2.6458313 Z m -1.322917,0 A 1.3229166,1.3229166 0 0 1 87.312508,3.968748 1.3229166,1.3229166 0 0 1 85.989591,2.6458313 1.3229166,1.3229166 0 0 1 87.312508,1.3229147 1.3229166,1.3229166 0 0 1 88.635424,2.6458313 Z" />
</g>
<text
xml:space="preserve"
style="font-size:3.52778px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="109.80209"
y="5.2916617"
id="text1498"><tspan
sodipodi:role="line"
id="tspan1496"
x="109.80209"
y="5.2916617"
style="font-size:3.52778px;stroke-width:0.3">websocket</tspan><tspan
sodipodi:role="line"
x="109.80209"
y="9.7013865"
style="font-size:3.52778px;stroke-width:0.3"
id="tspan1500">webhook</tspan></text>
<text
xml:space="preserve"
style="font-size:3.52778px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="255.32292"
y="5.2916617"
id="text1504"><tspan
sodipodi:role="line"
id="tspan1517"
x="255.32292"
y="5.2916617"
style="font-size:3.52778px;stroke-width:0.3">chat bot</tspan></text>
<g
id="g1623">
<text
xml:space="preserve"
style="font-size:3.52778px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:47.6243;fill:#808080;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="72.760422"
y="52.916664"
id="text1508"
transform="translate(-26.457682,10.583333)"><tspan
x="72.760422"
y="52.916664"><tspan
style="font-size:3.52778px;fill:#808080;stroke-width:0.3">точка для расширения: </tspan></tspan><tspan
x="72.760422"
y="57.32639"><tspan
style="font-size:3.52778px;fill:#808080;stroke-width:0.3">можно добавить </tspan></tspan><tspan
x="72.760422"
y="61.736115"><tspan
style="font-size:3.52778px;fill:#808080;stroke-width:0.3">специальные </tspan></tspan><tspan
x="72.760422"
y="66.14584"><tspan
style="font-size:3.52778px;fill:#808080;stroke-width:0.3">обработчики для данных</tspan></tspan></text>
<rect
style="fill:none;stroke:#808080;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1520"
width="60.854164"
height="23.812506"
x="39.687504"
y="58.208328" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1532);stop-color:#000000;stop-opacity:1"
d="M 103.82922,67.530254 C 122.95943,63.235945 95.884355,47.016204 92.264794,42.405379"
id="path1522" />
</g>
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="116.41666"
y="-26.458336"
id="text1560"><tspan
sodipodi:role="line"
id="tspan1558"
x="116.41666"
y="-26.458336"
style="font-size:8.46667px;text-align:center;text-anchor:middle;stroke-width:0.3">Ядро проекта Pinkmine</tspan><tspan
sodipodi:role="line"
x="116.41666"
y="-15.874998"
style="font-size:8.46667px;text-align:center;text-anchor:middle;stroke-width:0.3"
id="tspan1562">(redmine issue event emitter)</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1564"
width="497.41669"
height="142.875"
x="-148.16667"
y="-47.625004" />
<ellipse
style="fill:#000000;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="path1566"
cx="100.54166"
cy="15.874995"
rx="0.52916569"
ry="0.52916664" />
<ellipse
style="fill:#000000;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="path1566-8"
cx="246.0625"
cy="15.874995"
rx="0.52916569"
ry="0.52916664" />
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:55.1297;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="44.043743"
y="25.374104"
id="text12-9"
transform="translate(482.47788,239.20918)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="44.043743"
y="25.374104"><tspan
style="stroke-width:0.3">redmine issue </tspan></tspan><tspan
x="44.043743"
y="33.311604"><tspan
style="stroke-width:0.3">event emitter</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:52.9162;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="113.68213"
y="28.999422"
id="text16-2"
transform="translate(439.29755,288.5005)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="113.68213"
y="28.999422"><tspan
style="stroke-width:0.3">сохранение </tspan></tspan><tspan
x="113.68213"
y="36.936922"><tspan
style="stroke-width:0.3">задачи в кеш</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:56.8861;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="66.145836"
y="58.208332"
id="text22-2"
transform="translate(415.3952,259.29159)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="66.145836"
y="58.208332"><tspan
style="stroke-width:0.3">преобразование </tspan></tspan><tspan
x="66.145836"
y="66.14583"><tspan
style="stroke-width:0.3">задачи</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:71.4375;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="166.6875"
y="26.458332"
id="text26-8"
transform="translate(452.43751,343.95829)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="166.6875"
y="26.458332"><tspan
style="stroke-width:0.3">сохранение событий </tspan></tspan><tspan
x="166.6875"
y="34.395832"><tspan
style="stroke-width:0.3">в журнал</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:113.771;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="-47.625"
y="7.9375"
id="text48-9"
transform="translate(444.50002,256.64578)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="-47.625"
y="7.9375"><tspan
style="stroke-width:0.3">подписка на источники событий </tspan></tspan><tspan
x="-47.625"
y="15.875"><tspan
style="stroke-width:0.3">по </tspan><tspan
style="stroke-width:0.3">email, </tspan><tspan
style="stroke-width:0.3">через </tspan><tspan
style="stroke-width:0.3">cron, rss</tspan></tspan></text>
<path
id="path50-3-7"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
d="m 579.43748,256.64578 5.2917,10.58334 -5.2917,10.58333 m 0,-21.16667 h -63.49996 l 5.29166,10.58334 -5.29166,10.58333 h 63.49996"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
id="path298-6"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
d="m 605.89587,330.72909 h -63.50002 m 0,-21.16667 h 63.50002 m 0,0 5.2917,10.58333 -5.2917,10.58334 m -63.50002,-21.16667 5.29167,10.58333 -5.29167,10.58334"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
id="path303-1"
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
d="m 690.56248,383.64579 h -82.0208 m 0,-21.16667 h 82.0208 m 0,0 5.2917,10.58333 -5.2917,10.58334 m -82.0208,-21.16667 5.2917,10.58333 -5.2917,10.58334"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
d="m 513.29168,256.64578 5.29167,10.58333 -5.29167,10.58334 h -127 v -21.16667 h 127"
id="path310-2"
sodipodi:nodetypes="cccccc"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<g
id="g1449-7"
clip-path="url(#clipPath1455-2)"
transform="matrix(2,0,0,2,365.12501,301.09579)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<path
id="path1442-8"
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
d="m 91.281258,2.6458313 a 3.96875,3.96875 0 0 1 -3.96875,3.96875 3.96875,3.96875 0 0 1 -3.96875,-3.96875 3.96875,3.96875 0 0 1 3.96875,-3.96875 3.96875,3.96875 0 0 1 3.96875,3.96875 z m -1.322917,0 A 2.6458333,2.6458333 0 0 1 87.312508,5.2916646 2.6458333,2.6458333 0 0 1 84.666674,2.6458313 2.6458333,2.6458333 0 0 1 87.312508,-1.9073486e-6 2.6458333,2.6458333 0 0 1 89.958341,2.6458313 Z m -1.322917,0 A 1.3229166,1.3229166 0 0 1 87.312508,3.968748 1.3229166,1.3229166 0 0 1 85.989591,2.6458313 1.3229166,1.3229166 0 0 1 87.312508,1.3229147 1.3229166,1.3229166 0 0 1 88.635424,2.6458313 Z" />
</g>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:63.5;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="171.97917"
y="-10.583335"
id="text1462-4"
transform="translate(367.7715,380.99995)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="171.97917"
y="-10.583335"><tspan
style="stroke-width:0.3">анализ изменений </tspan></tspan><tspan
x="171.97917"
y="-2.6458356"><tspan
style="stroke-width:0.3">в задаче</tspan></tspan></text>
<path
style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
d="m 529.16667,362.47912 5.29167,10.58333 -5.29167,10.58334 h 76.72921 l 5.2916,-10.58334 -5.2916,-10.58333 z"
id="path1464-5"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<g
id="g1449-6-0"
clip-path="url(#clipPath1455-6-2)"
transform="matrix(2,0,0,2,431.27084,354.54162)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<path
id="path1442-1-3"
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
d="m 91.281258,2.6458313 a 3.96875,3.96875 0 0 1 -3.96875,3.96875 3.96875,3.96875 0 0 1 -3.96875,-3.96875 3.96875,3.96875 0 0 1 3.96875,-3.96875 3.96875,3.96875 0 0 1 3.96875,3.96875 z m -1.322917,0 A 2.6458333,2.6458333 0 0 1 87.312508,5.2916646 2.6458333,2.6458333 0 0 1 84.666674,2.6458313 2.6458333,2.6458333 0 0 1 87.312508,-1.9073486e-6 2.6458333,2.6458333 0 0 1 89.958341,2.6458313 Z m -1.322917,0 A 1.3229166,1.3229166 0 0 1 87.312508,3.968748 1.3229166,1.3229166 0 0 1 85.989591,2.6458313 1.3229166,1.3229166 0 0 1 87.312508,1.3229147 1.3229166,1.3229166 0 0 1 88.635424,2.6458313 Z" />
</g>
<text
xml:space="preserve"
style="font-size:3.52778px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="549.0105"
y="295.80411"
id="text1498-6"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1496-1"
x="549.0105"
y="295.80411"
style="font-size:3.52778px;stroke-width:0.3">websocket</tspan><tspan
sodipodi:role="line"
x="549.0105"
y="300.21384"
style="font-size:3.52778px;stroke-width:0.3"
id="tspan1500-0">webhook</tspan></text>
<text
xml:space="preserve"
style="font-size:3.52778px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="615.15631"
y="349.24994"
id="text1504-6"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1502-3"
x="615.15631"
y="349.24994"
style="font-size:3.52778px;stroke-width:0.3">chat bot</tspan></text>
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="537.10419"
y="214.31245"
id="text1560-5"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1558-5"
x="537.10419"
y="214.31245"
style="font-size:8.46667px;text-align:center;text-anchor:middle;stroke-width:0.3">Ядро проекта Pinkmine</tspan><tspan
sodipodi:role="line"
x="537.10419"
y="224.8958"
style="font-size:8.46667px;text-align:center;text-anchor:middle;stroke-width:0.3"
id="tspan1562-4">(redmine issue event emitter)</tspan></text>
<ellipse
style="fill:#000000;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="path1566-6"
cx="539.75"
cy="306.38745"
rx="0.52916569"
ry="0.52916664"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<ellipse
style="fill:#000000;stroke:none;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="path1566-8-5"
cx="605.89594"
cy="359.83328"
rx="0.52916569"
ry="0.52916664"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2222);stop-color:#000000;stop-opacity:1"
d="m 590.02088,267.22911 h 10.5833 v 18.52084 l -150.81249,-3e-5 0,34.39583 21.16666,0"
id="path2172"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
sodipodi:nodetypes="cccccc" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker2232);stop-color:#000000;stop-opacity:1"
d="m 616.47918,320.14578 h 10.5833 v 18.52084 H 518.58335 v 34.39583 h 10.58333"
id="path2174"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Ядро проекта Pinkmine - Redmine Issue Event Emitter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1564-7-3"
width="365.12497"
height="227.54166"
x="354.54169"
y="-285.75" />
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="486.83334"
y="-254.00002"
id="text1688"><tspan
sodipodi:role="line"
id="tspan1686"
x="486.83334"
y="-254.00002"
style="font-size:8.46667px;stroke-width:0.3">Что такое Pinkmine?</tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="762"
y="-259.29169"
id="text1696"><tspan
sodipodi:role="line"
id="tspan1694"
x="762"
y="-259.29169"
style="stroke-width:0.3">Предыстория проекта. Что это такое?</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1564-7-3-6"
width="365.12497"
height="227.54166"
x="354.54169"
y="-529.16669" />
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="751.41669"
y="-508"
id="text1720"><tspan
sodipodi:role="line"
id="tspan1718"
x="751.41669"
y="-508"
style="stroke-width:0.3">Какие проблемы есть у пользователей Redmine?</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1564-7-36"
width="365.12497"
height="227.54166"
x="354.54169"
y="-47.62505"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-align:center;text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-anchor:middle;white-space:pre;inline-size:121.708;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="537.53619"
y="222.24998"
id="text298"
transform="translate(-0.50845236,-248.70836)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="537.53619"
y="222.24998"><tspan
style="text-align:center;text-anchor:middle;stroke-width:0.3">Архитектура приложения</tspan><tspan></tspan><tspan
y="222.24998"> </tspan></tspan><tspan
x="537.53619"
y="232.83333"><tspan
style="text-align:center;text-anchor:middle;stroke-width:0.3">Pinkmine</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="150.81252"
y="190.49998"
id="text1173"><tspan
sodipodi:role="line"
id="tspan1171"
x="150.81252"
y="190.49998"
style="font-size:6.35px;stroke-width:0.3" /></text>
<rect
style="fill:#fff6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1281"
width="82.020836"
height="30.427082"
x="554.30206"
y="83.343658"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:#fff6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1285"
width="100.54166"
height="48.947918"
x="535.78125"
y="113.77066"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:#fff6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1287"
width="97.895836"
height="48.947918"
x="437.88541"
y="113.77066"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1277"
width="82.020836"
height="23.8125"
x="554.30206"
y="-2.6460109"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1279"
width="82.020836"
height="26.458332"
x="554.30206"
y="21.166504"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1283"
width="82.020836"
height="35.71875"
x="554.30206"
y="47.624908"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1273"
width="52.916664"
height="29.104166"
x="437.88541"
y="84.666504"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
style="fill:#ffd5d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1165"
width="116.41666"
height="87.3125"
x="437.88541"
y="-2.6459498"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:73.0409;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="155.37057"
y="171.87299"
id="text302"
transform="translate(306.32682,-140.12309)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="155.37057"
y="171.87299"><tspan
style="font-size:6.35px;stroke-width:0.3">Ядро </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">redmine issue </tspan></tspan><tspan
x="155.37057"
y="179.81049"><tspan
style="font-size:6.35px;stroke-width:0.3">event emitter</tspan></tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect304"
width="84.666664"
height="21.16667"
x="453.76041"
y="23.812408"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="453.76041"
y="13.229051"
id="text1169"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1167"
x="453.76041"
y="13.229051"
style="font-size:8.46667px;stroke-width:0.3">NestJS framework</tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:87.3125;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="142.87502"
y="198.43748"
id="text1177"
transform="translate(310.88541,-140.22926)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="142.87502"
y="198.43748"><tspan
style="font-size:4.23333px;stroke-width:0.3">сервисы, контроллеры, чтение </tspan></tspan><tspan
x="142.87502"
y="203.72915"><tspan
style="font-size:4.23333px;stroke-width:0.3">конфигурационных файлов, доступ к </tspan></tspan><tspan
x="142.87502"
y="209.0208"><tspan
style="font-size:4.23333px;stroke-width:0.3">хранилищу данных </tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">CouchDB </tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">и многое </tspan></tspan><tspan
x="142.87502"
y="214.31246"><tspan
style="font-size:4.23333px;stroke-width:0.3">другое</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="449.17334"
y="101.1619"
id="text1181"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1179"
x="449.17334"
y="101.1619"
style="font-size:6.35px;stroke-width:0.3">http api</tspan></text>
<rect
style="fill:#ffe6d5;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="rect1275"
width="63.5"
height="29.104166"
x="490.80209"
y="84.666504"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="501.38541"
y="97.895752"
id="text1185"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1183"
x="501.38541"
y="97.895752"
style="stroke-width:0.3">webhook-и,</tspan><tspan
sodipodi:role="line"
x="501.38541"
y="105.83325"
style="stroke-width:0.3"
id="tspan1187">websocket-ы</tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="568.85419"
y="6.6145334"
id="text1191"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
x="568.85419"
y="6.6145334"
style="stroke-width:0.3"
id="tspan1197">telegram-бот</tspan></text>
<g
id="g1562"
transform="translate(-1.3229377,3.3678385e-5)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:63.5;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="137.58334"
y="288.39581"
id="text1201"
transform="translate(432.59313,-195.79173)"><tspan
x="137.58334"
y="288.39581"><tspan
style="stroke-width:0.3">frontend </tspan><tspan
style="stroke-width:0.3">react</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:58.2083;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="127.00002"
y="322.79166"
id="text1207"
transform="translate(443.17711,-222.25008)"><tspan
x="127.00002"
y="322.79166"><tspan
style="font-size:4.23333px;stroke-width:0.3">dashboard-</tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">ы на любых </tspan></tspan><tspan
x="127.00002"
y="328.0833"><tspan
style="font-size:4.23333px;stroke-width:0.3">react </tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">компонентах</tspan></tspan></text>
</g>
<g
id="g1582"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<text
xml:space="preserve"
style="font-size:4.23333px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:76.7298;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="66.145836"
y="272.52081"
id="text1217"
transform="translate(380.99936,-125.67711)"><tspan
x="66.145836"
y="272.52081"><tspan
style="font-size:4.23333px;stroke-width:0.3">cli </tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">скрипты (</tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">wget, curl</tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">),
</tspan></tspan><tspan
x="66.145836"
y="277.81246"><tspan
style="font-size:4.23333px;stroke-width:0.3">использование других языков </tspan></tspan><tspan
x="66.145836"
y="283.10412"><tspan
style="font-size:4.23333px;stroke-width:0.3">программирования (</tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">python</tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">)</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:87.3125;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="50.270836"
y="296.33331"
id="text1221"
transform="translate(396.87436,-173.30211)"><tspan
x="50.270836"
y="296.33331"><tspan
style="stroke-width:0.3">Автоматизация и </tspan></tspan><tspan
x="50.270836"
y="304.27082"><tspan
style="stroke-width:0.3">интеграция сторонними </tspan></tspan><tspan
x="50.270836"
y="312.20832"><tspan
style="stroke-width:0.3">средствами</tspan></tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:89.9583;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="232.83334"
y="285.75"
id="text1225"
transform="translate(313.30115,-156.10422)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="232.83334"
y="285.75"><tspan
style="stroke-width:0.3">Автоматизация и </tspan></tspan><tspan
x="232.83334"
y="293.68751"><tspan
style="stroke-width:0.3">интеграция </tspan><tspan
style="stroke-width:0.3">с помощью </tspan></tspan><tspan
x="232.83334"
y="301.62501"><tspan
style="stroke-width:0.3">lowcode </tspan><tspan
style="stroke-width:0.3">платформы </tspan><tspan
style="stroke-width:0.3">n8n</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="568.85419"
y="14.552033"
id="text1239"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1237"
x="568.85419"
y="14.552033"
style="font-size:4.23333px;stroke-width:0.3">другие чат-боты</tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="568.85419"
y="56.885368"
id="text1243"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1241"
x="568.85419"
y="56.885368"
style="stroke-width:0.3">frontend</tspan><tspan
sodipodi:role="line"
x="568.85419"
y="64.822868"
style="stroke-width:0.3"
id="tspan1245">server-side</tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:58.2083;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="264.58334"
y="235.47916"
id="text1249"
transform="translate(304.2703,-162.71878)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="264.58334"
y="235.47916"><tspan
style="font-size:4.23333px;stroke-width:0.3">frontend </tspan><tspan
style="font-size:4.23333px;stroke-width:0.3">на простой </tspan></tspan><tspan
x="264.58334"
y="240.77082"><tspan
style="font-size:4.23333px;stroke-width:0.3">шаблонизации</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="568.85419"
y="30.427032"
id="text1253"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1251"
x="568.85419"
y="30.427032"
style="stroke-width:0.3">cron-task-и</tspan></text>
<text
xml:space="preserve"
style="font-size:4.23333px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:58.2083;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="259.29169"
y="173.30202"
id="text1257"
transform="translate(309.56316,-136.2604)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Архитектура приложения Pinkmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="259.29169"
y="173.30202"><tspan
style="stroke-width:0.3">Планировщик встроенный </tspan></tspan><tspan
x="259.29169"
y="178.59368"><tspan
style="stroke-width:0.3">в </tspan><tspan
style="stroke-width:0.3">NestJS</tspan></tspan></text>
<rect
style="fill:#ffffff;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none"
id="rect1564-7-7"
width="365.12497"
height="227.54166"
x="354.54169"
y="428.62494"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="412.75003"
y="449.7916"
id="text1606"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1604"
x="412.75003"
y="449.7916"
style="stroke-width:0.3">Стратегии подписки на обновления задач из Redmine</tspan></text>
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="381.56854"
y="481.5416"
id="text1610"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1608"
x="381.56854"
y="481.5416"
style="stroke-width:0.3">По email</tspan></text>
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="556.19348"
y="481.5416"
id="text1614"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1612"
x="556.19348"
y="481.5416"
style="stroke-width:0.3">Через cron-таски</tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:148.167;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="391.58334"
y="513.29156"
id="text1626"
transform="translate(-10.015468,-15.874971)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="391.58334"
y="513.29156"><tspan
style="font-size:6.35px;stroke-width:0.3">Redmine </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">отправит уведомления об </tspan></tspan><tspan
x="391.58334"
y="521.2291"><tspan
style="font-size:6.35px;stroke-width:0.3">изменениях в </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">email</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:148.167;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="381.00003"
y="555.62488"
id="text1630"
transform="translate(0.56851615,-34.395784)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="381.00003"
y="555.62488"><tspan
style="font-size:6.35px;stroke-width:0.3">Pinkmine </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">прочитает письмо, определит </tspan></tspan><tspan
x="381.00003"
y="563.56235"><tspan
style="font-size:6.35px;stroke-width:0.3">номер задачи, положит в очередь в свой </tspan></tspan><tspan
x="381.00003"
y="571.49985"><tspan
style="font-size:6.35px;stroke-width:0.3">основной процесс</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:148.167;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="381.00003"
y="608.5415"
id="text1644"
transform="translate(0.56851615,-52.916576)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="381.00003"
y="608.5415"><tspan
style="font-size:6.35px;stroke-width:0.3">Эта стратегия позволяет оперативно </tspan></tspan><tspan
x="381.00003"
y="616.47898"><tspan
style="font-size:6.35px;stroke-width:0.3">подгружать данные в </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">Pinkmine</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:137.583;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="555.625"
y="507.99994"
id="text1648"
transform="translate(0.56851557,-10.583345)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="555.625"
y="507.99994"><tspan
style="font-size:6.35px;stroke-width:0.3">Pinkmine </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">с помощью </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">cron-task-</tspan><tspan
style="font-size:6.35px;stroke-width:0.3">и </tspan></tspan><tspan
x="555.625"
y="515.93744"><tspan
style="font-size:6.35px;stroke-width:0.3">запустит процедуру определения </tspan></tspan><tspan
x="555.625"
y="523.87498"><tspan
style="font-size:6.35px;stroke-width:0.3">обновлений в </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">redmine</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:137.583;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="555.625"
y="571.49988"
id="text1652"
transform="translate(0.56851557,-42.333284)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="555.625"
y="571.49988"><tspan
style="font-size:6.35px;stroke-width:0.3">Pinkmine </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">загрузит из </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">redmine csv </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">из </tspan></tspan><tspan
x="555.625"
y="579.43735"><tspan
style="font-size:6.35px;stroke-width:0.3">сохранённых запросов и корневые </tspan></tspan><tspan
x="555.625"
y="587.37485"><tspan
style="font-size:6.35px;stroke-width:0.3">задачи со всеми подзадачами</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:137.583;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="555.625"
y="634.99988"
id="text1656"
transform="translate(0.56851557,-74.083284)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="555.625"
y="634.99988"><tspan
style="font-size:6.35px;stroke-width:0.3">Pinkmine </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">определит какие из задач </tspan></tspan><tspan
x="555.625"
y="642.93735"><tspan
style="font-size:6.35px;stroke-width:0.3">пора обновить по полю &quot;Обновлено&quot; и </tspan></tspan><tspan
x="555.625"
y="650.87485"><tspan
style="font-size:6.35px;stroke-width:0.3">положит в очередь в свой основной </tspan></tspan><tspan
x="555.625"
y="658.81235"><tspan
style="font-size:6.35px;stroke-width:0.3">процесс</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:137.583;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="555.625"
y="608.5415"
id="text1664"
transform="translate(0.56849969,-5.2916623)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="555.625"
y="608.5415"><tspan
style="font-size:6.35px;stroke-width:0.3">Эта стратегия позволяет догружать </tspan></tspan><tspan
x="555.625"
y="616.47898"><tspan
style="font-size:6.35px;stroke-width:0.3">данные, которые не пришли по </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">email </tspan></tspan><tspan
x="555.625"
y="624.41648"><tspan
style="font-size:6.35px;stroke-width:0.3">рассылке: закрытые задачи, </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">shady-</tspan></tspan><tspan
x="555.625"
y="632.35398"><tspan
style="font-size:6.35px;stroke-width:0.3">mode, </tspan><tspan
style="font-size:6.35px;stroke-width:0.3">изменение структуры дерева </tspan></tspan><tspan
x="555.625"
y="640.29148"><tspan
style="font-size:6.35px;stroke-width:0.3">при смене привязки к родительской </tspan></tspan><tspan
x="555.625"
y="648.22898"><tspan
style="font-size:6.35px;stroke-width:0.3">задаче</tspan></tspan></text>
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="381.56854"
y="592.6665"
id="text1668"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
sodipodi:role="line"
id="tspan1666"
x="381.56854"
y="592.6665"
style="stroke-width:0.3">Для развития</tspan></text>
<text
xml:space="preserve"
style="font-size:6.35px;line-height:normal;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';text-decoration:none;text-decoration-line:none;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;white-space:pre;inline-size:148.167;fill:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
x="381.00003"
y="616.479"
id="text1672"
transform="translate(0.56851615,-7.9374099)"
inkscape:export-filename="/home/pavel/obsidian/Личные/Проекты/Монолитный Redmine Event Emitter/Документация/_resources/Слайды для презентации/Стратегии подписки на обновления задач из Redmine.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><tspan
x="381.00003"
y="616.479"><tspan
style="stroke-width:0.3">* Прямой доступ к БД </tspan><tspan
style="stroke-width:0.3">redmine
</tspan></tspan><tspan
x="381.00003"
y="624.41648"><tspan
style="stroke-width:0.3">* </tspan><tspan
style="stroke-width:0.3">Реализация </tspan><tspan
style="stroke-width:0.3">webhook-</tspan><tspan
style="stroke-width:0.3">ов на стороне </tspan></tspan><tspan
x="381.00003"
y="632.35398"><tspan
style="stroke-width:0.3">redmine</tspan></tspan></text>
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="m 539.75002,309.56242 5.29167,10.58334 -5.29167,10.58333 -68.79167,0 5.29167,-10.58334 -5.29167,-10.58333 h 68.79167"
id="path570"
sodipodi:nodetypes="ccccccc" />
</g>
</svg>