From f17dedda200988eb5d9c2b65c5153f5d2550102a Mon Sep 17 00:00:00 2001 From: Klaus Date: Mon, 13 Apr 2026 11:23:47 +0900 Subject: [PATCH] =?UTF-8?q?docs(agent-assignment):=20=EC=86=8C=EC=86=8D=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=81=20UTC=20=EB=B3=80=ED=99=98=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=20=EA=B8=B0=EB=A1=9D=EC=9D=84=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...60413_에이전트크리에이터소속시간UTC변환.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/20260413_에이전트크리에이터소속시간UTC변환.md diff --git a/docs/20260413_에이전트크리에이터소속시간UTC변환.md b/docs/20260413_에이전트크리에이터소속시간UTC변환.md new file mode 100644 index 00000000..16ea3af8 --- /dev/null +++ b/docs/20260413_에이전트크리에이터소속시간UTC변환.md @@ -0,0 +1,35 @@ +## 작업 개요 + +- [x] `AdminAgentCreatorService`의 소속 등록 시 `assignedAt` 입력값을 한국 시간에서 UTC로 변환해 저장한다. +- [x] `AdminAgentCreatorService`의 소속 해제 시 `unassignedAt` 입력값을 한국 시간에서 UTC로 변환해 검증 후 저장한다. +- [x] `AdminAgentCreatorServiceTest`에 한국 시간 입력이 UTC로 저장되는 회귀 테스트를 추가한다. +- [x] 변경 파일 진단과 Gradle 검증(`test`, `ktlintCheck`)을 수행하고 결과를 기록한다. +- [x] `LocalDateTimeExtensions`에 타임존 입력 기반 UTC 변환 확장함수를 추가하고 기본 타임존을 KST로 둔다. +- [x] `AdminAgentCreatorService`의 시간 변환을 확장함수 호출로 리팩터링한다. +- [x] 확장함수 테스트와 관련 서비스 테스트를 다시 검증하고 기록한다. + +--- + +## 검증 기록 + +### 1차 구현 + +- 무엇을: 관리자 에이전트-크리에이터 소속 등록/해제 시각의 UTC 저장 정합성 보정. +- 왜: 요청 시각은 한국 시간 기준인데 현재 DB에는 변환 없이 그대로 저장되어 실제 저장 기준과 맞지 않음. +- 어떻게: + - `AdminAgentCreatorServiceTest`에 등록 저장값 UTC 변환, 해제 저장값 UTC 변환, 해제 시각 비교 UTC 기준 검증 테스트를 추가했다. + - `AdminAgentCreatorService`에서 `assignedAt`/`unassignedAt`를 저장 및 비교 전에 `Asia/Seoul -> UTC`로 변환하도록 수정했다. + - `lsp_diagnostics` 실행: `.kt` 확장자용 LSP 서버 미설정으로 도구 진단 불가. + - `./gradlew test --tests "kr.co.vividnext.sodalive.admin.partner.agent.assignment.AdminAgentCreatorServiceTest"` 실행: 성공(BUILD SUCCESSFUL). + - `./gradlew ktlintCheck` 실행: 성공(BUILD SUCCESSFUL). + +### 2차 수정 + +- 무엇을: `Asia/Seoul -> UTC` 변환 책임을 `LocalDateTime` 확장함수로 이동하고 서비스는 그 확장함수를 사용하도록 리팩터링. +- 왜: 서비스 레이어의 타임존 변환 중복을 줄이고, 동일한 변환 규칙을 재사용 가능한 확장함수로 통일하기 위함. +- 어떻게: + - `LocalDateTimeExtensionsTest`에 기본 KST 변환과 사용자 지정 타임존 변환 테스트를 먼저 추가했고, 확장함수 부재 상태에서 실패함을 확인했다. + - `LocalDateTimeExtensions`에 `convertToUtc(timeZone: ZoneId = Asia/Seoul)` 확장함수를 추가했다. + - `AdminAgentCreatorService`는 내부 변환 함수를 제거하고 `request.assignedAt.convertToUtc()` / `request.unassignedAt.convertToUtc()`를 사용하도록 수정했다. + - `./gradlew test --tests "kr.co.vividnext.sodalive.extensions.LocalDateTimeExtensionsTest" --tests "kr.co.vividnext.sodalive.admin.partner.agent.assignment.AdminAgentCreatorServiceTest"` 실행: 성공(BUILD SUCCESSFUL). + - `./gradlew ktlintCheck` 실행: 성공(BUILD SUCCESSFUL).