Commit Graph
22 Commits
Author SHA1 Message Date
sbandClaude Opus 4.8 489c3aacb7 fix(ai): 빠른입력 금액 — 한글 수(오만원·삼만원·십만원 등) 해석 예시 추가
아라비아 숫자만 예시라 '오만원' 등 한글 표기 금액을 놓치던 문제. 한글 수 예시 보강.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:28:36 +09:00
sbandClaude Opus 4.8 4132a17c6a feat(ai): 빠른입력 이체(TRANSFER) 지원 — 출금/입금 계좌 분리 추출
스키마에 TRANSFER 타입 + toWallet(받는 계좌) 추가. 이체 시 wallet=출금·toWallet=입금 계좌를
후보 중에서 매칭, 분류는 비움. 기존엔 이체가 EXPENSE로 뭉개지던 문제 해결.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 22:16:38 +09:00
sbandClaude Opus 4.8 29b14a5464 feat(wallet): 무료 회원 계좌 종류별 2개 한도 (유료 무제한)
- createWallet 에 premium 여부 전달, 무료는 종류별 countByType >= 한도면 400
- 한도 계산을 freeWalletLimit 한 곳에 모음(추후 포인트 상점의 영구 보너스 슬롯 최대 5까지 확장 지점)
- 복원(BackupService)은 본인 데이터 복구라 한도 우회

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 01:40:25 +09:00
sbandClaude Opus 4.8 cc36f9e939 revert(point): 개근 보너스 전월 제한 복구 — 현재 월만 인정
테스트(6월 검증) 완료 후 원래 규칙으로 복구. 전월 소급 파밍 방지.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 17:07:35 +09:00
sbandClaude Opus 4.8 56197c2689 test(point): 개근 보너스 전월 제한 임시 해제 — 6월 데이터 검증용
테스트 후 되돌릴 예정(현재 월만 인정으로 복구).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 17:01:00 +09:00
sbandClaude Opus 4.8 45bb025247 feat(point): 한 달 개근(모든 날 기록) 랜덤 보너스 1~100P
내역 저장 시 현재 월 모든 날에 기록이 있으면 월 1회 랜덤 1~100P 지급.
전월 소급 입력 파밍 방지(현재 월만 인정), 화면 안내 없음(포인트 내역에만).
- AccountEntryMapper.countDistinctEntryDays, PointMapper.countByReason
- PointService.awardMonthComplete(reason=MONTH_COMPLETE_yyyyMM 로 월 1회)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 16:56:48 +09:00
sbandClaude Opus 4.8 24858f23e8 style(ai): 재무 코멘트·절약가이드 말투를 정중한 종결어미로 통일
'~입니다/~합니다/~할 수 있습니다' 합쇼체 강제, 반말·음슴체 금지 + 예시 추가.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:45:25 +09:00
sbandClaude Opus 4.8 7d15f06390 revert(ai): 예상 지출을 AI에서 제거 — 비결정성으로 매 접속 값 변동
AI 예상지출은 호출마다 40만~500만으로 흔들려 신뢰성 부족. 코멘트/팁만 AI 유지.
예상 지출은 프론트에서 결정적 계산으로 대체.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:43:44 +09:00
sbandClaude Opus 4.8 2802ec9d5a feat(ai): 월말 예상 지출을 AI 추정으로 — 일회성 큰 지출 왜곡 제거
선형 run-rate는 노트북 등 일회성 지출을 남은 날에 곱해 비현실적 값(2천만) 생성.
AI가 분류를 보고 일회성을 일평균에서 제외해 추정 + 근거 문장 반환(경과일/총일수 전달).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:28:53 +09:00
sbandClaude Opus 4.8 a34a8250a4 feat(ai): 재무 코멘트에 절약 가이드(tips) 추가
집계 기반으로 현황 코멘트(bullets)에 더해 지출 패턴 맞춤 절약 제안(tips) 2~3개 생성.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:13:09 +09:00
sbandClaude Opus 4.8 4aeac2ac0f feat(ai): 통계 화면 AI 재무 코멘트
이번 달 집계(수입·지출·전월대비·예산·분류별)만 Claude Haiku에 보내 2~3개 코멘트 생성.
POST /account/ai-comment(유료 게이트), 거래 원문 미전송. 미설정/실패 시 빈 코멘트→카드 숨김.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:05:32 +09:00
sbandClaude Opus 4.8 c5f16795ef fix(ai): 영수증 AI 멀티파트 파트수 초과(500) 수정
Tomcat 기본 파트 수 제한(10)에 categoryHints/walletHints를 이름마다 파트로 보내 초과 → 500.
힌트를 줄바꿈으로 합친 단일 필드로 받아 파트 3개로 축소.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:46:14 +09:00
sbandClaude Opus 4.8 28670b69a1 feat(ai): 영수증 사진 → Claude Vision 구조화
/account/ocr/receipt-ai — 이미지를 Haiku 비전에 보내 금액·상호·날짜·분류·계좌를 한 번에 추출.
AI 미설정/실패 시 recognized=false → 프론트가 기존 Google Vision OCR 로 폴백.
Claude 호출/응답파싱 공통화(callClaude), 프롬프트 힌트주입 공통화(withHints).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 14:18:50 +09:00
sbandClaude Opus 4.8 53326f089b feat(ai): 자연어 입력 시 분류·결제수단 자동 추천
사용자의 실제 카테고리·계좌 후보를 AI에 전달해 그 중에서 선택(할루시네이션 방지 검증).
라면→식비, 삼성카드→해당 계좌 등 폼 자동 채움 확장.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 13:47:52 +09:00
sbandClaude Opus 4.8 b3b42f0db6 fix(ai): 모델이 설명문 섞어 반환해도 JSON만 추출 — 파싱 견고성
첫 '{'~마지막 '}' 구간만 추출해 파싱, 중괄호 없으면 조용히 규칙 폴백(WARN 대신 INFO)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:57:50 +09:00
sbandClaude Opus 4.8 d65dd88bba chore(ai): 파싱 전과정 진단 로그(요청텍스트·모델원문·결과) 추가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:36:40 +09:00
sbandClaude Opus 4.8 30cb68c003 chore(ai): 시작 시 AI 파서 활성/키로딩 진단 로그 추가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:12:04 +09:00
sbandClaude Opus 4.8 811cc1b391 feat(ai): 자연어 한 줄 입력 파싱 — Claude Haiku 프록시(키 서버보관·실패 시 규칙 폴백)
- AiEntryParser: /v1/messages(Haiku) 호출로 '어제 스타벅스 5천원'→{type,amount,merchant,date} 추출
- AccountService.parseText: AI 우선 시도, 미설정/실패/미인식 시 기존 규칙기반 파서로 폴백(무중단)
- app.anthropic-api-key/anthropic-model 설정(키 없으면 AI 비활성)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 11:24:14 +09:00
sbandClaude Opus 4.8 0082e647c2 ci: setup-java 캐시 제거 — 'Save cache' 후처리 hang 회피
Gitea 캐시 서버 미연결 시 cache:gradle 저장 후처리가 수 분 hang → 가짜 실패 유발.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 09:56:10 +09:00
sbandClaude Opus 4.8 9b5abedd40 ci(deploy): 배포 잡에서 테스트/서비스 제거 — bootJar 만 빌드
서비스 컨테이너(MariaDB/Redis) 후처리 cleanup 이 러너에서 멈춰 15분 타임아웃 →
'가짜 실패'로 표시되던 문제 회피. 배포 잡은 clean bootJar 로 jar 만 만들어 ship.
테스트 게이트는 ci.yaml(같은 push 에서 실행)이 담당.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 09:48:20 +09:00
sbandClaude Opus 4.8 9fdec36758 fix(ci): SQL_INIT_MODE=always 추가 — 컨텍스트 테스트 스키마 초기화
@SpringBootTest(contextLoads) 시작 시 DefaultCategorySeeder 가 테이블을 조회하는데
CI 는 SQL_INIT_MODE 미설정(never)이라 스키마가 없어 BadSqlGrammarException 으로 실패했음.
운영과 동일하게 always 로 초기화 → 애플 로그인 커밋(a10e16c) 배포도 함께 통과.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 00:00:43 +09:00
sbandClaude Opus 4.8 a10e16c1af feat(auth): 애플 로그인 API — Sign in with Apple identity token 검증(JWKS)
- POST /api/auth/apple — nimbus-jose-jwt 로 애플 공개키(JWKS) 서명 검증 + iss/aud(번들ID)/exp 확인
- member.apple_id 컬럼(멱등 ALTER) + findByAppleId/linkApple, 구글과 동일한 이메일 자동연결 로직
- app.apple-client-id 설정(기본 kr.sblog.slimbudget)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 17:01:31 +09:00