Skip to content

feat: 플랜 구분 제거 · 사용 한도 UsageLimits로 통합 (#60) - #61

Merged
chjpooh2002 merged 4 commits into
developfrom
feat/60-remove-plan
Nov 2, 2026
Merged

chjpooh2002 merged 4 commits into
developfrom
feat/60-remove-plan

Conversation

@chjpooh2002

Copy link
Copy Markdown
Contributor

관련 이슈

작업 내용

명세·ERD v0.8(#58)에 맞춰 플랜 구분을 코드에서 없앴습니다. 템플릿 한도는 모든 사용자 50개(휴지통 제외), AI 톤 교정은 모든 사용자 하루 5회(KST)입니다.

  • 한도 숫자를 global/policy/UsageLimits 상수(TEMPLATE_LIMIT = 50, AI_TONE_DAILY_LIMIT = 5) 한 곳으로 모음
  • plan 도메인(PlanQueryService, PlanResult)과 테스트 삭제
  • TemplateCommandService: 생성·갤러리 저장의 한도 검사를 상수로 바꿈. lockUser → 개수 검사 순서는 그대로
  • AiToneUsageQueryService: 상수 한도 사용. AiToneUsageResult.available 삭제 (명세 6번에서 aiTone.available 삭제)
  • AiToneUsageCommandService.reserve(userId, limit) → reserve(userId): 한도를 안에서 상수로 씀
  • user: Plan·TemplateSort 열거형, User.planOverride·templateSort, UserQueryService.findPlanOverride 삭제
  • 마이그레이션 V202611021541__drop_users_plan_override_and_template_sort.sql 추가 (기존 init 파일은 고치지 않음)
  • 개발용 시드: plan_override 제거, 1·2번 모두 일반 회원(user1@·user2@sniptext.local)
  • CLAUDE.md의 플랜 관련 내용 정리
  • 설정 API(7번) 삭제와 한도 50 반영: CLAUDE.md user 설명에서 "설정" 제거, PR 템플릿의 한도 경계 예시를 49→50·50→51로 수정

명세와 달라진 점

없음

테스트

  • 템플릿 한도 경계: 49개에서 생성 성공, 50개에서 TEMPLATE403_1 (생성 단위·API·갤러리 저장 통합 테스트)
  • 동시 요청: 49개 상태에서 생성·갤러리 저장 2건이 동시에 와도 최종 50개
  • 휴지통 템플릿은 한도에 세지 않음
  • AI 사용량 조회: limit 5 (0/5·4/5·5/5, 어제 미포함, 리셋 시각)
  • AI 선점: 4회 → 5회, 5회에서 AI429_1, 동시 선점
  • 플랜 관련 테스트 삭제: PlanQueryServiceTest, UserQueryServiceTest(테스트가 모두 findPlanOverride용이라 파일째), PRO 한도·플랜 변경 테스트
  • ./gradlew build 통과

확인 체크리스트

  • ./gradlew build 통과
  • 테스트 포함
  • 변경 400줄 안팎 (+201 / −517, 늘어난 쪽은 201줄이고 나머지는 삭제)
  • 병합된 마이그레이션 수정 안 함
  • 비밀 값·개인정보 없음
  • global 공통 코드를 바꿨다면 디스코드에 공유함 (global/policy 패키지 새로 추가)

리뷰어에게

  • [질문] 한도 숫자를 global/policy/UsageLimits 상수로 둔 위치가 괜찮은지 봐 주세요. domain → global은 ArchUnit에서 허용됩니다.
  • 한도 50에서는 갤러리 저장의 번호 2~99를 다 채울 수 없어 TEMPLATE409_2가 실제로 나지 않습니다. 방어용으로 남기고, 테스트는 개수 조회만 스텁해 검증했습니다.
  • getTodayUsage는 이제 회원이 있는지 확인하지 않습니다. 예전에는 플랜 조회에서 USER404_1을 냈지만, 명세 6번은 전용 에러가 없습니다. 회원 확인은 사용량 API를 만들 때 조합 서비스에서 합니다.
  • 시드는 INSERT IGNORE라서 이미 만든 로컬·개발 DB의 1·2번 행은 바뀌지 않습니다. 이메일·닉네임 변경은 새 DB에서만 보입니다. 컬럼 삭제는 마이그레이션으로 반영됩니다.
  • @oTAETAEo feat: 내 템플릿 수정 API (#52) #53(템플릿 수정)과 TemplateCommandService의 planQueryService 필드 부분이 겹칩니다. 먼저 병합되는 쪽 기준으로 나중 쪽이 develop을 합치면서 충돌을 풀면 됩니다 (PlanQueryService 필드를 지우고 한도 검사를 UsageLimits.TEMPLATE_LIMIT으로).

@chjpooh2002 chjpooh2002 self-assigned this Nov 2, 2026
@chjpooh2002 chjpooh2002 added feature 기능 개발 user 내 정보·사용량·플랜 판정 template 내 템플릿·휴지통 ai AI 톤 교정 global 공통 응답·예외·보안 설정 db 마이그레이션, 스키마 변경 labels Nov 2, 2026

@oTAETAEo oTAETAEo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 먼저 머지 해 주시면 언급 해 주신 PR 맞춰서 수정 하겠습니다 👍

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

보유 템플릿 한도, AI 톤 교정 같은 경우는 각각 템플릿, ai 패키지로 이동해도 좋을 것 같기도 하구
둘이 분리되어있으면 너무 분리되어 있는 것 아닌가 싶기도 하네요 ㅎㅎ

한도라는 관점에서 전체적으로 사용될 여지가 있다는 생각이 들기도 하고, 한도라는 책임으로 묶는 게 나은 것 같아서
위치 좋은 것 같은 생각입니다!

@chjpooh2002
chjpooh2002 merged commit 5681e79 into develop Nov 2, 2026
1 check passed
@chjpooh2002
chjpooh2002 deleted the feat/60-remove-plan branch November 2, 2026 08:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai AI 톤 교정 db 마이그레이션, 스키마 변경 feature 기능 개발 global 공통 응답·예외·보안 설정 template 내 템플릿·휴지통 user 내 정보·사용량·플랜 판정

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] 플랜 구분 제거 · 한도(템플릿 50개·AI 하루 5회) 한 곳에 모으기

2 participants