Остання активність 2 months ago

teror's Avatar teror ревизій цього gist 5 months ago. До ревизії

1 file changed, 1537 insertions

db-migration.excalidraw(файл створено)

@@ -0,0 +1,1537 @@
1 + {
2 + "type": "excalidraw",
3 + "version": 2,
4 + "source": "https://excalidraw.com",
5 + "elements": [
6 + {
7 + "id": "start",
8 + "type": "rectangle",
9 + "x": 80,
10 + "y": 60,
11 + "width": 220,
12 + "height": 60,
13 + "angle": 0,
14 + "strokeColor": "#1e1e1e",
15 + "backgroundColor": "#ffffff",
16 + "fillStyle": "solid",
17 + "strokeWidth": 2,
18 + "strokeStyle": "solid",
19 + "roughness": 1,
20 + "opacity": 100,
21 + "groupIds": [],
22 + "seed": 101,
23 + "version": 2,
24 + "versionNonce": 1361229189,
25 + "isDeleted": false,
26 + "boundElements": [],
27 + "updated": 1771155648421,
28 + "link": null,
29 + "locked": false,
30 + "index": "a0",
31 + "frameId": null,
32 + "roundness": null
33 + },
34 + {
35 + "id": "start_text",
36 + "type": "text",
37 + "x": 105,
38 + "y": 77,
39 + "width": 170,
40 + "height": 25,
41 + "angle": 0,
42 + "strokeColor": "#1e1e1e",
43 + "backgroundColor": "transparent",
44 + "fillStyle": "solid",
45 + "strokeWidth": 1,
46 + "strokeStyle": "solid",
47 + "roughness": 0,
48 + "opacity": 100,
49 + "groupIds": [],
50 + "seed": 102,
51 + "version": 2,
52 + "versionNonce": 1337004363,
53 + "isDeleted": false,
54 + "boundElements": [],
55 + "updated": 1771155648421,
56 + "link": null,
57 + "locked": false,
58 + "text": "容器启动: docker-entrypoint.sh",
59 + "fontSize": 14,
60 + "fontFamily": 1,
61 + "textAlign": "center",
62 + "verticalAlign": "middle",
63 + "baseline": 20,
64 + "index": "a1",
65 + "frameId": null,
66 + "roundness": null,
67 + "containerId": null,
68 + "originalText": "容器启动: docker-entrypoint.sh",
69 + "autoResize": true,
70 + "lineHeight": 1.7857142857142858
71 + },
72 + {
73 + "id": "migrate",
74 + "type": "rectangle",
75 + "x": 80,
76 + "y": 160,
77 + "width": 220,
78 + "height": 60,
79 + "angle": 0,
80 + "strokeColor": "#1e1e1e",
81 + "backgroundColor": "#ffffff",
82 + "fillStyle": "solid",
83 + "strokeWidth": 2,
84 + "strokeStyle": "solid",
85 + "roughness": 1,
86 + "opacity": 100,
87 + "groupIds": [],
88 + "seed": 103,
89 + "version": 2,
90 + "versionNonce": 211533029,
91 + "isDeleted": false,
92 + "boundElements": [],
93 + "updated": 1771155648421,
94 + "link": null,
95 + "locked": false,
96 + "index": "a2",
97 + "frameId": null,
98 + "roundness": null
99 + },
100 + {
101 + "id": "migrate_text",
102 + "type": "text",
103 + "x": 128,
104 + "y": 177,
105 + "width": 124,
106 + "height": 25,
107 + "angle": 0,
108 + "strokeColor": "#1e1e1e",
109 + "backgroundColor": "transparent",
110 + "fillStyle": "solid",
111 + "strokeWidth": 1,
112 + "strokeStyle": "solid",
113 + "roughness": 0,
114 + "opacity": 100,
115 + "groupIds": [],
116 + "seed": 104,
117 + "version": 2,
118 + "versionNonce": 1773580267,
119 + "isDeleted": false,
120 + "boundElements": [],
121 + "updated": 1771155648421,
122 + "link": null,
123 + "locked": false,
124 + "text": "执行: db_migrate.py",
125 + "fontSize": 14,
126 + "fontFamily": 1,
127 + "textAlign": "center",
128 + "verticalAlign": "middle",
129 + "baseline": 20,
130 + "index": "a3",
131 + "frameId": null,
132 + "roundness": null,
133 + "containerId": null,
134 + "originalText": "执行: db_migrate.py",
135 + "autoResize": true,
136 + "lineHeight": 1.7857142857142858
137 + },
138 + {
139 + "id": "connect",
140 + "type": "rectangle",
141 + "x": 360,
142 + "y": 160,
143 + "width": 240,
144 + "height": 70,
145 + "angle": 0,
146 + "strokeColor": "#1e1e1e",
147 + "backgroundColor": "#ffffff",
148 + "fillStyle": "solid",
149 + "strokeWidth": 2,
150 + "strokeStyle": "solid",
151 + "roughness": 1,
152 + "opacity": 100,
153 + "groupIds": [],
154 + "seed": 105,
155 + "version": 2,
156 + "versionNonce": 909957189,
157 + "isDeleted": false,
158 + "boundElements": [],
159 + "updated": 1771155648421,
160 + "link": null,
161 + "locked": false,
162 + "index": "a4",
163 + "frameId": null,
164 + "roundness": null
165 + },
166 + {
167 + "id": "connect_text",
168 + "type": "text",
169 + "x": 372,
170 + "y": 175,
171 + "width": 216,
172 + "height": 40,
173 + "angle": 0,
174 + "strokeColor": "#1e1e1e",
175 + "backgroundColor": "transparent",
176 + "fillStyle": "solid",
177 + "strokeWidth": 1,
178 + "strokeStyle": "solid",
179 + "roughness": 0,
180 + "opacity": 100,
181 + "groupIds": [],
182 + "seed": 106,
183 + "version": 2,
184 + "versionNonce": 2060417675,
185 + "isDeleted": false,
186 + "boundElements": [],
187 + "updated": 1771155648421,
188 + "link": null,
189 + "locked": false,
190 + "text": "读取 .env / 环境变量\n获取 DATABASE_URL 连接数据库",
191 + "fontSize": 14,
192 + "fontFamily": 1,
193 + "textAlign": "center",
194 + "verticalAlign": "middle",
195 + "baseline": 34,
196 + "index": "a5",
197 + "frameId": null,
198 + "roundness": null,
199 + "containerId": null,
200 + "originalText": "读取 .env / 环境变量\n获取 DATABASE_URL 连接数据库",
201 + "autoResize": true,
202 + "lineHeight": 1.4285714285714286
203 + },
204 + {
205 + "id": "history_table",
206 + "type": "rectangle",
207 + "x": 360,
208 + "y": 260,
209 + "width": 240,
210 + "height": 60,
211 + "angle": 0,
212 + "strokeColor": "#1e1e1e",
213 + "backgroundColor": "#ffffff",
214 + "fillStyle": "solid",
215 + "strokeWidth": 2,
216 + "strokeStyle": "solid",
217 + "roughness": 1,
218 + "opacity": 100,
219 + "groupIds": [],
220 + "seed": 107,
221 + "version": 2,
222 + "versionNonce": 2011400101,
223 + "isDeleted": false,
224 + "boundElements": [],
225 + "updated": 1771155648421,
226 + "link": null,
227 + "locked": false,
228 + "index": "a6",
229 + "frameId": null,
230 + "roundness": null
231 + },
232 + {
233 + "id": "history_table_text",
234 + "type": "text",
235 + "x": 374,
236 + "y": 277,
237 + "width": 212,
238 + "height": 25,
239 + "angle": 0,
240 + "strokeColor": "#1e1e1e",
241 + "backgroundColor": "transparent",
242 + "fillStyle": "solid",
243 + "strokeWidth": 1,
244 + "strokeStyle": "solid",
245 + "roughness": 0,
246 + "opacity": 100,
247 + "groupIds": [],
248 + "seed": 108,
249 + "version": 2,
250 + "versionNonce": 263581995,
251 + "isDeleted": false,
252 + "boundElements": [],
253 + "updated": 1771155648421,
254 + "link": null,
255 + "locked": false,
256 + "text": "创建 migration_history 表(若不存在)",
257 + "fontSize": 14,
258 + "fontFamily": 1,
259 + "textAlign": "center",
260 + "verticalAlign": "middle",
261 + "baseline": 20,
262 + "index": "a7",
263 + "frameId": null,
264 + "roundness": null,
265 + "containerId": null,
266 + "originalText": "创建 migration_history 表(若不存在)",
267 + "autoResize": true,
268 + "lineHeight": 1.7857142857142858
269 + },
270 + {
271 + "id": "loop",
272 + "type": "rectangle",
273 + "x": 360,
274 + "y": 360,
275 + "width": 240,
276 + "height": 80,
277 + "angle": 0,
278 + "strokeColor": "#1e1e1e",
279 + "backgroundColor": "#ffffff",
280 + "fillStyle": "solid",
281 + "strokeWidth": 2,
282 + "strokeStyle": "solid",
283 + "roughness": 1,
284 + "opacity": 100,
285 + "groupIds": [],
286 + "seed": 109,
287 + "version": 2,
288 + "versionNonce": 1673349893,
289 + "isDeleted": false,
290 + "boundElements": [],
291 + "updated": 1771155648421,
292 + "link": null,
293 + "locked": false,
294 + "index": "a8",
295 + "frameId": null,
296 + "roundness": null
297 + },
298 + {
299 + "id": "loop_text",
300 + "type": "text",
301 + "x": 378,
302 + "y": 374,
303 + "width": 204,
304 + "height": 50,
305 + "angle": 0,
306 + "strokeColor": "#1e1e1e",
307 + "backgroundColor": "transparent",
308 + "fillStyle": "solid",
309 + "strokeWidth": 1,
310 + "strokeStyle": "solid",
311 + "roughness": 0,
312 + "opacity": 100,
313 + "groupIds": [],
314 + "seed": 110,
315 + "version": 2,
316 + "versionNonce": 970232779,
317 + "isDeleted": false,
318 + "boundElements": [],
319 + "updated": 1771155648421,
320 + "link": null,
321 + "locked": false,
322 + "text": "遍历 migration_history 列表\n(每个 SQL 文件)",
323 + "fontSize": 14,
324 + "fontFamily": 1,
325 + "textAlign": "center",
326 + "verticalAlign": "middle",
327 + "baseline": 34,
328 + "index": "a9",
329 + "frameId": null,
330 + "roundness": null,
331 + "containerId": null,
332 + "originalText": "遍历 migration_history 列表\n(每个 SQL 文件)",
333 + "autoResize": true,
334 + "lineHeight": 1.7857142857142858
335 + },
336 + {
337 + "id": "decision",
338 + "type": "diamond",
339 + "x": 360,
340 + "y": 480,
341 + "width": 240,
342 + "height": 120,
343 + "angle": 0,
344 + "strokeColor": "#1e1e1e",
345 + "backgroundColor": "#ffffff",
346 + "fillStyle": "solid",
347 + "strokeWidth": 2,
348 + "strokeStyle": "solid",
349 + "roughness": 1,
350 + "opacity": 100,
351 + "groupIds": [],
352 + "seed": 111,
353 + "version": 2,
354 + "versionNonce": 1783079525,
355 + "isDeleted": false,
356 + "boundElements": [],
357 + "updated": 1771155648421,
358 + "link": null,
359 + "locked": false,
360 + "index": "aA",
361 + "frameId": null,
362 + "roundness": null
363 + },
364 + {
365 + "id": "decision_text",
366 + "type": "text",
367 + "x": 394,
368 + "y": 515,
369 + "width": 172,
370 + "height": 50,
371 + "angle": 0,
372 + "strokeColor": "#1e1e1e",
373 + "backgroundColor": "transparent",
374 + "fillStyle": "solid",
375 + "strokeWidth": 1,
376 + "strokeStyle": "solid",
377 + "roughness": 0,
378 + "opacity": 100,
379 + "groupIds": [],
380 + "seed": 112,
381 + "version": 2,
382 + "versionNonce": 2034623083,
383 + "isDeleted": false,
384 + "boundElements": [],
385 + "updated": 1771155648421,
386 + "link": null,
387 + "locked": false,
388 + "text": "SQL 文件存在且\n未执行过?",
389 + "fontSize": 14,
390 + "fontFamily": 1,
391 + "textAlign": "center",
392 + "verticalAlign": "middle",
393 + "baseline": 34,
394 + "index": "aB",
395 + "frameId": null,
396 + "roundness": null,
397 + "containerId": null,
398 + "originalText": "SQL 文件存在且\n未执行过?",
399 + "autoResize": true,
400 + "lineHeight": 1.7857142857142858
401 + },
402 + {
403 + "id": "execute",
404 + "type": "rectangle",
405 + "x": 360,
406 + "y": 650,
407 + "width": 240,
408 + "height": 70,
409 + "angle": 0,
410 + "strokeColor": "#1e1e1e",
411 + "backgroundColor": "#ffffff",
412 + "fillStyle": "solid",
413 + "strokeWidth": 2,
414 + "strokeStyle": "solid",
415 + "roughness": 1,
416 + "opacity": 100,
417 + "groupIds": [],
418 + "seed": 113,
419 + "version": 2,
420 + "versionNonce": 273681861,
421 + "isDeleted": false,
422 + "boundElements": [],
423 + "updated": 1771155648421,
424 + "link": null,
425 + "locked": false,
426 + "index": "aC",
427 + "frameId": null,
428 + "roundness": null
429 + },
430 + {
431 + "id": "execute_text",
432 + "type": "text",
433 + "x": 376,
434 + "y": 666,
435 + "width": 208,
436 + "height": 40,
437 + "angle": 0,
438 + "strokeColor": "#1e1e1e",
439 + "backgroundColor": "transparent",
440 + "fillStyle": "solid",
441 + "strokeWidth": 1,
442 + "strokeStyle": "solid",
443 + "roughness": 0,
444 + "opacity": 100,
445 + "groupIds": [],
446 + "seed": 114,
447 + "version": 2,
448 + "versionNonce": 1725193483,
449 + "isDeleted": false,
450 + "boundElements": [],
451 + "updated": 1771155648421,
452 + "link": null,
453 + "locked": false,
454 + "text": "执行 SQL\n写入 migration_history 记录",
455 + "fontSize": 14,
456 + "fontFamily": 1,
457 + "textAlign": "center",
458 + "verticalAlign": "middle",
459 + "baseline": 34,
460 + "index": "aD",
461 + "frameId": null,
462 + "roundness": null,
463 + "containerId": null,
464 + "originalText": "执行 SQL\n写入 migration_history 记录",
465 + "autoResize": true,
466 + "lineHeight": 1.4285714285714286
467 + },
468 + {
469 + "id": "skip",
470 + "type": "rectangle",
471 + "x": 660,
472 + "y": 500,
473 + "width": 200,
474 + "height": 60,
475 + "angle": 0,
476 + "strokeColor": "#1e1e1e",
477 + "backgroundColor": "#ffffff",
478 + "fillStyle": "solid",
479 + "strokeWidth": 2,
480 + "strokeStyle": "solid",
481 + "roughness": 1,
482 + "opacity": 100,
483 + "groupIds": [],
484 + "seed": 115,
485 + "version": 2,
486 + "versionNonce": 1693715749,
487 + "isDeleted": false,
488 + "boundElements": [],
489 + "updated": 1771155648421,
490 + "link": null,
491 + "locked": false,
492 + "index": "aE",
493 + "frameId": null,
494 + "roundness": null
495 + },
496 + {
497 + "id": "skip_text",
498 + "type": "text",
499 + "x": 682,
500 + "y": 517,
501 + "width": 156,
502 + "height": 25,
503 + "angle": 0,
504 + "strokeColor": "#1e1e1e",
505 + "backgroundColor": "transparent",
506 + "fillStyle": "solid",
507 + "strokeWidth": 1,
508 + "strokeStyle": "solid",
509 + "roughness": 0,
510 + "opacity": 100,
511 + "groupIds": [],
512 + "seed": 116,
513 + "version": 2,
514 + "versionNonce": 502956971,
515 + "isDeleted": false,
516 + "boundElements": [],
517 + "updated": 1771155648421,
518 + "link": null,
519 + "locked": false,
520 + "text": "跳过该迁移并继续",
521 + "fontSize": 14,
522 + "fontFamily": 1,
523 + "textAlign": "center",
524 + "verticalAlign": "middle",
525 + "baseline": 20,
526 + "index": "aF",
527 + "frameId": null,
528 + "roundness": null,
529 + "containerId": null,
530 + "originalText": "跳过该迁移并继续",
531 + "autoResize": true,
532 + "lineHeight": 1.7857142857142858
533 + },
534 + {
535 + "id": "close",
536 + "type": "rectangle",
537 + "x": 360,
538 + "y": 760,
539 + "width": 240,
540 + "height": 60,
541 + "angle": 0,
542 + "strokeColor": "#1e1e1e",
543 + "backgroundColor": "#ffffff",
544 + "fillStyle": "solid",
545 + "strokeWidth": 2,
546 + "strokeStyle": "solid",
547 + "roughness": 1,
548 + "opacity": 100,
549 + "groupIds": [],
550 + "seed": 117,
551 + "version": 2,
552 + "versionNonce": 933306501,
553 + "isDeleted": false,
554 + "boundElements": [],
555 + "updated": 1771155648421,
556 + "link": null,
557 + "locked": false,
558 + "index": "aG",
559 + "frameId": null,
560 + "roundness": null
561 + },
562 + {
563 + "id": "close_text",
564 + "type": "text",
565 + "x": 394,
566 + "y": 777,
567 + "width": 172,
568 + "height": 25,
569 + "angle": 0,
570 + "strokeColor": "#1e1e1e",
571 + "backgroundColor": "transparent",
572 + "fillStyle": "solid",
573 + "strokeWidth": 1,
574 + "strokeStyle": "solid",
575 + "roughness": 0,
576 + "opacity": 100,
577 + "groupIds": [],
578 + "seed": 118,
579 + "version": 2,
580 + "versionNonce": 1726142027,
581 + "isDeleted": false,
582 + "boundElements": [],
583 + "updated": 1771155648421,
584 + "link": null,
585 + "locked": false,
586 + "text": "关闭连接, 迁移结束",
587 + "fontSize": 14,
588 + "fontFamily": 1,
589 + "textAlign": "center",
590 + "verticalAlign": "middle",
591 + "baseline": 20,
592 + "index": "aH",
593 + "frameId": null,
594 + "roundness": null,
595 + "containerId": null,
596 + "originalText": "关闭连接, 迁移结束",
597 + "autoResize": true,
598 + "lineHeight": 1.7857142857142858
599 + },
600 + {
601 + "id": "server",
602 + "type": "rectangle",
603 + "x": 80,
604 + "y": 260,
605 + "width": 220,
606 + "height": 60,
607 + "angle": 0,
608 + "strokeColor": "#1e1e1e",
609 + "backgroundColor": "#ffffff",
610 + "fillStyle": "solid",
611 + "strokeWidth": 2,
612 + "strokeStyle": "solid",
613 + "roughness": 1,
614 + "opacity": 100,
615 + "groupIds": [],
616 + "seed": 119,
617 + "version": 2,
618 + "versionNonce": 236242917,
619 + "isDeleted": false,
620 + "boundElements": [],
621 + "updated": 1771155648421,
622 + "link": null,
623 + "locked": false,
624 + "index": "aI",
625 + "frameId": null,
626 + "roundness": null
627 + },
628 + {
629 + "id": "server_text",
630 + "type": "text",
631 + "x": 120,
632 + "y": 277,
633 + "width": 140,
634 + "height": 25,
635 + "angle": 0,
636 + "strokeColor": "#1e1e1e",
637 + "backgroundColor": "transparent",
638 + "fillStyle": "solid",
639 + "strokeWidth": 1,
640 + "strokeStyle": "solid",
641 + "roughness": 0,
642 + "opacity": 100,
643 + "groupIds": [],
644 + "seed": 120,
645 + "version": 2,
646 + "versionNonce": 543675627,
647 + "isDeleted": false,
648 + "boundElements": [],
649 + "updated": 1771155648421,
650 + "link": null,
651 + "locked": false,
652 + "text": "启动: server.py",
653 + "fontSize": 14,
654 + "fontFamily": 1,
655 + "textAlign": "center",
656 + "verticalAlign": "middle",
657 + "baseline": 20,
658 + "index": "aJ",
659 + "frameId": null,
660 + "roundness": null,
661 + "containerId": null,
662 + "originalText": "启动: server.py",
663 + "autoResize": true,
664 + "lineHeight": 1.7857142857142858
665 + },
666 + {
667 + "id": "arrow1",
668 + "type": "arrow",
669 + "x": 190,
670 + "y": 120,
671 + "width": 0,
672 + "height": 40,
673 + "angle": 0,
674 + "strokeColor": "#1e1e1e",
675 + "backgroundColor": "transparent",
676 + "fillStyle": "solid",
677 + "strokeWidth": 2,
678 + "strokeStyle": "solid",
679 + "roughness": 1,
680 + "opacity": 100,
681 + "groupIds": [],
682 + "seed": 201,
683 + "version": 2,
684 + "versionNonce": 1516012357,
685 + "isDeleted": false,
686 + "boundElements": [],
687 + "updated": 1771155648421,
688 + "link": null,
689 + "locked": false,
690 + "points": [
691 + [
692 + 0,
693 + 0
694 + ],
695 + [
696 + 0,
697 + 40
698 + ]
699 + ],
700 + "lastCommittedPoint": [
701 + 0,
702 + 40
703 + ],
704 + "startBinding": null,
705 + "endBinding": null,
706 + "startArrowhead": null,
707 + "endArrowhead": "triangle",
708 + "index": "aK",
709 + "frameId": null,
710 + "roundness": null
711 + },
712 + {
713 + "id": "arrow2",
714 + "type": "arrow",
715 + "x": 300,
716 + "y": 190,
717 + "width": 60,
718 + "height": 0,
719 + "angle": 0,
720 + "strokeColor": "#1e1e1e",
721 + "backgroundColor": "transparent",
722 + "fillStyle": "solid",
723 + "strokeWidth": 2,
724 + "strokeStyle": "solid",
725 + "roughness": 1,
726 + "opacity": 100,
727 + "groupIds": [],
728 + "seed": 202,
729 + "version": 2,
730 + "versionNonce": 1779695499,
731 + "isDeleted": false,
732 + "boundElements": [],
733 + "updated": 1771155648421,
734 + "link": null,
735 + "locked": false,
736 + "points": [
737 + [
738 + 0,
739 + 0
740 + ],
741 + [
742 + 60,
743 + 0
744 + ]
745 + ],
746 + "lastCommittedPoint": [
747 + 60,
748 + 0
749 + ],
750 + "startBinding": null,
751 + "endBinding": null,
752 + "startArrowhead": null,
753 + "endArrowhead": "triangle",
754 + "index": "aL",
755 + "frameId": null,
756 + "roundness": null
757 + },
758 + {
759 + "id": "arrow3",
760 + "type": "arrow",
761 + "x": 480,
762 + "y": 230,
763 + "width": 0,
764 + "height": 30,
765 + "angle": 0,
766 + "strokeColor": "#1e1e1e",
767 + "backgroundColor": "transparent",
768 + "fillStyle": "solid",
769 + "strokeWidth": 2,
770 + "strokeStyle": "solid",
771 + "roughness": 1,
772 + "opacity": 100,
773 + "groupIds": [],
774 + "seed": 203,
775 + "version": 2,
776 + "versionNonce": 1893061285,
777 + "isDeleted": false,
778 + "boundElements": [],
779 + "updated": 1771155648421,
780 + "link": null,
781 + "locked": false,
782 + "points": [
783 + [
784 + 0,
785 + 0
786 + ],
787 + [
788 + 0,
789 + 30
790 + ]
791 + ],
792 + "lastCommittedPoint": [
793 + 0,
794 + 30
795 + ],
796 + "startBinding": null,
797 + "endBinding": null,
798 + "startArrowhead": null,
799 + "endArrowhead": "triangle",
800 + "index": "aM",
801 + "frameId": null,
802 + "roundness": null
803 + },
804 + {
805 + "id": "arrow4",
806 + "type": "arrow",
807 + "x": 480,
808 + "y": 320,
809 + "width": 0,
810 + "height": 40,
811 + "angle": 0,
812 + "strokeColor": "#1e1e1e",
813 + "backgroundColor": "transparent",
814 + "fillStyle": "solid",
815 + "strokeWidth": 2,
816 + "strokeStyle": "solid",
817 + "roughness": 1,
818 + "opacity": 100,
819 + "groupIds": [],
820 + "seed": 204,
821 + "version": 2,
822 + "versionNonce": 237098539,
823 + "isDeleted": false,
824 + "boundElements": [],
825 + "updated": 1771155648421,
826 + "link": null,
827 + "locked": false,
828 + "points": [
829 + [
830 + 0,
831 + 0
832 + ],
833 + [
834 + 0,
835 + 40
836 + ]
837 + ],
838 + "lastCommittedPoint": [
839 + 0,
840 + 40
841 + ],
842 + "startBinding": null,
843 + "endBinding": null,
844 + "startArrowhead": null,
845 + "endArrowhead": "triangle",
846 + "index": "aN",
847 + "frameId": null,
848 + "roundness": null
849 + },
850 + {
851 + "id": "arrow5",
852 + "type": "arrow",
853 + "x": 480,
854 + "y": 440,
855 + "width": 0,
856 + "height": 40,
857 + "angle": 0,
858 + "strokeColor": "#1e1e1e",
859 + "backgroundColor": "transparent",
860 + "fillStyle": "solid",
861 + "strokeWidth": 2,
862 + "strokeStyle": "solid",
863 + "roughness": 1,
864 + "opacity": 100,
865 + "groupIds": [],
866 + "seed": 205,
867 + "version": 2,
868 + "versionNonce": 1043215877,
869 + "isDeleted": false,
870 + "boundElements": [],
871 + "updated": 1771155648421,
872 + "link": null,
873 + "locked": false,
874 + "points": [
875 + [
876 + 0,
877 + 0
878 + ],
879 + [
880 + 0,
881 + 40
882 + ]
883 + ],
884 + "lastCommittedPoint": [
885 + 0,
886 + 40
887 + ],
888 + "startBinding": null,
889 + "endBinding": null,
890 + "startArrowhead": null,
891 + "endArrowhead": "triangle",
892 + "index": "aO",
893 + "frameId": null,
894 + "roundness": null
895 + },
896 + {
897 + "id": "arrow_yes",
898 + "type": "arrow",
899 + "x": 480,
900 + "y": 600,
901 + "width": 0,
902 + "height": 50,
903 + "angle": 0,
904 + "strokeColor": "#1e1e1e",
905 + "backgroundColor": "transparent",
906 + "fillStyle": "solid",
907 + "strokeWidth": 2,
908 + "strokeStyle": "solid",
909 + "roughness": 1,
910 + "opacity": 100,
911 + "groupIds": [],
912 + "seed": 206,
913 + "version": 2,
914 + "versionNonce": 729536715,
915 + "isDeleted": false,
916 + "boundElements": [],
917 + "updated": 1771155648421,
918 + "link": null,
919 + "locked": false,
920 + "points": [
921 + [
922 + 0,
923 + 0
924 + ],
925 + [
926 + 0,
927 + 50
928 + ]
929 + ],
930 + "lastCommittedPoint": [
931 + 0,
932 + 50
933 + ],
934 + "startBinding": null,
935 + "endBinding": null,
936 + "startArrowhead": null,
937 + "endArrowhead": "triangle",
938 + "index": "aP",
939 + "frameId": null,
940 + "roundness": null
941 + },
942 + {
943 + "id": "arrow_no",
944 + "type": "arrow",
945 + "x": 600,
946 + "y": 540,
947 + "width": 60,
948 + "height": 0,
949 + "angle": 0,
950 + "strokeColor": "#1e1e1e",
951 + "backgroundColor": "transparent",
952 + "fillStyle": "solid",
953 + "strokeWidth": 2,
954 + "strokeStyle": "solid",
955 + "roughness": 1,
956 + "opacity": 100,
957 + "groupIds": [],
958 + "seed": 207,
959 + "version": 2,
960 + "versionNonce": 1029909861,
961 + "isDeleted": false,
962 + "boundElements": [],
963 + "updated": 1771155648421,
964 + "link": null,
965 + "locked": false,
966 + "points": [
967 + [
968 + 0,
969 + 0
970 + ],
971 + [
972 + 60,
973 + 0
974 + ]
975 + ],
976 + "lastCommittedPoint": [
977 + 60,
978 + 0
979 + ],
980 + "startBinding": null,
981 + "endBinding": null,
982 + "startArrowhead": null,
983 + "endArrowhead": "triangle",
984 + "index": "aQ",
985 + "frameId": null,
986 + "roundness": null
987 + },
988 + {
989 + "id": "arrow6",
990 + "type": "arrow",
991 + "x": 480,
992 + "y": 720,
993 + "width": 0,
994 + "height": 40,
995 + "angle": 0,
996 + "strokeColor": "#1e1e1e",
997 + "backgroundColor": "transparent",
998 + "fillStyle": "solid",
999 + "strokeWidth": 2,
1000 + "strokeStyle": "solid",
1001 + "roughness": 1,
1002 + "opacity": 100,
1003 + "groupIds": [],
1004 + "seed": 208,
1005 + "version": 2,
1006 + "versionNonce": 532449131,
1007 + "isDeleted": false,
1008 + "boundElements": [],
1009 + "updated": 1771155648421,
1010 + "link": null,
1011 + "locked": false,
1012 + "points": [
1013 + [
1014 + 0,
1015 + 0
1016 + ],
1017 + [
1018 + 0,
1019 + 40
1020 + ]
1021 + ],
1022 + "lastCommittedPoint": [
1023 + 0,
1024 + 40
1025 + ],
1026 + "startBinding": null,
1027 + "endBinding": null,
1028 + "startArrowhead": null,
1029 + "endArrowhead": "triangle",
1030 + "index": "aR",
1031 + "frameId": null,
1032 + "roundness": null
1033 + },
1034 + {
1035 + "id": "arrow7",
1036 + "type": "arrow",
1037 + "x": 190,
1038 + "y": 220,
1039 + "width": 0,
1040 + "height": 40,
1041 + "angle": 0,
1042 + "strokeColor": "#1e1e1e",
1043 + "backgroundColor": "transparent",
1044 + "fillStyle": "solid",
1045 + "strokeWidth": 2,
1046 + "strokeStyle": "solid",
1047 + "roughness": 1,
1048 + "opacity": 100,
1049 + "groupIds": [],
1050 + "seed": 209,
1051 + "version": 2,
1052 + "versionNonce": 767703237,
1053 + "isDeleted": false,
1054 + "boundElements": [],
1055 + "updated": 1771155648421,
1056 + "link": null,
1057 + "locked": false,
1058 + "points": [
1059 + [
1060 + 0,
1061 + 0
1062 + ],
1063 + [
1064 + 0,
1065 + 40
1066 + ]
1067 + ],
1068 + "lastCommittedPoint": [
1069 + 0,
1070 + 40
1071 + ],
1072 + "startBinding": null,
1073 + "endBinding": null,
1074 + "startArrowhead": null,
1075 + "endArrowhead": "triangle",
1076 + "index": "aS",
1077 + "frameId": null,
1078 + "roundness": null
1079 + },
1080 + {
1081 + "type": "line",
1082 + "version": 468,
1083 + "versionNonce": 820253387,
1084 + "isDeleted": false,
1085 + "id": "BdB5RjdGYDR3A8tmrq5wu",
1086 + "fillStyle": "hachure",
1087 + "strokeWidth": 4,
1088 + "strokeStyle": "solid",
1089 + "roughness": 1,
1090 + "opacity": 100,
1091 + "angle": 0,
1092 + "x": 179.16548651970894,
1093 + "y": 511.8211950287353,
1094 + "strokeColor": "#1864ab",
1095 + "backgroundColor": "#ced4da",
1096 + "width": 95.49987102502666,
1097 + "height": 84.76783189914276,
1098 + "seed": 1782220357,
1099 + "groupIds": [
1100 + "VTuFzjJ_AU0WTb2fIfi6z"
1101 + ],
1102 + "roundness": {
1103 + "type": 2
1104 + },
1105 + "boundElements": [],
1106 + "updated": 1771155710619,
1107 + "link": null,
1108 + "locked": false,
1109 + "startBinding": null,
1110 + "endBinding": null,
1111 + "lastCommittedPoint": null,
1112 + "startArrowhead": null,
1113 + "endArrowhead": null,
1114 + "points": [
1115 + [
1116 + 0,
1117 + 0
1118 + ],
1119 + [
1120 + -95.49987102502666,
1121 + 22.43489496210908
1122 + ],
1123 + [
1124 + -2.135040777236191,
1125 + 84.76783189914276
1126 + ]
1127 + ],
1128 + "index": "aT",
1129 + "frameId": null,
1130 + "polygon": false
1131 + },
1132 + {
1133 + "type": "ellipse",
1134 + "version": 401,
1135 + "versionNonce": 885099,
1136 + "isDeleted": false,
1137 + "id": "1nlWE7mlQ_rIxtl0ozugH",
1138 + "fillStyle": "hachure",
1139 + "strokeWidth": 4,
1140 + "strokeStyle": "solid",
1141 + "roughness": 1,
1142 + "opacity": 100,
1143 + "angle": 0,
1144 + "x": 128.77004697695642,
1145 + "y": 367.48190936214445,
1146 + "strokeColor": "#1864ab",
1147 + "backgroundColor": "#ced4da",
1148 + "width": 150.15616779094566,
1149 + "height": 115.26283079928476,
1150 + "seed": 2080077221,
1151 + "groupIds": [
1152 + "LKvp2l-EoZBac172CIedS",
1153 + "VTuFzjJ_AU0WTb2fIfi6z"
1154 + ],
1155 + "roundness": {
1156 + "type": 2
1157 + },
1158 + "boundElements": [],
1159 + "updated": 1771155710619,
1160 + "link": null,
1161 + "locked": false,
1162 + "index": "aU",
1163 + "frameId": null
1164 + },
1165 + {
1166 + "type": "line",
1167 + "version": 471,
1168 + "versionNonce": 290462731,
1169 + "isDeleted": false,
1170 + "id": "kAVbMBnM5_UT5NNJ1_9Qm",
1171 + "fillStyle": "hachure",
1172 + "strokeWidth": 4,
1173 + "strokeStyle": "solid",
1174 + "roughness": 1,
1175 + "opacity": 100,
1176 + "angle": 0,
1177 + "x": 196.25611984608787,
1178 + "y": 445.74706895616464,
1179 + "strokeColor": "#1864ab",
1180 + "backgroundColor": "#ced4da",
1181 + "width": 52.32393968327051,
1182 + "height": 18.369440369125964,
1183 + "seed": 984054021,
1184 + "groupIds": [
1185 + "LKvp2l-EoZBac172CIedS",
1186 + "VTuFzjJ_AU0WTb2fIfi6z"
1187 + ],
1188 + "roundness": {
1189 + "type": 2
1190 + },
1191 + "boundElements": [],
1192 + "updated": 1771155710619,
1193 + "link": null,
1194 + "locked": false,
1195 + "startBinding": null,
1196 + "endBinding": null,
1197 + "lastCommittedPoint": null,
1198 + "startArrowhead": null,
1199 + "endArrowhead": null,
1200 + "points": [
1201 + [
1202 + 0,
1203 + 0
1204 + ],
1205 + [
1206 + 31.82551191378606,
1207 + 0.7451147388730864
1208 + ],
1209 + [
1210 + 52.32393968327051,
1211 + -17.62432563025288
1212 + ]
1213 + ],
1214 + "index": "aV",
1215 + "frameId": null,
1216 + "polygon": false
1217 + },
1218 + {
1219 + "type": "line",
1220 + "version": 471,
1221 + "versionNonce": 547775147,
1222 + "isDeleted": false,
1223 + "id": "CSK0NHRoy4PiN_f7Kfc04",
1224 + "fillStyle": "hachure",
1225 + "strokeWidth": 4,
1226 + "strokeStyle": "solid",
1227 + "roughness": 1,
1228 + "opacity": 100,
1229 + "angle": 0,
1230 + "x": 212.5370266893829,
1231 + "y": 507.2735682445683,
1232 + "strokeColor": "#1864ab",
1233 + "backgroundColor": "#ced4da",
1234 + "width": 58.32030753247698,
1235 + "height": 81.39021889780881,
1236 + "seed": 2143031397,
1237 + "groupIds": [
1238 + "LKvp2l-EoZBac172CIedS",
1239 + "VTuFzjJ_AU0WTb2fIfi6z"
1240 + ],
1241 + "roundness": {
1242 + "type": 2
1243 + },
1244 + "boundElements": [],
1245 + "updated": 1771155710619,
1246 + "link": null,
1247 + "locked": false,
1248 + "startBinding": null,
1249 + "endBinding": null,
1250 + "lastCommittedPoint": null,
1251 + "startArrowhead": null,
1252 + "endArrowhead": null,
1253 + "points": [
1254 + [
1255 + 0,
1256 + 0
1257 + ],
1258 + [
1259 + 58.32030753247698,
1260 + 25.678069610732067
1261 + ],
1262 + [
1263 + 26.42920894587616,
1264 + -55.712149287076734
1265 + ]
1266 + ],
1267 + "index": "aW",
1268 + "frameId": null,
1269 + "polygon": false
1270 + },
1271 + {
1272 + "type": "line",
1273 + "version": 425,
1274 + "versionNonce": 112907595,
1275 + "isDeleted": false,
1276 + "id": "X0Kv_vTB_isJaYMeetz9p",
1277 + "fillStyle": "hachure",
1278 + "strokeWidth": 4,
1279 + "strokeStyle": "solid",
1280 + "roughness": 1,
1281 + "opacity": 100,
1282 + "angle": 0,
1283 + "x": 200.41004968803242,
1284 + "y": 527.2830650307644,
1285 + "strokeColor": "#1864ab",
1286 + "backgroundColor": "#ced4da",
1287 + "width": 3.6380903247628757,
1288 + "height": 256.48538177399917,
1289 + "seed": 419871685,
1290 + "groupIds": [
1291 + "LKvp2l-EoZBac172CIedS",
1292 + "VTuFzjJ_AU0WTb2fIfi6z"
1293 + ],
1294 + "roundness": {
1295 + "type": 2
1296 + },
1297 + "boundElements": [],
1298 + "updated": 1771155710619,
1299 + "link": null,
1300 + "locked": false,
1301 + "startBinding": null,
1302 + "endBinding": null,
1303 + "lastCommittedPoint": null,
1304 + "startArrowhead": null,
1305 + "endArrowhead": null,
1306 + "points": [
1307 + [
1308 + 0,
1309 + 0
1310 + ],
1311 + [
1312 + -3.6380903247628757,
1313 + 111.26492447292831
1314 + ],
1315 + [
1316 + -1.8190451623814379,
1317 + 256.48538177399917
1318 + ]
1319 + ],
1320 + "index": "aX",
1321 + "frameId": null,
1322 + "polygon": false
1323 + },
1324 + {
1325 + "type": "line",
1326 + "version": 416,
1327 + "versionNonce": 585626603,
1328 + "isDeleted": false,
1329 + "id": "6uxvBjGLa1a_61C_uX54X",
1330 + "fillStyle": "hachure",
1331 + "strokeWidth": 4,
1332 + "strokeStyle": "solid",
1333 + "roughness": 1,
1334 + "opacity": 100,
1335 + "angle": 0,
1336 + "x": 177.67198515826317,
1337 + "y": 804.9906426789163,
1338 + "strokeColor": "#1864ab",
1339 + "backgroundColor": "#ced4da",
1340 + "width": 75.18719079295826,
1341 + "height": 0.606353013531546,
1342 + "seed": 1050999589,
1343 + "groupIds": [
1344 + "LKvp2l-EoZBac172CIedS",
1345 + "VTuFzjJ_AU0WTb2fIfi6z"
1346 + ],
1347 + "roundness": {
1348 + "type": 2
1349 + },
1350 + "boundElements": [],
1351 + "updated": 1771155710619,
1352 + "link": null,
1353 + "locked": false,
1354 + "startBinding": null,
1355 + "endBinding": null,
1356 + "lastCommittedPoint": null,
1357 + "startArrowhead": null,
1358 + "endArrowhead": null,
1359 + "points": [
1360 + [
1361 + 0,
1362 + 0
1363 + ],
1364 + [
1365 + -75.18719079295826,
1366 + -0.606353013531546
1367 + ]
1368 + ],
1369 + "index": "aY",
1370 + "frameId": null,
1371 + "polygon": false
1372 + },
1373 + {
1374 + "type": "line",
1375 + "version": 402,
1376 + "versionNonce": 87572107,
1377 + "isDeleted": false,
1378 + "id": "2UrKoHCidBzm-qg4zt8mK",
1379 + "fillStyle": "hachure",
1380 + "strokeWidth": 4,
1381 + "strokeStyle": "solid",
1382 + "roughness": 1,
1383 + "opacity": 100,
1384 + "angle": 0,
1385 + "x": 210.11164239168303,
1386 + "y": 804.0811200977256,
1387 + "strokeColor": "#1864ab",
1388 + "backgroundColor": "#ced4da",
1389 + "width": 78.2189419824028,
1390 + "height": 0.9095225811907721,
1391 + "seed": 1225019013,
1392 + "groupIds": [
1393 + "LKvp2l-EoZBac172CIedS",
1394 + "VTuFzjJ_AU0WTb2fIfi6z"
1395 + ],
1396 + "roundness": {
1397 + "type": 2
1398 + },
1399 + "boundElements": [],
1400 + "updated": 1771155710619,
1401 + "link": null,
1402 + "locked": false,
1403 + "startBinding": null,
1404 + "endBinding": null,
1405 + "lastCommittedPoint": null,
1406 + "startArrowhead": null,
1407 + "endArrowhead": null,
1408 + "points": [
1409 + [
1410 + 0,
1411 + 0
1412 + ],
1413 + [
1414 + 78.2189419824028,
1415 + -0.9095225811907721
1416 + ]
1417 + ],
1418 + "index": "aZ",
1419 + "frameId": null,
1420 + "polygon": false
1421 + },
1422 + {
1423 + "type": "line",
1424 + "version": 724,
1425 + "versionNonce": 1483093291,
1426 + "isDeleted": false,
1427 + "id": "iepE16DW4dNp7ruUFBxMZ",
1428 + "fillStyle": "hachure",
1429 + "strokeWidth": 4,
1430 + "strokeStyle": "solid",
1431 + "roughness": 1,
1432 + "opacity": 100,
1433 + "angle": 0,
1434 + "x": 225.09009159390217,
1435 + "y": 401.52394093096797,
1436 + "strokeColor": "#1864ab",
1437 + "backgroundColor": "#ced4da",
1438 + "width": 13.142401768894867,
1439 + "height": 6.4251433062005985,
1440 + "seed": 652359141,
1441 + "groupIds": [
1442 + "LKvp2l-EoZBac172CIedS",
1443 + "VTuFzjJ_AU0WTb2fIfi6z"
1444 + ],
1445 + "roundness": {
1446 + "type": 2
1447 + },
1448 + "boundElements": [],
1449 + "updated": 1771155710619,
1450 + "link": null,
1451 + "locked": false,
1452 + "startBinding": null,
1453 + "endBinding": null,
1454 + "lastCommittedPoint": null,
1455 + "startArrowhead": null,
1456 + "endArrowhead": null,
1457 + "points": [
1458 + [
1459 + 0,
1460 + 0
1461 + ],
1462 + [
1463 + 8.413465474043093,
1464 + -6.0429301704292575
1465 + ],
1466 + [
1467 + 13.142401768894867,
1468 + 0.3822131357713405
1469 + ]
1470 + ],
1471 + "index": "aa",
1472 + "frameId": null,
1473 + "polygon": false
1474 + },
1475 + {
1476 + "type": "line",
1477 + "version": 751,
1478 + "versionNonce": 198989771,
1479 + "isDeleted": false,
1480 + "id": "mL7GdqGTlFVXCYnbEcmum",
1481 + "fillStyle": "hachure",
1482 + "strokeWidth": 4,
1483 + "strokeStyle": "solid",
1484 + "roughness": 1,
1485 + "opacity": 100,
1486 + "angle": 0,
1487 + "x": 200.2332698966853,
1488 + "y": 404.0384746762166,
1489 + "strokeColor": "#1864ab",
1490 + "backgroundColor": "#ced4da",
1491 + "width": 13.142401768894867,
1492 + "height": 6.4251433062005985,
1493 + "seed": 323760453,
1494 + "groupIds": [
1495 + "LKvp2l-EoZBac172CIedS",
1496 + "VTuFzjJ_AU0WTb2fIfi6z"
1497 + ],
1498 + "roundness": {
1499 + "type": 2
1500 + },
1501 + "boundElements": [],
1502 + "updated": 1771155710619,
1503 + "link": null,
1504 + "locked": false,
1505 + "startBinding": null,
1506 + "endBinding": null,
1507 + "lastCommittedPoint": null,
1508 + "startArrowhead": null,
1509 + "endArrowhead": null,
1510 + "points": [
1511 + [
1512 + 0,
1513 + 0
1514 + ],
1515 + [
1516 + 8.413465474043093,
1517 + -6.0429301704292575
1518 + ],
1519 + [
1520 + 13.142401768894867,
1521 + 0.3822131357713405
1522 + ]
1523 + ],
1524 + "index": "ab",
1525 + "frameId": null,
1526 + "polygon": false
1527 + }
1528 + ],
1529 + "appState": {
1530 + "gridSize": 20,
1531 + "gridStep": 5,
1532 + "gridModeEnabled": false,
1533 + "viewBackgroundColor": "#ffffff",
1534 + "lockedMultiSelections": {}
1535 + },
1536 + "files": {}
1537 + }
Новіше Пізніше