docs(aicharacter): 크리에이터 연결 작업 기록을 갱신한다
This commit is contained in:
@@ -159,7 +159,7 @@
|
|||||||
|
|
||||||
### Phase 3: 로그인 및 DM 차단
|
### 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`
|
- Modify: `src/main/kotlin/kr/co/vividnext/sodalive/member/MemberService.kt`
|
||||||
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/member/MemberServiceTest.kt`
|
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/member/MemberServiceTest.kt`
|
||||||
- RED: `memberKind = AI_CHARACTER`인 Member가 일반 로그인 요청 시 인증 매니저 호출 전에 예외가 발생하는 테스트를 작성한다.
|
- RED: `memberKind = AI_CHARACTER`인 Member가 일반 로그인 요청 시 인증 매니저 호출 전에 예외가 발생하는 테스트를 작성한다.
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.member.MemberServiceTest`
|
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.member.MemberServiceTest`
|
||||||
- Expected: AI 캐릭터 로그인 차단 테스트 PASS.
|
- 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`
|
- 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`
|
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/creator/admin/member/CreatorAdminMemberServiceTest.kt`
|
||||||
- RED: `memberKind = AI_CHARACTER`, `role = CREATOR`인 Member가 크리에이터 관리자 로그인 요청 시 `common.error.bad_credentials` 예외가 발생하는 테스트를 작성한다.
|
- 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`
|
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberServiceTest`
|
||||||
- Expected: PASS.
|
- 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`
|
- 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`
|
- Test: `src/test/kotlin/kr/co/vividnext/sodalive/v2/usercreatorchat/UserCreatorChatServiceIntegrationTest.kt`
|
||||||
- RED: `shouldRejectCreateRoomWhenCreatorIsAiCharacterMember` 테스트를 추가한다.
|
- RED: 아래 테스트를 추가한다.
|
||||||
|
- `shouldRejectCreateRoomWhenCreatorIsAiCharacterMember`
|
||||||
|
- `shouldRejectSendTextMessageWhenOpponentIsAiCharacterMember`
|
||||||
- `memberRepository.findById(creatorId)`는 `role = CREATOR`, `memberKind = AI_CHARACTER`인 Member를 반환한다.
|
- `memberRepository.findById(creatorId)`는 `role = CREATOR`, `memberKind = AI_CHARACTER`인 Member를 반환한다.
|
||||||
- `service.createOrGetRoom(user, creatorId)`는 예외를 던진다.
|
- `service.createOrGetRoom(user, creatorId)`는 예외를 던진다.
|
||||||
- `roomRepository.save`와 `participantRepository.save`는 호출되지 않는다.
|
- `roomRepository.save`와 `participantRepository.save`는 호출되지 않는다.
|
||||||
|
- 기존 방에 AI 캐릭터용 Member가 참여한 상태에서 `sendTextMessage`는 예외를 던진다.
|
||||||
|
- `messageRepository.save`와 푸시 발송 경로는 호출되지 않는다.
|
||||||
- GREEN: `validateRecipient` 또는 `createOrGetRoom`에서 recipient가 AI 캐릭터용 Member이면 차단한다.
|
- GREEN: `validateRecipient` 또는 `createOrGetRoom`에서 recipient가 AI 캐릭터용 Member이면 차단한다.
|
||||||
```kotlin
|
```kotlin
|
||||||
if (recipient.memberKind == MemberKind.AI_CHARACTER) {
|
if (recipient.memberKind == MemberKind.AI_CHARACTER) {
|
||||||
@@ -204,14 +208,14 @@
|
|||||||
```
|
```
|
||||||
- REFACTOR: 기존 비활성/본인/차단 검증 메시지와 우선순위를 불필요하게 바꾸지 않는다.
|
- REFACTOR: 기존 비활성/본인/차단 검증 메시지와 우선순위를 불필요하게 바꾸지 않는다.
|
||||||
- Verify:
|
- Verify:
|
||||||
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest`
|
- Run: `./gradlew test --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceIntegrationTest --tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceTest`
|
||||||
- Expected: 기존 DM 테스트와 신규 차단 테스트 PASS.
|
- Expected: 기존 DM 테스트와 신규 생성/발송 차단 테스트 PASS.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Phase 4: 회귀 검증 및 문서 정리
|
### Phase 4: 회귀 검증 및 문서 정리
|
||||||
|
|
||||||
- [ ] **Task 4.1: 핵심 단위 테스트 실행**
|
- [x] **Task 4.1: 핵심 단위 테스트 실행**
|
||||||
- Files: 변경 없음
|
- Files: 변경 없음
|
||||||
- TDD 예외 사유: 구현 완료 후 회귀 검증 task다.
|
- TDD 예외 사유: 구현 완료 후 회귀 검증 task다.
|
||||||
- 대체 검증 방법: 관련 단일 테스트를 모두 실행한다.
|
- 대체 검증 방법: 관련 단일 테스트를 모두 실행한다.
|
||||||
@@ -219,13 +223,15 @@
|
|||||||
```bash
|
```bash
|
||||||
./gradlew test \
|
./gradlew test \
|
||||||
--tests kr.co.vividnext.sodalive.chat.character.service.ChatCharacterCreatorMemberServiceTest \
|
--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.UserCreatorChatServiceTest \
|
||||||
|
--tests kr.co.vividnext.sodalive.v2.usercreatorchat.UserCreatorChatServiceIntegrationTest \
|
||||||
--tests kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberServiceTest \
|
--tests kr.co.vividnext.sodalive.creator.admin.member.CreatorAdminMemberServiceTest \
|
||||||
--tests kr.co.vividnext.sodalive.member.MemberServiceTest
|
--tests kr.co.vividnext.sodalive.member.MemberServiceTest
|
||||||
```
|
```
|
||||||
- Expected: PASS.
|
- Expected: PASS.
|
||||||
|
|
||||||
- [ ] **Task 4.2: 정적 검증 및 전체 회귀**
|
- [x] **Task 4.2: 정적 검증 및 전체 회귀**
|
||||||
- Files: 변경 없음
|
- Files: 변경 없음
|
||||||
- TDD 예외 사유: 전체 회귀 검증 task다.
|
- TDD 예외 사유: 전체 회귀 검증 task다.
|
||||||
- 대체 검증 방법: Gradle 테스트와 ktlint를 실행한다.
|
- 대체 검증 방법: Gradle 테스트와 ktlint를 실행한다.
|
||||||
@@ -236,7 +242,7 @@
|
|||||||
```
|
```
|
||||||
- Expected: 두 명령 모두 PASS.
|
- Expected: 두 명령 모두 PASS.
|
||||||
|
|
||||||
- [ ] **Task 4.3: 검증 기록 누적**
|
- [x] **Task 4.3: 검증 기록 누적**
|
||||||
- Modify: `docs/20260611_AI캐릭터_크리에이터기능_최소연결/plan-task.md`
|
- Modify: `docs/20260611_AI캐릭터_크리에이터기능_최소연결/plan-task.md`
|
||||||
- TDD 예외 사유: 문서 기록 task다.
|
- TDD 예외 사유: 문서 기록 task다.
|
||||||
- 대체 검증 방법: 실행한 명령, 목적, 결과를 아래 검증 기록 섹션에 누적한다.
|
- 대체 검증 방법: 실행한 명령, 목적, 결과를 아래 검증 기록 섹션에 누적한다.
|
||||||
@@ -272,3 +278,33 @@
|
|||||||
- `./gradlew ktlintCheck`
|
- `./gradlew ktlintCheck`
|
||||||
- 목적: Phase 2 Kotlin production/test 변경의 ktlint 규칙 준수 확인.
|
- 목적: Phase 2 Kotlin production/test 변경의 ktlint 규칙 준수 확인.
|
||||||
- 결과: `BUILD SUCCESSFUL in 14s`.
|
- 결과: `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`.
|
||||||
|
|||||||
Reference in New Issue
Block a user