diff --git a/docs/layers/domain.md b/docs/layers/domain.md index 29f70b8..f7382e6 100644 --- a/docs/layers/domain.md +++ b/docs/layers/domain.md @@ -21,7 +21,7 @@ value class TaskTitle(val value: String) { } ``` -BC간 공유 VO(MemberId, TaskId 등)는 `common/domain/`에 위치합니다. +BC간 공유 VO(MemberId, GoalId 등)는 `common/domain/`에 위치합니다. ### Command diff --git a/docs/plan/#27-taskid-location-fix/checklist.md b/docs/plan/#27-taskid-location-fix/checklist.md new file mode 100644 index 0000000..c1d337f --- /dev/null +++ b/docs/plan/#27-taskid-location-fix/checklist.md @@ -0,0 +1,10 @@ +# TaskId 위치 수정 검증 체크리스트 + +## 필수 항목 +- [x] 아키텍처 원칙 준수 (common/domain에는 2개 이상 BC에서 사용하는 VO만 배치) +- [x] 레이어 의존성 규칙 위반 없음 +- [x] 모든 테스트 통과 +- [x] 기존 테스트 깨지지 않음 +- [x] common/domain/TaskId.kt 삭제됨 +- [x] task/domain/model/TaskId.kt 생성됨 +- [x] 모든 import 경로 변경됨 diff --git a/docs/plan/#27-taskid-location-fix/plan.md b/docs/plan/#27-taskid-location-fix/plan.md new file mode 100644 index 0000000..709d93b --- /dev/null +++ b/docs/plan/#27-taskid-location-fix/plan.md @@ -0,0 +1,11 @@ +# TaskId 위치 수정 계획 + +> Issue: #27 + +## 단계 + +- [x] 1단계: TaskId를 task/domain/model/로 이동 +- [x] 2단계: common/domain/TaskId.kt 삭제 +- [x] 3단계: 모든 import 경로를 task.domain.model.TaskId로 변경 +- [x] 4단계: domain.md 문서에서 TaskId 공유 VO 언급 제거 +- [x] 5단계: 테스트 통과 확인 diff --git a/src/main/kotlin/kr/io/team/loop/task/domain/model/Task.kt b/src/main/kotlin/kr/io/team/loop/task/domain/model/Task.kt index 43c573c..636c69b 100644 --- a/src/main/kotlin/kr/io/team/loop/task/domain/model/Task.kt +++ b/src/main/kotlin/kr/io/team/loop/task/domain/model/Task.kt @@ -3,7 +3,6 @@ package kr.io.team.loop.task.domain.model import kotlinx.datetime.LocalDate import kr.io.team.loop.common.domain.GoalId import kr.io.team.loop.common.domain.MemberId -import kr.io.team.loop.common.domain.TaskId import java.time.Instant data class Task( diff --git a/src/main/kotlin/kr/io/team/loop/task/domain/model/TaskCommand.kt b/src/main/kotlin/kr/io/team/loop/task/domain/model/TaskCommand.kt index 6447389..18e04b3 100644 --- a/src/main/kotlin/kr/io/team/loop/task/domain/model/TaskCommand.kt +++ b/src/main/kotlin/kr/io/team/loop/task/domain/model/TaskCommand.kt @@ -3,7 +3,6 @@ package kr.io.team.loop.task.domain.model import kotlinx.datetime.LocalDate import kr.io.team.loop.common.domain.GoalId import kr.io.team.loop.common.domain.MemberId -import kr.io.team.loop.common.domain.TaskId sealed interface TaskCommand { data class Create( diff --git a/src/main/kotlin/kr/io/team/loop/common/domain/TaskId.kt b/src/main/kotlin/kr/io/team/loop/task/domain/model/TaskId.kt similarity index 84% rename from src/main/kotlin/kr/io/team/loop/common/domain/TaskId.kt rename to src/main/kotlin/kr/io/team/loop/task/domain/model/TaskId.kt index 9cf23c9..11901f5 100644 --- a/src/main/kotlin/kr/io/team/loop/common/domain/TaskId.kt +++ b/src/main/kotlin/kr/io/team/loop/task/domain/model/TaskId.kt @@ -1,4 +1,4 @@ -package kr.io.team.loop.common.domain +package kr.io.team.loop.task.domain.model import kr.io.team.loop.common.domain.exception.InvalidInputException diff --git a/src/main/kotlin/kr/io/team/loop/task/domain/repository/TaskRepository.kt b/src/main/kotlin/kr/io/team/loop/task/domain/repository/TaskRepository.kt index 2851b99..e7ebf08 100644 --- a/src/main/kotlin/kr/io/team/loop/task/domain/repository/TaskRepository.kt +++ b/src/main/kotlin/kr/io/team/loop/task/domain/repository/TaskRepository.kt @@ -1,9 +1,9 @@ package kr.io.team.loop.task.domain.repository import kr.io.team.loop.common.domain.GoalId -import kr.io.team.loop.common.domain.TaskId import kr.io.team.loop.task.domain.model.Task import kr.io.team.loop.task.domain.model.TaskCommand +import kr.io.team.loop.task.domain.model.TaskId import kr.io.team.loop.task.domain.model.TaskQuery interface TaskRepository { diff --git a/src/main/kotlin/kr/io/team/loop/task/infrastructure/persistence/ExposedTaskRepository.kt b/src/main/kotlin/kr/io/team/loop/task/infrastructure/persistence/ExposedTaskRepository.kt index 9ed50f4..76be321 100644 --- a/src/main/kotlin/kr/io/team/loop/task/infrastructure/persistence/ExposedTaskRepository.kt +++ b/src/main/kotlin/kr/io/team/loop/task/infrastructure/persistence/ExposedTaskRepository.kt @@ -2,9 +2,9 @@ package kr.io.team.loop.task.infrastructure.persistence import kr.io.team.loop.common.domain.GoalId import kr.io.team.loop.common.domain.MemberId -import kr.io.team.loop.common.domain.TaskId import kr.io.team.loop.task.domain.model.Task import kr.io.team.loop.task.domain.model.TaskCommand +import kr.io.team.loop.task.domain.model.TaskId import kr.io.team.loop.task.domain.model.TaskQuery import kr.io.team.loop.task.domain.model.TaskStatus import kr.io.team.loop.task.domain.model.TaskTitle diff --git a/src/main/kotlin/kr/io/team/loop/task/presentation/datafetcher/TaskDataFetcher.kt b/src/main/kotlin/kr/io/team/loop/task/presentation/datafetcher/TaskDataFetcher.kt index 04a113e..8c0cd63 100644 --- a/src/main/kotlin/kr/io/team/loop/task/presentation/datafetcher/TaskDataFetcher.kt +++ b/src/main/kotlin/kr/io/team/loop/task/presentation/datafetcher/TaskDataFetcher.kt @@ -11,10 +11,10 @@ import kr.io.team.loop.codegen.types.UpdateTaskInput import kr.io.team.loop.common.config.Authorize import kr.io.team.loop.common.domain.GoalId import kr.io.team.loop.common.domain.MemberId -import kr.io.team.loop.common.domain.TaskId import kr.io.team.loop.task.application.service.TaskService import kr.io.team.loop.task.domain.model.Task import kr.io.team.loop.task.domain.model.TaskCommand +import kr.io.team.loop.task.domain.model.TaskId import kr.io.team.loop.task.domain.model.TaskQuery import kr.io.team.loop.task.domain.model.TaskStatus import kr.io.team.loop.task.domain.model.TaskTitle diff --git a/src/test/kotlin/kr/io/team/loop/task/application/service/TaskServiceTest.kt b/src/test/kotlin/kr/io/team/loop/task/application/service/TaskServiceTest.kt index 41d0295..e8d92f0 100644 --- a/src/test/kotlin/kr/io/team/loop/task/application/service/TaskServiceTest.kt +++ b/src/test/kotlin/kr/io/team/loop/task/application/service/TaskServiceTest.kt @@ -11,11 +11,11 @@ import io.mockk.verify import kotlinx.datetime.LocalDate import kr.io.team.loop.common.domain.GoalId import kr.io.team.loop.common.domain.MemberId -import kr.io.team.loop.common.domain.TaskId import kr.io.team.loop.common.domain.exception.AccessDeniedException import kr.io.team.loop.common.domain.exception.EntityNotFoundException import kr.io.team.loop.task.domain.model.Task import kr.io.team.loop.task.domain.model.TaskCommand +import kr.io.team.loop.task.domain.model.TaskId import kr.io.team.loop.task.domain.model.TaskQuery import kr.io.team.loop.task.domain.model.TaskStatus import kr.io.team.loop.task.domain.model.TaskTitle diff --git a/src/test/kotlin/kr/io/team/loop/task/domain/model/TaskTest.kt b/src/test/kotlin/kr/io/team/loop/task/domain/model/TaskTest.kt index 41081d3..c96f718 100644 --- a/src/test/kotlin/kr/io/team/loop/task/domain/model/TaskTest.kt +++ b/src/test/kotlin/kr/io/team/loop/task/domain/model/TaskTest.kt @@ -5,7 +5,7 @@ import io.kotest.matchers.shouldBe import kotlinx.datetime.LocalDate import kr.io.team.loop.common.domain.GoalId import kr.io.team.loop.common.domain.MemberId -import kr.io.team.loop.common.domain.TaskId +import kr.io.team.loop.task.domain.model.TaskId import java.time.Instant class TaskTest :