From 5e4c1d201b4d62cb21ddb890b5765d1aed600695 Mon Sep 17 00:00:00 2001 From: opficdev <162981733+opficdev@users.noreply.github.com> Date: Mon, 8 Jun 2026 23:14:29 +0900 Subject: [PATCH 1/6] =?UTF-8?q?refactor:=20=EC=9C=84=EC=A0=AF=20=EC=8A=A4?= =?UTF-8?q?=EB=83=85=EC=83=B7=20repository=20adapter=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogData/Sources/DataAssembler.swift | 6 + .../WidgetTodoSnapshotRepository.swift | 25 +++ .../WidgetTodoSnapshotRepositoryImpl.swift | 60 +++++++ ...idgetTodoSnapshotRepositoryImplTests.swift | 169 ++++++++++++++++++ 4 files changed, 260 insertions(+) create mode 100644 Application/DevLogData/Sources/Protocol/WidgetTodoSnapshotRepository.swift create mode 100644 Application/DevLogData/Sources/Repository/WidgetTodoSnapshotRepositoryImpl.swift create mode 100644 Application/DevLogData/Tests/Repository/WidgetTodoSnapshotRepositoryImplTests.swift diff --git a/Application/DevLogData/Sources/DataAssembler.swift b/Application/DevLogData/Sources/DataAssembler.swift index 184d9d09..bb64b47c 100644 --- a/Application/DevLogData/Sources/DataAssembler.swift +++ b/Application/DevLogData/Sources/DataAssembler.swift @@ -45,6 +45,12 @@ public final class DataAssembler: Assembler { ) } + container.register(WidgetTodoSnapshotRepository.self) { + WidgetTodoSnapshotRepositoryImpl( + repository: container.resolve(TodoRepository.self) + ) + } + container.register(TodoCategoryRepository.self) { TodoCategoryRepositoryImpl( todoCategoryService: container.resolve(TodoCategoryService.self) diff --git a/Application/DevLogData/Sources/Protocol/WidgetTodoSnapshotRepository.swift b/Application/DevLogData/Sources/Protocol/WidgetTodoSnapshotRepository.swift new file mode 100644 index 00000000..60bfac03 --- /dev/null +++ b/Application/DevLogData/Sources/Protocol/WidgetTodoSnapshotRepository.swift @@ -0,0 +1,25 @@ +// +// WidgetTodoSnapshotRepository.swift +// DevLogData +// +// Created by opfic on 6/8/26. +// + +import Foundation +import DevLogCore + +public protocol WidgetTodoSnapshotRepository { + func fetchTodayTodos( + dueDateFilter: TodoQuery.DueDateFilter, + sortTarget: TodoQuery.SortTarget, + sortOrder: TodoQuery.SortOrder, + pageSize: Int + ) async throws -> [WidgetTodoSnapshot] + + func fetchHeatmapTodos( + sortTarget: TodoQuery.SortTarget, + quarterStart: Date, + nextQuarterStart: Date, + pageSize: Int + ) async throws -> [WidgetTodoSnapshot] +} diff --git a/Application/DevLogData/Sources/Repository/WidgetTodoSnapshotRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/WidgetTodoSnapshotRepositoryImpl.swift new file mode 100644 index 00000000..b628c600 --- /dev/null +++ b/Application/DevLogData/Sources/Repository/WidgetTodoSnapshotRepositoryImpl.swift @@ -0,0 +1,60 @@ +// +// WidgetTodoSnapshotRepositoryImpl.swift +// DevLogData +// +// Created by opfic on 6/8/26. +// + +import Foundation +import DevLogCore +import DevLogDomain + +final class WidgetTodoSnapshotRepositoryImpl: WidgetTodoSnapshotRepository { + private let repository: TodoRepository + + init(repository: TodoRepository) { + self.repository = repository + } + + func fetchTodayTodos( + dueDateFilter: TodoQuery.DueDateFilter, + sortTarget: TodoQuery.SortTarget, + sortOrder: TodoQuery.SortOrder, + pageSize: Int + ) async throws -> [WidgetTodoSnapshot] { + let todoPage = try await repository.fetchTodos( + TodoQuery( + completionFilter: .incomplete, + dueDateFilter: dueDateFilter, + sortTarget: sortTarget, + sortOrder: sortOrder, + pageSize: pageSize, + fetchAllPages: true + ), + cursor: nil + ) + + return todoPage.items.map(WidgetTodoSnapshot.fromDomain) + } + + func fetchHeatmapTodos( + sortTarget: TodoQuery.SortTarget, + quarterStart: Date, + nextQuarterStart: Date, + pageSize: Int + ) async throws -> [WidgetTodoSnapshot] { + let todoPage = try await repository.fetchTodos( + TodoQuery( + sortDateFrom: quarterStart, + sortDateTo: nextQuarterStart, + includesDeleted: true, + sortTarget: sortTarget, + pageSize: pageSize, + fetchAllPages: true + ), + cursor: nil + ) + + return todoPage.items.map(WidgetTodoSnapshot.fromDomain) + } +} diff --git a/Application/DevLogData/Tests/Repository/WidgetTodoSnapshotRepositoryImplTests.swift b/Application/DevLogData/Tests/Repository/WidgetTodoSnapshotRepositoryImplTests.swift new file mode 100644 index 00000000..93f0922d --- /dev/null +++ b/Application/DevLogData/Tests/Repository/WidgetTodoSnapshotRepositoryImplTests.swift @@ -0,0 +1,169 @@ +// +// WidgetTodoSnapshotRepositoryImplTests.swift +// DevLogDataTests +// +// Created by opfic on 6/8/26. +// + +import Foundation +import Testing +import DevLogCore +import DevLogDomain +@testable import DevLogData + +struct WidgetTodoSnapshotRepositoryImplTests { + @Test("Today 위젯 Todo 조회는 기존 TodoRepository query와 snapshot 매핑을 사용한다") + func today_위젯_todo_조회는_기존_todorepository_query와_snapshot_매핑을_사용한다() async throws { + let repositorySpy = TodoRepositorySpy() + let repository = WidgetTodoSnapshotRepositoryImpl(repository: repositorySpy) + let now = Date(timeIntervalSince1970: 100) + let todo = makeTodo(id: "today", createdAt: now, dueDate: now) + + await repositorySpy.setTodos([todo], for: .dueDate) + + let snapshots = try await repository.fetchTodayTodos( + dueDateFilter: .withDueDate, + sortTarget: .dueDate, + sortOrder: .oldest, + pageSize: 100 + ) + let queries = await repositorySpy.calledQueries() + + #expect(snapshots == [makeSnapshot(id: "today", createdAt: now, dueDate: now)]) + #expect(queries == [ + TodoQuery( + completionFilter: .incomplete, + dueDateFilter: .withDueDate, + sortTarget: .dueDate, + sortOrder: .oldest, + pageSize: 100, + fetchAllPages: true + ) + ]) + } + + @Test("Heatmap 위젯 Todo 조회는 기존 TodoRepository query와 snapshot 매핑을 사용한다") + func heatmap_위젯_todo_조회는_기존_todorepository_query와_snapshot_매핑을_사용한다() async throws { + let repositorySpy = TodoRepositorySpy() + let repository = WidgetTodoSnapshotRepositoryImpl(repository: repositorySpy) + let quarterStart = Date(timeIntervalSince1970: 100) + let nextQuarterStart = Date(timeIntervalSince1970: 200) + let todo = makeTodo(id: "created", createdAt: quarterStart) + + await repositorySpy.setTodos([todo], for: .createdAt) + + let snapshots = try await repository.fetchHeatmapTodos( + sortTarget: .createdAt, + quarterStart: quarterStart, + nextQuarterStart: nextQuarterStart, + pageSize: 100 + ) + let queries = await repositorySpy.calledQueries() + + #expect(snapshots == [makeSnapshot(id: "created", createdAt: quarterStart)]) + #expect(queries == [ + TodoQuery( + sortDateFrom: quarterStart, + sortDateTo: nextQuarterStart, + includesDeleted: true, + sortTarget: .createdAt, + pageSize: 100, + fetchAllPages: true + ) + ]) + } + + private func makeTodo( + id: String, + createdAt: Date, + completedAt: Date? = nil, + deletedAt: Date? = nil, + dueDate: Date? = nil + ) -> Todo { + Todo( + id: id, + isPinned: false, + isCompleted: completedAt != nil, + isChecked: false, + number: 1, + title: id, + content: "", + createdAt: createdAt, + updatedAt: createdAt, + completedAt: completedAt, + deletedAt: deletedAt, + dueDate: dueDate, + tags: [], + category: .system(.feature) + ) + } + + private func makeSnapshot( + id: String, + createdAt: Date, + completedAt: Date? = nil, + deletedAt: Date? = nil, + dueDate: Date? = nil + ) -> WidgetTodoSnapshot { + WidgetTodoSnapshot( + id: id, + number: 1, + title: id, + isPinned: false, + createdAt: createdAt, + completedAt: completedAt, + deletedAt: deletedAt, + dueDate: dueDate + ) + } +} + +private actor TodoRepositorySpy: TodoRepository { + private var queries = [TodoQuery]() + private var todosBySortTarget = [TodoQuery.SortTarget: [Todo]]() + + func setTodos(_ todos: [Todo], for sortTarget: TodoQuery.SortTarget) { + todosBySortTarget[sortTarget] = todos + } + + func fetchTodos(_ query: TodoQuery, cursor: TodoCursor?) async throws -> TodoPage { + queries.append(query) + + return TodoPage( + items: todosBySortTarget[query.sortTarget] ?? [], + nextCursor: nil + ) + } + + func fetchTodo(_ todoId: String) async throws -> Todo { + throw TodoRepositorySpyError.unexpectedCall + } + + func fetchReferences(_ numbers: [Int]) async throws -> [Int: TodoReference] { + throw TodoRepositorySpyError.unexpectedCall + } + + func upsertTodo(_ todo: Todo) async throws { + throw TodoRepositorySpyError.unexpectedCall + } + + func upsertTodo(_ todoDraft: TodoDraft) async throws { + throw TodoRepositorySpyError.unexpectedCall + } + + func deleteTodo(_ todoId: String) async throws { + throw TodoRepositorySpyError.unexpectedCall + } + + func undoDeleteTodo(_ todoId: String) async throws { + throw TodoRepositorySpyError.unexpectedCall + } + + func calledQueries() -> [TodoQuery] { + queries + } +} + +private enum TodoRepositorySpyError: Error { + case unexpectedCall +} From 378e2896620164ec3df98e3b8f3236e1582fad16 Mon Sep 17 00:00:00 2001 From: opficdev <162981733+opficdev@users.noreply.github.com> Date: Mon, 8 Jun 2026 23:14:44 +0900 Subject: [PATCH 2/6] =?UTF-8?q?refactor:=20DevLogWidget=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .swiftlint.yml | 1 + Application/DevLogApp/Project.swift | 1 + Application/DevLogWidget/Project.swift | 16 ++++++++++++++++ Application/DevLogWidget/Sources/.swiftlint.yml | 1 + Application/DevLogWidget/Tests/.swiftlint.yml | 1 + Workspace.swift | 1 + 6 files changed, 21 insertions(+) create mode 100644 Application/DevLogWidget/Project.swift create mode 100644 Application/DevLogWidget/Sources/.swiftlint.yml create mode 100644 Application/DevLogWidget/Tests/.swiftlint.yml diff --git a/.swiftlint.yml b/.swiftlint.yml index 73c3e8bb..014709f4 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -9,6 +9,7 @@ excluded: - Application/DevLogInfra/Project.swift - Application/DevLogPersistence/Project.swift - Application/DevLogPresentation/Project.swift + - Application/DevLogWidget/Project.swift - Widget/DevLogWidgetCore/Project.swift - Widget/DevLogWidgetExtension/Project.swift diff --git a/Application/DevLogApp/Project.swift b/Application/DevLogApp/Project.swift index 992d31d7..8e89fc3b 100644 --- a/Application/DevLogApp/Project.swift +++ b/Application/DevLogApp/Project.swift @@ -34,6 +34,7 @@ let project = Project( .project(target: "DevLogPresentation", path: "../DevLogPresentation"), .project(target: "DevLogPersistence", path: "../DevLogPersistence"), .project(target: "DevLogInfra", path: "../DevLogInfra"), + .project(target: "DevLogWidget", path: "../DevLogWidget"), .project(target: "DevLogData", path: "../DevLogData"), .project(target: "DevLogDomain", path: "../DevLogDomain"), .project(target: "DevLogCore", path: "../DevLogCore"), diff --git a/Application/DevLogWidget/Project.swift b/Application/DevLogWidget/Project.swift new file mode 100644 index 00000000..f6541a00 --- /dev/null +++ b/Application/DevLogWidget/Project.swift @@ -0,0 +1,16 @@ +import ProjectDescription +import ProjectDescriptionHelpers + +let project = Project.devlogFramework( + name: "DevLogWidget", + bundleId: "com.opfic.DevLog.DevLogWidget", + versionXcconfigPath: "../Shared/Version.xcconfig", + frameworkInfoPlistPath: "../Shared/InfoPlists/Framework-Info.plist", + testsInfoPlistPath: "../Shared/InfoPlists/UnitTests-Info.plist", + packages: DevLogPackages.defaultPackages, + dependencies: [ + .project(target: "DevLogData", path: "../DevLogData"), + .project(target: "DevLogCore", path: "../DevLogCore"), + ], + hasTests: true +) diff --git a/Application/DevLogWidget/Sources/.swiftlint.yml b/Application/DevLogWidget/Sources/.swiftlint.yml new file mode 100644 index 00000000..1242ffca --- /dev/null +++ b/Application/DevLogWidget/Sources/.swiftlint.yml @@ -0,0 +1 @@ +parent_config: ../../../.swiftlint.yml diff --git a/Application/DevLogWidget/Tests/.swiftlint.yml b/Application/DevLogWidget/Tests/.swiftlint.yml new file mode 100644 index 00000000..b2c5c38d --- /dev/null +++ b/Application/DevLogWidget/Tests/.swiftlint.yml @@ -0,0 +1 @@ +parent_config: ../../../.swiftlint-tests.yml diff --git a/Workspace.swift b/Workspace.swift index afbf038b..13747515 100644 --- a/Workspace.swift +++ b/Workspace.swift @@ -10,6 +10,7 @@ let workspace = Workspace( "Application/DevLogInfra", "Application/DevLogPersistence", "Application/DevLogPresentation", + "Application/DevLogWidget", "Widget/DevLogWidgetCore", "Widget/DevLogWidgetExtension", ], From 1acf7219fe44b40a8c271f51341013f99a3cc635 Mon Sep 17 00:00:00 2001 From: opficdev <162981733+opficdev@users.noreply.github.com> Date: Mon, 8 Jun 2026 23:15:30 +0900 Subject: [PATCH 3/6] =?UTF-8?q?refactor:=20=EC=9C=84=EC=A0=AF=20=EB=8F=99?= =?UTF-8?q?=EA=B8=B0=ED=99=94=20handler=EB=A5=BC=20DevLogWidget=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/App/Assembler/AppAssembler.swift | 2 + .../App/Assembler/AppLayerAssembler.swift | 17 -- .../Sources/App/Delegate/AppDelegate.swift | 1 + .../DevLogApp/Sources/App/DevLogApp.swift | 1 + .../Handler/WidgetSessionSyncHandler.swift | 6 +- .../Sources/Widget/WidgetAssembler.swift | 32 ++++ .../Widget/WidgetSyncEventBusImpl.swift | 3 +- .../Widget/WidgetSyncEventHandler.swift | 54 +++--- .../WidgetSessionSyncHandlerTests.swift | 4 +- .../Widget/WidgetSyncEventBusTests.swift | 5 +- .../Widget/WidgetSyncEventHandlerTests.swift | 158 +++++++++--------- 11 files changed, 142 insertions(+), 141 deletions(-) rename Application/{DevLogApp/Sources/App => DevLogWidget/Sources}/Handler/WidgetSessionSyncHandler.swift (93%) create mode 100644 Application/DevLogWidget/Sources/Widget/WidgetAssembler.swift rename Application/{DevLogData => DevLogWidget}/Sources/Widget/WidgetSyncEventBusImpl.swift (92%) rename Application/{DevLogData => DevLogWidget}/Sources/Widget/WidgetSyncEventHandler.swift (74%) rename Application/{DevLogApp/Tests/App => DevLogWidget/Tests/Handler}/WidgetSessionSyncHandlerTests.swift (98%) rename Application/{DevLogData => DevLogWidget}/Tests/Widget/WidgetSyncEventBusTests.swift (90%) rename Application/{DevLogData => DevLogWidget}/Tests/Widget/WidgetSyncEventHandlerTests.swift (72%) diff --git a/Application/DevLogApp/Sources/App/Assembler/AppAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/AppAssembler.swift index 07b90fcd..6a1168fb 100644 --- a/Application/DevLogApp/Sources/App/Assembler/AppAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/AppAssembler.swift @@ -10,11 +10,13 @@ import DevLogData import DevLogDomain import DevLogInfra import DevLogPersistence +import DevLogWidget final class AppAssembler: Assembler { private let assemblers: [Assembler] = [ PersistenceAssembler(), InfraAssembler(), + WidgetAssembler(), DataAssembler(), DomainAssembler(), AppLayerAssembler() diff --git a/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift index ac0c6f14..8dbc0bee 100644 --- a/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift @@ -7,26 +7,9 @@ import DevLogCore import DevLogData -import DevLogDomain final class AppLayerAssembler: Assembler { func assemble(_ container: any DIContainer) { - container.register(WidgetSyncEventBus.self) { - WidgetSyncEventBusImpl() - } - container.register(WidgetSyncEventHandler.self) { - WidgetSyncEventHandler( - eventBus: container.resolve(WidgetSyncEventBus.self), - repository: container.resolve(TodoRepository.self), - snapshotUpdater: container.resolve(WidgetSnapshotUpdater.self) - ) - } - container.register(WidgetSessionSyncHandler.self) { - WidgetSessionSyncHandler( - authService: container.resolve(AuthService.self), - widgetSyncEventBus: container.resolve(WidgetSyncEventBus.self) - ) - } container.register(FCMTokenSyncHandler.self) { FCMTokenSyncHandler( userService: container.resolve(UserService.self) diff --git a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift index 208d7191..c65a68d2 100644 --- a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift +++ b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift @@ -9,6 +9,7 @@ import UIKit import DevLogCore import DevLogData import DevLogInfra +import DevLogWidget class AppDelegate: UIResponder, UIApplicationDelegate { private let logger = Logger(category: "AppDelegate") diff --git a/Application/DevLogApp/Sources/App/DevLogApp.swift b/Application/DevLogApp/Sources/App/DevLogApp.swift index 0e68fd0b..4e8e5c36 100644 --- a/Application/DevLogApp/Sources/App/DevLogApp.swift +++ b/Application/DevLogApp/Sources/App/DevLogApp.swift @@ -10,6 +10,7 @@ import DevLogCore import DevLogData import DevLogDomain import DevLogPresentation +import DevLogWidget @main struct DevLogApp: App { diff --git a/Application/DevLogApp/Sources/App/Handler/WidgetSessionSyncHandler.swift b/Application/DevLogWidget/Sources/Handler/WidgetSessionSyncHandler.swift similarity index 93% rename from Application/DevLogApp/Sources/App/Handler/WidgetSessionSyncHandler.swift rename to Application/DevLogWidget/Sources/Handler/WidgetSessionSyncHandler.swift index e9b99aaf..824e971b 100644 --- a/Application/DevLogApp/Sources/App/Handler/WidgetSessionSyncHandler.swift +++ b/Application/DevLogWidget/Sources/Handler/WidgetSessionSyncHandler.swift @@ -1,6 +1,6 @@ // // WidgetSessionSyncHandler.swift -// DevLog +// DevLogWidget // // Created by opfic on 6/1/26. // @@ -9,13 +9,13 @@ import Combine import Foundation import DevLogData -final class WidgetSessionSyncHandler { +public final class WidgetSessionSyncHandler { private let authService: AuthService private let widgetSyncEventBus: WidgetSyncEventBus private var hasRequestedWidgetSync = false private var cancellables = Set() - init( + public init( authService: AuthService, widgetSyncEventBus: WidgetSyncEventBus ) { diff --git a/Application/DevLogWidget/Sources/Widget/WidgetAssembler.swift b/Application/DevLogWidget/Sources/Widget/WidgetAssembler.swift new file mode 100644 index 00000000..6c09331d --- /dev/null +++ b/Application/DevLogWidget/Sources/Widget/WidgetAssembler.swift @@ -0,0 +1,32 @@ +// +// WidgetAssembler.swift +// DevLogWidget +// +// Created by opfic on 6/8/26. +// + +import DevLogCore +import DevLogData + +public final class WidgetAssembler: Assembler { + public init() { } + + public func assemble(_ container: any DIContainer) { + container.register(WidgetSyncEventBus.self) { + WidgetSyncEventBusImpl() + } + container.register(WidgetSyncEventHandler.self) { + WidgetSyncEventHandler( + eventBus: container.resolve(WidgetSyncEventBus.self), + repository: container.resolve(WidgetTodoSnapshotRepository.self), + snapshotUpdater: container.resolve(WidgetSnapshotUpdater.self) + ) + } + container.register(WidgetSessionSyncHandler.self) { + WidgetSessionSyncHandler( + authService: container.resolve(AuthService.self), + widgetSyncEventBus: container.resolve(WidgetSyncEventBus.self) + ) + } + } +} diff --git a/Application/DevLogData/Sources/Widget/WidgetSyncEventBusImpl.swift b/Application/DevLogWidget/Sources/Widget/WidgetSyncEventBusImpl.swift similarity index 92% rename from Application/DevLogData/Sources/Widget/WidgetSyncEventBusImpl.swift rename to Application/DevLogWidget/Sources/Widget/WidgetSyncEventBusImpl.swift index 3031036f..48abc23f 100644 --- a/Application/DevLogData/Sources/Widget/WidgetSyncEventBusImpl.swift +++ b/Application/DevLogWidget/Sources/Widget/WidgetSyncEventBusImpl.swift @@ -1,11 +1,12 @@ // // WidgetSyncEventBusImpl.swift -// DevLogData +// DevLogWidget // // Created by opfic on 4/30/26. // import Combine +import DevLogData public final class WidgetSyncEventBusImpl: WidgetSyncEventBus { private let subject = PassthroughSubject() diff --git a/Application/DevLogData/Sources/Widget/WidgetSyncEventHandler.swift b/Application/DevLogWidget/Sources/Widget/WidgetSyncEventHandler.swift similarity index 74% rename from Application/DevLogData/Sources/Widget/WidgetSyncEventHandler.swift rename to Application/DevLogWidget/Sources/Widget/WidgetSyncEventHandler.swift index e23f8990..39a7b1ec 100644 --- a/Application/DevLogData/Sources/Widget/WidgetSyncEventHandler.swift +++ b/Application/DevLogWidget/Sources/Widget/WidgetSyncEventHandler.swift @@ -1,6 +1,6 @@ // // WidgetSyncEventHandler.swift -// DevLogData +// DevLogWidget // // Created by opfic on 4/30/26. // @@ -8,10 +8,10 @@ import Combine import Foundation import DevLogCore -import DevLogDomain +import DevLogData public final class WidgetSyncEventHandler { - private let repository: TodoRepository + private let repository: WidgetTodoSnapshotRepository private let snapshotUpdater: WidgetSnapshotUpdater private let pageSize = 100 private let logger = Logger(category: "WidgetSyncEventHandler") @@ -19,7 +19,7 @@ public final class WidgetSyncEventHandler { public init( eventBus: WidgetSyncEventBus, - repository: TodoRepository, + repository: WidgetTodoSnapshotRepository, snapshotUpdater: WidgetSnapshotUpdater ) { self.repository = repository @@ -64,7 +64,7 @@ private extension WidgetSyncEventHandler { todosWithoutDueDate ) snapshotUpdater.updateTodaySnapshot( - todos: (todayTodosWithDueDate + todayTodosWithoutDueDate).map(WidgetTodoSnapshot.fromDomain), + todos: todayTodosWithDueDate + todayTodosWithoutDueDate, now: now ) } catch { @@ -103,9 +103,9 @@ private extension WidgetSyncEventHandler { deletedTodos ) snapshotUpdater.updateHeatmapSnapshot( - createdTodos: createdTodoItems.map(WidgetTodoSnapshot.fromDomain), - completedTodos: completedTodoItems.map(WidgetTodoSnapshot.fromDomain), - deletedTodos: deletedTodoItems.map(WidgetTodoSnapshot.fromDomain), + createdTodos: createdTodoItems, + completedTodos: completedTodoItems, + deletedTodos: deletedTodoItems, quarterStart: quarterStart, now: now ) @@ -121,39 +121,25 @@ private extension WidgetSyncEventHandler { dueDateFilter: TodoQuery.DueDateFilter, sortTarget: TodoQuery.SortTarget, sortOrder: TodoQuery.SortOrder - ) async throws -> [Todo] { - let todoPage = try await repository.fetchTodos( - TodoQuery( - completionFilter: .incomplete, - dueDateFilter: dueDateFilter, - sortTarget: sortTarget, - sortOrder: sortOrder, - pageSize: pageSize, - fetchAllPages: true - ), - cursor: nil + ) async throws -> [WidgetTodoSnapshot] { + try await repository.fetchTodayTodos( + dueDateFilter: dueDateFilter, + sortTarget: sortTarget, + sortOrder: sortOrder, + pageSize: pageSize ) - - return todoPage.items } func fetchHeatmapTodos( sortTarget: TodoQuery.SortTarget, quarterStart: Date, nextQuarterStart: Date - ) async throws -> [Todo] { - let todoPage = try await repository.fetchTodos( - TodoQuery( - sortDateFrom: quarterStart, - sortDateTo: nextQuarterStart, - includesDeleted: true, - sortTarget: sortTarget, - pageSize: pageSize, - fetchAllPages: true - ), - cursor: nil + ) async throws -> [WidgetTodoSnapshot] { + try await repository.fetchHeatmapTodos( + sortTarget: sortTarget, + quarterStart: quarterStart, + nextQuarterStart: nextQuarterStart, + pageSize: pageSize ) - - return todoPage.items } } diff --git a/Application/DevLogApp/Tests/App/WidgetSessionSyncHandlerTests.swift b/Application/DevLogWidget/Tests/Handler/WidgetSessionSyncHandlerTests.swift similarity index 98% rename from Application/DevLogApp/Tests/App/WidgetSessionSyncHandlerTests.swift rename to Application/DevLogWidget/Tests/Handler/WidgetSessionSyncHandlerTests.swift index 4bcbd59e..af3b4f9a 100644 --- a/Application/DevLogApp/Tests/App/WidgetSessionSyncHandlerTests.swift +++ b/Application/DevLogWidget/Tests/Handler/WidgetSessionSyncHandlerTests.swift @@ -1,6 +1,6 @@ // // WidgetSessionSyncHandlerTests.swift -// DevLogAppTests +// DevLogWidgetTests // // Created by opfic on 6/1/26. // @@ -9,7 +9,7 @@ import Combine import Foundation import Testing import DevLogData -@testable import DevLogApp +@testable import DevLogWidget struct WidgetSessionSyncHandlerTests { @Test("로그인 세션 true 첫 진입에서만 위젯 초기 동기화를 요청한다") diff --git a/Application/DevLogData/Tests/Widget/WidgetSyncEventBusTests.swift b/Application/DevLogWidget/Tests/Widget/WidgetSyncEventBusTests.swift similarity index 90% rename from Application/DevLogData/Tests/Widget/WidgetSyncEventBusTests.swift rename to Application/DevLogWidget/Tests/Widget/WidgetSyncEventBusTests.swift index b85610f9..188aff90 100644 --- a/Application/DevLogData/Tests/Widget/WidgetSyncEventBusTests.swift +++ b/Application/DevLogWidget/Tests/Widget/WidgetSyncEventBusTests.swift @@ -1,13 +1,14 @@ // // WidgetSyncEventBusTests.swift -// DevLogDataTests +// DevLogWidgetTests // // Created by opfic on 4/30/26. // import Combine import Testing -@testable import DevLogData +import DevLogData +@testable import DevLogWidget struct WidgetSyncEventBusTests { @Test("WidgetSyncEventBus는 발행된 이벤트를 관찰자에게 전달한다") diff --git a/Application/DevLogData/Tests/Widget/WidgetSyncEventHandlerTests.swift b/Application/DevLogWidget/Tests/Widget/WidgetSyncEventHandlerTests.swift similarity index 72% rename from Application/DevLogData/Tests/Widget/WidgetSyncEventHandlerTests.swift rename to Application/DevLogWidget/Tests/Widget/WidgetSyncEventHandlerTests.swift index 3a716d6e..b7f729e3 100644 --- a/Application/DevLogData/Tests/Widget/WidgetSyncEventHandlerTests.swift +++ b/Application/DevLogWidget/Tests/Widget/WidgetSyncEventHandlerTests.swift @@ -1,6 +1,6 @@ // // WidgetSyncEventHandlerTests.swift -// DevLogDataTests +// DevLogWidgetTests // // Created by opfic on 4/30/26. // @@ -8,8 +8,8 @@ import Foundation import Testing import DevLogCore -import DevLogDomain -@testable import DevLogData +import DevLogData +@testable import DevLogWidget struct WidgetSyncEventHandlerTests { @Test("위젯 동기화 요청 이벤트는 Today와 Heatmap 스냅샷을 갱신한다") @@ -17,9 +17,9 @@ struct WidgetSyncEventHandlerTests { let calendar = Calendar.current let now = Date() let quarterStart = calendar.startOfQuarter(for: now) - let fixture = makeFixture(calendar: calendar) + let fixture = makeFixture() - await fixture.todoRepository.setTodos( + await fixture.repository.setTodos( todayTodosWithDueDate: [ makeTodo(id: "today", createdAt: now, dueDate: now) ], @@ -42,15 +42,15 @@ struct WidgetSyncEventHandlerTests { let todayUpdates = fixture.snapshotUpdater.todayUpdates let heatmapUpdates = fixture.snapshotUpdater.heatmapUpdates - let queries = await fixture.todoRepository.calledQueries() + let calls = await fixture.repository.calledCalls() #expect(todayUpdates.first?.todos.map(\.id) == ["today"]) #expect(heatmapUpdates.first?.createdTodos.map(\.id) == ["created"]) #expect(heatmapUpdates.first?.completedTodos.map(\.id) == ["completed"]) #expect(heatmapUpdates.first?.deletedTodos.map(\.id) == ["deleted"]) #expect(todayUpdates.first?.now == heatmapUpdates.first?.now) - #expect(queries.count == 5) - #expect(Set(queries.map(\.sortTarget)) == Set([ + #expect(calls.count == 5) + #expect(Set(calls.map(\.sortTarget)) == Set([ .dueDate, .updatedAt, .createdAt, @@ -65,9 +65,9 @@ struct WidgetSyncEventHandlerTests { let calendar = Calendar.current let now = Date() let quarterStart = calendar.startOfQuarter(for: now) - let fixture = makeFixture(calendar: calendar) + let fixture = makeFixture() - await fixture.todoRepository.setTodos( + await fixture.repository.setTodos( createdTodos: [ makeTodo(id: "created", createdAt: now) ], @@ -78,7 +78,7 @@ struct WidgetSyncEventHandlerTests { makeTodo(id: "deleted", createdAt: quarterStart, deletedAt: now) ] ) - await fixture.todoRepository.setFailingSortTargets([.dueDate]) + await fixture.repository.setFailingSortTargets([.dueDate]) fixture.bus.publish(.syncRequested) @@ -95,16 +95,15 @@ struct WidgetSyncEventHandlerTests { @Test("Heatmap 스냅샷 조회 실패는 Today 스냅샷 갱신을 막지 않는다") func heatmap_스냅샷_조회_실패는_today_스냅샷_갱신을_막지_않는다() async throws { - let calendar = Calendar.current let now = Date() - let fixture = makeFixture(calendar: calendar) + let fixture = makeFixture() - await fixture.todoRepository.setTodos( + await fixture.repository.setTodos( todayTodosWithDueDate: [ makeTodo(id: "today", createdAt: now, dueDate: now) ] ) - await fixture.todoRepository.setFailingSortTargets([.createdAt]) + await fixture.repository.setFailingSortTargets([.createdAt]) fixture.bus.publish(.syncRequested) @@ -117,19 +116,19 @@ struct WidgetSyncEventHandlerTests { _ = fixture.handler } - private func makeFixture(calendar: Calendar) -> Fixture { + private func makeFixture() -> Fixture { let bus = WidgetSyncEventBusImpl() - let todoRepository = WidgetSyncTodoRepositorySpy() + let repository = WidgetTodoSnapshotRepositorySpy() let snapshotUpdater = WidgetSnapshotUpdaterSpy() let handler = WidgetSyncEventHandler( eventBus: bus, - repository: todoRepository, + repository: repository, snapshotUpdater: snapshotUpdater ) return Fixture( bus: bus, - todoRepository: todoRepository, + repository: repository, snapshotUpdater: snapshotUpdater, handler: handler ) @@ -141,49 +140,46 @@ struct WidgetSyncEventHandlerTests { completedAt: Date? = nil, deletedAt: Date? = nil, dueDate: Date? = nil - ) -> Todo { - Todo( + ) -> WidgetTodoSnapshot { + WidgetTodoSnapshot( id: id, - isPinned: false, - isCompleted: completedAt != nil, - isChecked: false, number: 1, title: id, - content: "", + isPinned: false, createdAt: createdAt, - updatedAt: createdAt, completedAt: completedAt, deletedAt: deletedAt, - dueDate: dueDate, - tags: [], - category: .system(.feature) + dueDate: dueDate ) } - } private struct Fixture { let bus: WidgetSyncEventBusImpl - let todoRepository: WidgetSyncTodoRepositorySpy + let repository: WidgetTodoSnapshotRepositorySpy let snapshotUpdater: WidgetSnapshotUpdaterSpy let handler: WidgetSyncEventHandler } -private actor WidgetSyncTodoRepositorySpy: TodoRepository { - private var queries = [TodoQuery]() +private actor WidgetTodoSnapshotRepositorySpy: WidgetTodoSnapshotRepository { + struct Call { + let sortTarget: TodoQuery.SortTarget + } + + private var calls = [Call]() private var failingSortTargets = Set() - private var todayTodosWithDueDate = [Todo]() - private var todayTodosWithoutDueDate = [Todo]() - private var createdTodos = [Todo]() - private var completedTodos = [Todo]() - private var deletedTodos = [Todo]() + private var todayTodosWithDueDate = [WidgetTodoSnapshot]() + private var todayTodosWithoutDueDate = [WidgetTodoSnapshot]() + private var createdTodos = [WidgetTodoSnapshot]() + private var completedTodos = [WidgetTodoSnapshot]() + private var deletedTodos = [WidgetTodoSnapshot]() func setTodos( - todayTodosWithDueDate: [Todo] = [], - todayTodosWithoutDueDate: [Todo] = [], - createdTodos: [Todo] = [], - completedTodos: [Todo] = [], - deletedTodos: [Todo] = [] + todayTodosWithDueDate: [WidgetTodoSnapshot] = [], + todayTodosWithoutDueDate: [WidgetTodoSnapshot] = [], + createdTodos: [WidgetTodoSnapshot] = [], + completedTodos: [WidgetTodoSnapshot] = [], + deletedTodos: [WidgetTodoSnapshot] = [] ) { self.todayTodosWithDueDate = todayTodosWithDueDate self.todayTodosWithoutDueDate = todayTodosWithoutDueDate @@ -196,56 +192,54 @@ private actor WidgetSyncTodoRepositorySpy: TodoRepository { self.failingSortTargets = failingSortTargets } - func fetchTodos(_ query: TodoQuery, cursor: TodoCursor?) async throws -> TodoPage { - queries.append(query) + func fetchTodayTodos( + dueDateFilter: TodoQuery.DueDateFilter, + sortTarget: TodoQuery.SortTarget, + sortOrder: TodoQuery.SortOrder, + pageSize: Int + ) async throws -> [WidgetTodoSnapshot] { + calls.append(Call(sortTarget: sortTarget)) - if failingSortTargets.contains(query.sortTarget) { - throw WidgetSyncTodoRepositorySpyError.fetchTodosFailed + if failingSortTargets.contains(sortTarget) { + throw WidgetTodoSnapshotRepositorySpyError.fetchTodosFailed } - let items: [Todo] - switch query.sortTarget { + switch sortTarget { case .dueDate: - items = todayTodosWithDueDate + return todayTodosWithDueDate case .updatedAt: - items = todayTodosWithoutDueDate - case .createdAt: - items = createdTodos - case .completedAt: - items = completedTodos - case .deletedAt: - items = deletedTodos + return todayTodosWithoutDueDate + case .createdAt, .completedAt, .deletedAt: + throw WidgetTodoSnapshotRepositorySpyError.unexpectedCall } - - return TodoPage(items: items, nextCursor: nil) - } - - func fetchTodo(_ todoId: String) async throws -> Todo { - throw WidgetSyncTodoRepositorySpyError.unexpectedCall } - func fetchReferences(_ numbers: [Int]) async throws -> [Int: TodoReference] { - throw WidgetSyncTodoRepositorySpyError.unexpectedCall - } - - func upsertTodo(_ todo: Todo) async throws { - throw WidgetSyncTodoRepositorySpyError.unexpectedCall - } - - func upsertTodo(_ todoDraft: TodoDraft) async throws { - throw WidgetSyncTodoRepositorySpyError.unexpectedCall - } + func fetchHeatmapTodos( + sortTarget: TodoQuery.SortTarget, + quarterStart: Date, + nextQuarterStart: Date, + pageSize: Int + ) async throws -> [WidgetTodoSnapshot] { + calls.append(Call(sortTarget: sortTarget)) - func deleteTodo(_ todoId: String) async throws { - throw WidgetSyncTodoRepositorySpyError.unexpectedCall - } + if failingSortTargets.contains(sortTarget) { + throw WidgetTodoSnapshotRepositorySpyError.fetchTodosFailed + } - func undoDeleteTodo(_ todoId: String) async throws { - throw WidgetSyncTodoRepositorySpyError.unexpectedCall + switch sortTarget { + case .createdAt: + return createdTodos + case .completedAt: + return completedTodos + case .deletedAt: + return deletedTodos + case .dueDate, .updatedAt: + throw WidgetTodoSnapshotRepositorySpyError.unexpectedCall + } } - func calledQueries() -> [TodoQuery] { - queries + func calledCalls() -> [Call] { + calls } } @@ -353,7 +347,7 @@ private final class WidgetSnapshotUpdaterSpy: WidgetSnapshotUpdater { } } -private enum WidgetSyncTodoRepositorySpyError: Error { +private enum WidgetTodoSnapshotRepositorySpyError: Error { case fetchTodosFailed case unexpectedCall } From 67938f0729056e36c1c827ce8dc2afc07dbb9ae8 Mon Sep 17 00:00:00 2001 From: opficdev <162981733+opficdev@users.noreply.github.com> Date: Mon, 8 Jun 2026 23:15:48 +0900 Subject: [PATCH 4/6] =?UTF-8?q?docs:=20=EC=9C=84=EC=A0=AF=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EC=95=84=ED=82=A4=ED=85=8D=EC=B2=98=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=20=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 464d0bd4..50b08c14 100644 --- a/README.md +++ b/README.md @@ -221,7 +221,8 @@ SwiftUI_DevLog/ │ ├── DevLogData/ # Repository 구현, DTO, Mapper, Data 계층 Protocol │ ├── DevLogInfra/ # Firebase, 소셜 로그인, 네트워크, 메타데이터 서비스 구현 │ ├── DevLogPersistence/ # UserDefaults, 이미지 저장소, 위젯 스냅샷 영속성 처리 -│ └── DevLogPresentation/ # SwiftUI 화면, ViewModel, Store, Coordinator +│ ├── DevLogPresentation/ # SwiftUI 화면, ViewModel, Store, Coordinator +│ └── DevLogWidget/ # 앱-위젯 브릿지, 위젯 동기화 이벤트 및 핸들러 ├── Widget/ │ ├── DevLogWidgetCore/ # 위젯 스냅샷 모델, Factory, App Group 상수 │ └── DevLogWidgetExtension/ # WidgetKit UI, Provider, Timeline From c5f017ce96b55c7f6daa595878bcbaf7c369fb3c Mon Sep 17 00:00:00 2001 From: opficdev <162981733+opficdev@users.noreply.github.com> Date: Mon, 8 Jun 2026 23:17:55 +0900 Subject: [PATCH 5/6] =?UTF-8?q?ci:=20DevLogWidget=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20scheme=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f387d66e..81c2114a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -224,8 +224,8 @@ jobs: schemes: "DevLogDomain DevLogData" - name: Persistence-Presentation schemes: "DevLogPersistence DevLogPresentation" - - name: WidgetCore - schemes: "DevLogWidgetCore" + - name: Widget + schemes: "DevLogWidget DevLogWidgetCore" steps: - uses: actions/checkout@v5 From 334ecb3e9ec7895a1ff65f343297bbe4d5bddb7f Mon Sep 17 00:00:00 2001 From: opficdev <162981733+opficdev@users.noreply.github.com> Date: Mon, 8 Jun 2026 23:22:10 +0900 Subject: [PATCH 6/6] =?UTF-8?q?docs:=20=EC=95=B1=20=EC=95=84=ED=82=A4?= =?UTF-8?q?=ED=85=8D=EC=B3=90=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++---------- docs/graph.png | Bin 0 -> 93588 bytes 2 files changed, 2 insertions(+), 10 deletions(-) create mode 100644 docs/graph.png diff --git a/README.md b/README.md index 50b08c14..31a5097a 100644 --- a/README.md +++ b/README.md @@ -59,11 +59,11 @@ MVVM을 기반으로 하되, ViewModel 상태 관리에는 MVI 형태의 단방 - + - - - - - -
- App Architecture + Tuist Module Graph
앱 아키텍처Tuist 모듈 의존성 그래프
@@ -73,14 +73,6 @@ MVVM을 기반으로 하되, ViewModel 상태 관리에는 MVI 형태의 단방
StorePattern 프로토콜
- Widget Architecture -
위젯 데이터 아키텍처
## 주요 기능 diff --git a/docs/graph.png b/docs/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2371b92b96f91cec3a58312e284b548a4a0b4b1d GIT binary patch literal 93588 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ΜFz4;?^3-6UjpLA@=nbbte>FcfCmld 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 M_8DnsYn{6MKZB^mEC2ui literal 0 HcmV?d00001