WebConfig에서 /recurrings 유료 게이트 제거, 무료는 생성 시 종류무관 2건 한도(초과 400).
유료·관리자 무제한, 복원은 한도 미적용. RecurringMapper.countByMember 추가.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- createWallet 에 premium 여부 전달, 무료는 종류별 countByType >= 한도면 400
- 한도 계산을 freeWalletLimit 한 곳에 모음(추후 포인트 상점의 영구 보너스 슬롯 최대 5까지 확장 지점)
- 복원(BackupService)은 본인 데이터 복구라 한도 우회
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- budget 테이블에 year/month 추가, (member,category)→(member,category,year,month) 유니크 교체
기존 상시 예산은 현재 월로 1회 이관
- 예산 조회/생성/현황/기간차트를 월별로(findByMember에 year/month)
- copyMonth: 다른 월 예산을 대상 월로 복사(같은 분류 덮어씀) + POST /budgets/copy
- 백업 복구 시 예산은 현재 월로 등록
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- POST /api/account/restore: 기존 데이터 전부 삭제 후 이름 기준 재생성
(계좌→태그→분류(대/소)→내역→고정→예산→자주내역), 한 트랜잭션(실패 시 롤백)
- 빈 데이터 안전장치, 투자 종목/매매는 복구 대상 외(삭제됨)
- BackupMapper(deleteByMember), RestoreRequest DTO, BackupService/Controller
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>