docs(aicharacter): 크리에이터 연결 작업 기록을 갱신한다

This commit is contained in:
2026-06-12 11:40:26 +09:00
parent 5c132c984d
commit a0f0d82b63

View File

@@ -159,7 +159,7 @@
### Phase 3: 로그인 및 DM 차단
- [ ] **Task 3.1: 일반 로그인에서 AI 캐릭터용 Member 차단**
- [x] **Task 3.1: 일반 로그인에서 AI 캐릭터용 Member 차단**
- Modify: `src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt`
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/member/MemberServiceTest.kt`
- RED: `memberKind = AI_CHARACTER`인 Member가 일반 로그인 요청 시 인증 매니저 호출 전에 예외가 발생하는 테스트를 작성한다.
@@ -174,7 +174,7 @@
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.member.MemberServiceTest`
- Expected: AI 캐릭터 로그인 차단 테스트 PASS.
- [ ] **Task 3.2: 크리에이터 관리자 로그인에서 AI 캐릭터용 Member 차단**
- [x] **Task 3.2: 크리에이터 관리자 로그인에서 AI 캐릭터용 Member 차단**
- Modify: `src/main/kotlin/kr/co/vividnext/sodalive/creator/admin/member/CreatorAdminMemberService.kt`
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/creator/admin/member/CreatorAdminMemberServiceTest.kt`
- RED: `memberKind = AI_CHARACTER`, `role = CREATOR`인 Member가 크리에이터 관리자 로그인 요청 시 `common.error.bad_credentials` 예외가 발생하는 테스트를 작성한다.
@@ -189,13 +189,17 @@
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberServiceTest`
- Expected: PASS.
- [ ] **Task 3.3: 유저-크리에이터 DM에서 AI 캐릭터용 Member 차단**
- [x] **Task 3.3: 유저-크리에이터 DM에서 AI 캐릭터용 Member 차단**
- Modify: `src/main/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/service/UserCreatorChatService.kt`
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/UserCreatorChatServiceTest.kt`
- RED: `shouldRejectCreateRoomWhenCreatorIsAiCharacterMember` 테스트를 추가한다.
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/UserCreatorChatServiceIntegrationTest.kt`
- RED: 아래 테스트를 추가한다.
- `shouldRejectCreateRoomWhenCreatorIsAiCharacterMember`
- `shouldRejectSendTextMessageWhenOpponentIsAiCharacterMember`
- `memberRepository.findById(creatorId)`는 `role = CREATOR`, `memberKind = AI_CHARACTER`인 Member를 반환한다.
- `service.createOrGetRoom(user, creatorId)`는 예외를 던진다.
- `roomRepository.save`와 `participantRepository.save`는 호출되지 않는다.
- 기존 방에 AI 캐릭터용 Member가 참여한 상태에서 `sendTextMessage`는 예외를 던진다.
- `messageRepository.save`와 푸시 발송 경로는 호출되지 않는다.
- GREEN: `validateRecipient` 또는 `createOrGetRoom`에서 recipient가 AI 캐릭터용 Member이면 차단한다.
```kotlin
if (recipient.memberKind == MemberKind.AI_CHARACTER) {
@@ -204,14 +208,14 @@
```
- REFACTOR: 기존 비활성/본인/차단 검증 메시지와 우선순위를 불필요하게 바꾸지 않는다.
- Verify:
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest`
- Expected: 기존 DM 테스트와 신규 차단 테스트 PASS.
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceIntegrationTest --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest`
- Expected: 기존 DM 테스트와 신규 생성/발송 차단 테스트 PASS.
---
### Phase 4: 회귀 검증 및 문서 정리
- [ ] **Task 4.1: 핵심 단위 테스트 실행**
- [x] **Task 4.1: 핵심 단위 테스트 실행**
- Files: 변경 없음
- TDD 예외 사유: 구현 완료 후 회귀 검증 task다.
- 대체 검증 방법: 관련 단일 테스트를 모두 실행한다.
@@ -219,13 +223,15 @@
```bash
./gradlew test \
--tests kr.co.vividnext.sodalive.chat.character.service.ChatCharacterCreatorMemberServiceTest \
--tests kr.co.vividnext.sodalive.chat.character.service.ChatCharacterCreatorMemberServiceIntegrationTest \
--tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest \
--tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceIntegrationTest \
--tests kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberServiceTest \
--tests kr.co.vividnext.sodalive.member.MemberServiceTest
```
- Expected: PASS.
- [ ] **Task 4.2: 정적 검증 및 전체 회귀**
- [x] **Task 4.2: 정적 검증 및 전체 회귀**
- Files: 변경 없음
- TDD 예외 사유: 전체 회귀 검증 task다.
- 대체 검증 방법: Gradle 테스트와 ktlint를 실행한다.
@@ -236,7 +242,7 @@
```
- Expected: 두 명령 모두 PASS.
- [ ] **Task 4.3: 검증 기록 누적**
- [x] **Task 4.3: 검증 기록 누적**
- Modify: `docs/20260611_AI캐릭터_크리에이터기능_최소연결/plan-task.md`
- TDD 예외 사유: 문서 기록 task다.
- 대체 검증 방법: 실행한 명령, 목적, 결과를 아래 검증 기록 섹션에 누적한다.
@@ -272,3 +278,33 @@
- `./gradlew ktlintCheck`
- 목적: Phase 2 Kotlin production/test 변경의 ktlint 규칙 준수 확인.
- 결과: `BUILD SUCCESSFUL in 14s`.
- `./gradlew test --tests kr.co.vividnext.sodalive.member.MemberServiceTest --tests kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberServiceTest --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest`
- 목적: Phase 3 RED 검증. AI 캐릭터용 Member의 일반 로그인, 크리에이터 관리자 로그인, 유저-크리에이터 DM 방 생성이 기존 코드에서 차단되지 않음을 확인.
- 결과: `CreatorAdminMemberServiceTest`, `MemberServiceTest`, `UserCreatorChatServiceTest`의 신규 차단 테스트 3건 실패.
- `./gradlew test --tests kr.co.vividnext.sodalive.member.MemberServiceTest --tests kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberServiceTest --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest`
- 목적: Phase 3 GREEN 검증. 로그인/DM 차단 정책과 기존 DM 회귀 테스트 통과 확인.
- 결과: `BUILD SUCCESSFUL in 10s`.
- `./gradlew ktlintCheck`
- 목적: Phase 3/4 Kotlin production/test 및 문서 변경 전 정적 규칙 준수 확인.
- 결과: `BUILD SUCCESSFUL in 20s`.
- `./gradlew test`
- 목적: Phase 4 전체 회귀 테스트 확인.
- 결과: `BUILD SUCCESSFUL in 1m 14s`.
- `./gradlew test --tests kr.co.vividnext.sodalive.chat.character.service.ChatCharacterCreatorMemberServiceTest --tests kr.co.vividnext.sodalive.chat.character.service.ChatCharacterCreatorMemberServiceIntegrationTest --tests kr.co.vividnext.sodalive.member.MemberServiceTest --tests kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberServiceTest --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceIntegrationTest --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest`
- 목적: 계획 진행 중 추가한 테스트의 mock 사용 적합성 재검토 후, 저장소/JPA 관계/로그인/DM 정책 검증을 Spring 컨텍스트 + H2 repository 기반 테스트로 전환했는지 확인.
- 결과: `BUILD SUCCESSFUL in 34s`.
- `./gradlew ktlintCheck`
- 목적: 계획 관련 테스트 리팩터링 후 ktlint 규칙 준수 확인.
- 결과: `BUILD SUCCESSFUL in 10s`.
- `./gradlew test`
- 목적: 계획 관련 테스트 리팩터링 후 전체 회귀 테스트 확인.
- 결과: `BUILD SUCCESSFUL in 1m 20s`.
- `./gradlew test --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceIntegrationTest --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest`
- 목적: 리뷰 보완. AI 캐릭터용 Member가 참여한 기존 DM 방에서 `sendTextMessage`도 `message.error.recipient_not_found`로 차단되고 메시지가 저장되지 않는지 확인.
- 결과: `BUILD SUCCESSFUL in 31s`.
- `./gradlew ktlintCheck`
- 목적: 리뷰 보완 후 ktlint 규칙 준수 확인.
- 결과: `BUILD SUCCESSFUL in 8s`.
- `./gradlew test`
- 목적: 리뷰 보완 후 전체 회귀 테스트 확인.
- 결과: `BUILD SUCCESSFUL in 1m 15s`.