Commit Graph
10 Commits
Author SHA1 Message Date
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