|
1 | | -<mxfile host="app.diagrams.net" agent="Codex" pages="6"> |
| 1 | +<mxfile host="Electron" agent="Codex" pages="7"> |
2 | 2 | <diagram id="store-protocol-page" name="Store Protocol"> |
3 | 3 | <mxGraphModel dx="912" dy="491" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0"> |
4 | 4 | <root> |
|
632 | 632 | </mxGraphModel> |
633 | 633 | </diagram> |
634 | 634 | <diagram id="todo-representative-flow-page" name="Todo Representative Flow"> |
635 | | - <mxGraphModel dx="764" dy="411" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0"> |
| 635 | + <mxGraphModel dx="3142" dy="1889" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="none" math="0" shadow="0"> |
636 | 636 | <root> |
637 | 637 | <mxCell id="500" /> |
638 | 638 | <mxCell id="501" parent="500" /> |
|
716 | 716 | </root> |
717 | 717 | </mxGraphModel> |
718 | 718 | </diagram> |
| 719 | + <diagram id="widget-architecture-page" name="Widget Architecture"> |
| 720 | + <mxGraphModel dx="1414" dy="850" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1280" pageHeight="420" background="none" math="0" shadow="0"> |
| 721 | + <root> |
| 722 | + <mxCell id="0" /> |
| 723 | + <mxCell id="1" parent="0" /> |
| 724 | + <mxCell id="w-data-bg" parent="1" style="rounded=1;arcSize=10;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B9D7FF;strokeWidth=2;" value="" vertex="1"> |
| 725 | + <mxGeometry height="360" width="1220" x="30" y="30" as="geometry" /> |
| 726 | + </mxCell> |
| 727 | + <mxCell id="w-service" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLog/Infra/Service/TodoService.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#64748B;strokeWidth=2;fontColor=#1F2328;fontSize=13;align=center;" value="<b>Todo Data</b><br><span style="font-weight: normal;">Firestore</span>" vertex="1"> |
| 728 | + <mxGeometry height="62" width="130" x="58" y="88" as="geometry" /> |
| 729 | + </mxCell> |
| 730 | + <mxCell id="w-repository" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLog/Domain/Protocol/TodoRepository.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#64748B;strokeWidth=2;fontColor=#1F2328;fontSize=13;align=center;" value="<b>App Data Source</b><br><span style="font-weight: normal;">Todo query</span>" vertex="1"> |
| 731 | + <mxGeometry height="62" width="130" x="300" y="88" as="geometry" /> |
| 732 | + </mxCell> |
| 733 | + <mxCell id="w-handler" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLog/Widget/Sync/WidgetSyncEventHandler.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#EAF2FF;strokeColor=#0A84FF;strokeWidth=2;fontColor=#0B1F33;fontSize=13;align=center;" value="<b>Snapshot Sync</b><br><span style="font-weight: normal;">Today / Heatmap data</span>" vertex="1"> |
| 734 | + <mxGeometry height="70" width="150" x="542" y="84" as="geometry" /> |
| 735 | + </mxCell> |
| 736 | + <mxCell id="w-updater" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLog/Storage/Persistence/WidgetSnapshotUpdater.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#EAF2FF;strokeColor=#0A84FF;strokeWidth=2;fontColor=#0B1F33;fontSize=13;align=center;" value="<b>Snapshot Builder</b><br><span style="font-weight: normal;">apply rules</span>" vertex="1"> |
| 737 | + <mxGeometry height="70" width="150" x="802" y="84" as="geometry" /> |
| 738 | + </mxCell> |
| 739 | + <mxCell id="w-factory" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#0A84FF;strokeWidth=2;fontColor=#1F2328;fontSize=13;align=center;" value="<b>Widget Snapshot</b><br><span style="font-weight: normal;">Today / Heatmap</span>" vertex="1"> |
| 740 | + <mxGeometry height="78" width="160" x="1067" y="80" as="geometry" /> |
| 741 | + </mxCell> |
| 742 | + <mxCell id="w-appgroup" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLog/Widget/Common/WidgetSharedDefaultsStore.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#DCFCE7;strokeColor=#16A34A;strokeWidth=2;fontColor=#14532D;fontSize=13;align=center;" value="<b>App Group UserDefaults</b><br><span style="font-weight: normal;">JSON snapshot data</span>" vertex="1"> |
| 743 | + <mxGeometry height="62" width="160" x="1067" y="288" as="geometry" /> |
| 744 | + </mxCell> |
| 745 | + <mxCell id="w-preference" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStore.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#ECFEFF;strokeColor=#0891B2;strokeWidth=2;fontColor=#164E63;fontSize=13;align=center;" value="<b>Display Preferences</b><br><span style="font-weight: normal;">Today / Heatmap options</span>" vertex="1"> |
| 746 | + <mxGeometry height="60" width="210" x="772" y="200" as="geometry" /> |
| 747 | + </mxCell> |
| 748 | + <mxCell id="w-widget-store" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLogWidget/Common/WidgetSnapshotStore.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#F5F3FF;strokeColor=#7C3AED;strokeWidth=2;fontColor=#1F2328;fontSize=13;align=center;" value="<b>Snapshot Reader</b><br><span style="font-weight: normal;">read shared snapshot</span>" vertex="1"> |
| 749 | + <mxGeometry height="62" width="160" x="802" y="288" as="geometry" /> |
| 750 | + </mxCell> |
| 751 | + <mxCell id="w-provider" link="https://github.com/opficdev/SwiftUI_DevLog/blob/main/DevLogWidget/Today/TodayTodoWidgetProvider.swift" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#F5F3FF;strokeColor=#7C3AED;strokeWidth=2;fontColor=#1F2328;fontSize=13;align=center;" value="<b>Widget Timeline</b><br><span style="font-weight: normal;">make entry</span>" vertex="1"> |
| 752 | + <mxGeometry height="62" width="170" x="542" y="288" as="geometry" /> |
| 753 | + </mxCell> |
| 754 | + <mxCell id="w-entry" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#7C3AED;strokeWidth=2;fontColor=#1F2328;fontSize=13;align=center;" value="<b>Widget Entry</b><br><span style="font-weight: normal;">snapshot state</span>" vertex="1"> |
| 755 | + <mxGeometry height="58" width="130" x="300" y="290" as="geometry" /> |
| 756 | + </mxCell> |
| 757 | + <mxCell id="w-entry-view" parent="1" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#7C3AED;strokeWidth=2;fontColor=#1F2328;fontSize=13;align=center;" value="<b>Widget View</b><br><span style="font-weight: normal;">render</span>" vertex="1"> |
| 758 | + <mxGeometry height="58" width="130" x="58" y="290" as="geometry" /> |
| 759 | + </mxCell> |
| 760 | + <mxCell id="w-data-note" parent="1" style="rounded=1;arcSize=10;whiteSpace=wrap;html=1;fillColor=#F8FAFC;strokeColor=#D8E0EA;strokeWidth=1;fontColor=#374151;fontSize=12;align=left;spacingLeft=10;" value="Todo 조회 결과와 사용자 설정이 스냅샷으로 변환됩니다.<div>App Group UserDefaults에 JSON 데이터로 저장된 뒤 위젯 확장에서 읽혀 화면으로 렌더링됩니다.</div>" vertex="1"> |
| 761 | + <mxGeometry height="52" width="562" x="58" y="200" as="geometry" /> |
| 762 | + </mxCell> |
| 763 | + <mxCell id="wd-1" edge="1" parent="1" source="w-service" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#0A84FF;strokeWidth=3;" target="w-repository" value="Todo data"> |
| 764 | + <mxGeometry relative="1" as="geometry" /> |
| 765 | + </mxCell> |
| 766 | + <mxCell id="wd-2" edge="1" parent="1" source="w-repository" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#0A84FF;strokeWidth=3;" target="w-handler" value="Todo page"> |
| 767 | + <mxGeometry relative="1" as="geometry" /> |
| 768 | + </mxCell> |
| 769 | + <mxCell id="wd-3" edge="1" parent="1" source="w-handler" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#0A84FF;strokeWidth=3;" target="w-updater" value="Widget input"> |
| 770 | + <mxGeometry relative="1" x="-0.1739" as="geometry"> |
| 771 | + <mxPoint as="offset" /> |
| 772 | + </mxGeometry> |
| 773 | + </mxCell> |
| 774 | + <mxCell id="wd-4" edge="1" parent="1" source="w-updater" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#0A84FF;strokeWidth=3;" target="w-factory" value="Snapshot"> |
| 775 | + <mxGeometry relative="1" x="-0.2174" as="geometry"> |
| 776 | + <mxPoint as="offset" /> |
| 777 | + </mxGeometry> |
| 778 | + </mxCell> |
| 779 | + <mxCell id="wd-5" edge="1" parent="1" source="w-factory" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#16A34A;strokeWidth=3;" target="w-appgroup" value="Save JSON"> |
| 780 | + <mxGeometry relative="1" as="geometry" /> |
| 781 | + </mxCell> |
| 782 | + <mxCell id="wd-6" edge="1" parent="1" source="w-preference" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#0891B2;strokeWidth=3;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" target="w-updater" value="Options"> |
| 783 | + <mxGeometry relative="1" x="-0.0857" as="geometry"> |
| 784 | + <mxPoint as="offset" /> |
| 785 | + </mxGeometry> |
| 786 | + </mxCell> |
| 787 | + <mxCell id="wd-7" edge="1" parent="1" source="w-appgroup" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#7C3AED;strokeWidth=3;edgeStyle=orthogonalEdgeStyle;" target="w-widget-store" value="Read JSON"> |
| 788 | + <mxGeometry relative="1" x="-0.1048" as="geometry"> |
| 789 | + <mxPoint as="offset" /> |
| 790 | + </mxGeometry> |
| 791 | + </mxCell> |
| 792 | + <mxCell id="wd-8" edge="1" parent="1" source="w-widget-store" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#7C3AED;strokeWidth=3;" target="w-provider" value="Snapshot"> |
| 793 | + <mxGeometry relative="1" x="-0.0667" y="-1" as="geometry"> |
| 794 | + <mxPoint as="offset" /> |
| 795 | + </mxGeometry> |
| 796 | + </mxCell> |
| 797 | + <mxCell id="wd-9" edge="1" parent="1" source="w-provider" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#7C3AED;strokeWidth=3;" target="w-entry" value="Entry data"> |
| 798 | + <mxGeometry relative="1" as="geometry" /> |
| 799 | + </mxCell> |
| 800 | + <mxCell id="wd-10" edge="1" parent="1" source="w-entry" style="endArrow=blockThin;endFill=1;endSize=16;html=1;rounded=1;strokeColor=#7C3AED;strokeWidth=3;" target="w-entry-view" value="Render"> |
| 801 | + <mxGeometry relative="1" as="geometry" /> |
| 802 | + </mxCell> |
| 803 | + </root> |
| 804 | + </mxGraphModel> |
| 805 | + </diagram> |
719 | 806 | </mxfile> |
0 commit comments