마지막 활동 2 months ago

db-migration.excalidraw Raw
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}