#test
-
파트너 정산 서비스 계층을 정적 유틸로 전환해 구조 단순화
refactor: 파트너 잔액 체크 로직 제거 및 관련 코드 정리 리팩토링은 기능 변경 없이 코드 품질을 올리는 작업임. 이번엔 패키지 구조 정리와 Service 계층을 Util 방식으로 전환하는 게 핵심이었음. 패키지 구조 재편 기존: 기능별 패키지 내 Controller/Service/Mapper 혼재 개선: Controller(web)와 U
읽기 → -
주문 결제 트랜잭션 정합성 개선
feat: 주문 결제 트랜잭션 정합성 수정 상품 목록부터 주문까지 이어지는 흐름을 정비했음. 특히 상품 옵션 처리와 페이징, 카테고리 필터가 한 번에 엮이는 부분이 까다로웠음. 상품 옵션 처리 구조 java // 옵션 유무 분기 if (product.hasOption()) { model.addAttribute("options", produc
읽기 → -
결제 알림 채널별 발송
fix: Welcome Payments 스펙 개선 및 PUSH NOTI 처리 기능 추가 알림 시스템 구현 작업임. 거래 이벤트마다 적절한 채널로 알림을 발송하는 구조를 잡았음. 알림 채널 | 채널 | 용도 | 특징 | |------|------|------| | 앱 PUSH | 실시간 거래 알림 | FCM 사용 | | SMS | 중요 인증/보안 |
읽기 → -
KYC 결제 웹훅 이중 디코딩 버그 수정으로 시그니처 검증 안정화
fix: KYC 본인인증 로직 개선 및 PAYAPI 스펙 준수 Webhook 처리 로직에서 꽤 골치 아픈 이슈를 잡았음. 핵심은 이중 URL decode 문제임. 문제 발생 배경 결제대행사 Webhook은 POST body로 암호화된 필드를 넘겨주는데, 이 값이 URL-encoded 상태로 들어옴. 서버 프레임워크가 Content-Type: app
읽기 → -
웰컴페이 회원 탈퇴 시 관리자 식별자 조회 로직 보완
fix: 웰컴페이 회원 탈퇴 로직 보완 (mgtId 조회 로직 추가) 이번 작업의 핵심은 기존 기능 안정화와 코드 일관성 확보였음. 변경 범위가 여러 레이어에 걸쳐있어서 영향 범위를 꼼꼼히 체크했음. 변경 영역 | 레이어 | 파일 수 | 주요 변경 | |--------|--------|---------| | 백엔드 로직 | 1개 | 핵심 처리 로직
읽기 → -
이메일 인증 테스트 로직을 운영 환경에 맞게 개선
fix: 이메일 인증 개발 테스트 로직 변경 및 운영 환경 조건 추가 이번 작업의 핵심은 기존 기능 안정화와 코드 일관성 확보였음. 변경 범위가 여러 레이어에 걸쳐있어서 영향 범위를 꼼꼼히 체크했음. 변경 영역 | 레이어 | 파일 수 | 주요 변경 | |--------|--------|---------| | 백엔드 로직 | 1개 | 핵심 처리 로직
읽기 → -
결제 웹훅 이중 디코딩 버그 수정으로 시그니처 검증 안정화
fix: 회원 조회/업데이트 로직 최적화 및 중복 방지 처리 개선 Webhook 처리 로직에서 꽤 골치 아픈 이슈를 잡았음. 핵심은 이중 URL decode 문제임. 문제 발생 배경 결제대행사 Webhook은 POST body로 암호화된 필드를 넘겨주는데, 이 값이 URL-encoded 상태로 들어옴. 서버 프레임워크가 Content-Type: a
읽기 → -
결제 웹훅 이중 URL 디코딩 버그 수정으로 시그니처 검증 안정화
fix: Welcomepay ci 필드 조회 로직 수정 및 회원 쿼리 기본 조건 변경 Webhook 처리 로직에서 꽤 골치 아픈 이슈를 잡았음. 핵심은 이중 URL decode 문제임. 문제 발생 배경 결제대행사 Webhook은 POST body로 암호화된 필드를 넘겨주는데, 이 값이 URL-encoded 상태로 들어옴. 서버 프레임워크가 Cont
읽기 → -
선물 만료 자동 배치에 멱등성·모니터링 설계 적용
feat: 선물 만료 자동 배치 작업 추가 배치 작업은 운영 중에 터지면 치명적이라 스케줄링 설계를 꼼꼼히 해야 함. 배치 설계 원칙 - 멱등성: 동일 조건으로 여러 번 돌아도 같은 결과 - 실패 로그: 어떤 건이 실패했는지 추적 가능해야 함 - 부분 성공: 일부 실패해도 나머지는 처리 계속 - 알림: 오류 발생 시 담당자에게 즉시 알림 스케줄
읽기 → -
파트너 충전 한도 조회와 소속 회원 목록 기능 추가
feat: 파트너 충전 한도 및 소속 회원 목록 조회 기능 추가 포인트/잔액 관련 로직은 정합성이 핵심임. 동시성 이슈와 소수점 처리를 특히 조심해야 함. 포인트 차감 순서 무상 포인트 먼저 차감 → 부족하면 유상에서 차감 (세금 처리, 환불 정책과 연관됨) 동시성 처리 sql -- 비관적 락으로 잔액 차감 SELECT balance FR
읽기 → -
JSP 관리자 화면 모바일 대응
fix: OG 이미지 기본 경로 수정 및 이미지 파일 추가 JSP UI 작업은 레거시 환경에서 어떻게 사용성을 올릴 수 있는지 계속 고민하게 만듦. 테이블 레이아웃 개선 모바일에서 가로 스크롤 없이 보이게 하는 게 과제였음. 카드형 뷰로 폴백 처리함. jsp <%-- PC: 테이블 형태 --%> <div class="admin-table-wrap
읽기 → -
Apple OAuth 콜백 CORS 차단
fix(oauth): Apple OAuth 콜백 CORS 차단 해제 Apple OAuth가 구글/카카오랑 달리 까다로운 이유가 있음. form_post 방식을 강제하기 때문에 콜백이 POST로 들어오고, 이 과정에서 세션이 끊기거나 CORS 문제가 발생함. Apple OAuth 특이사항 - 콜백이 GET이 아닌 POST (form_post) - 봇
읽기 → -
Apple OAuth 콜백 차단·세션 유실 문제 해결
fix(oauth): Apple OAuth 콜백 봇 차단 필터 예외 추가 Apple OAuth가 구글/카카오랑 달리 까다로운 이유가 있음. form_post 방식을 강제하기 때문에 콜백이 POST로 들어오고, 이 과정에서 세션이 끊기거나 CORS 문제가 발생함. Apple OAuth 특이사항 - 콜백이 GET이 아닌 POST (form_post)
읽기 → -
등급별 수수료 정책 조회와 정산 멱등성 처리 개선
refactor: 불필요한 pageTitle 속성 제거 및 등급별 수수료 정책 조회 쿼리 추가 정산 및 수수료 로직은 버그 하나가 금전 오류로 직결되는 영역이라 신중하게 접근해야 함. 수수료 계산 구조 유통 단계별로 수수료가 누적되는 구조임. 최하위 파트너가 가장 높은 요율을 부담하고, 상위로 갈수록 낮아지며 그 차액이 각 단계의 수익임. | 단
읽기 → -
포인트 충전 한도와 파트너 수수료 계층 구조 개선
feat: 선물 상세 및 파트너 멤버십 관리 JSP 추가, 충전 한도 관리 로직 개선 포인트/잔액 관련 로직은 정합성이 핵심임. 동시성 이슈와 소수점 처리를 특히 조심해야 함. 포인트 차감 순서 무상 포인트 먼저 차감 → 부족하면 유상에서 차감 (세금 처리, 환불 정책과 연관됨) 동시성 처리 sql -- 비관적 락으로 잔액 차감 SELEC
읽기 → -
레거시 JSP 관리자 화면을 모바일 대응으로 개선
fix: JSON 파싱 오류 원인 치환 문자열 수정 JSP UI 작업은 레거시 환경에서 어떻게 사용성을 올릴 수 있는지 계속 고민하게 만듦. 테이블 레이아웃 개선 모바일에서 가로 스크롤 없이 보이게 하는 게 과제였음. 카드형 뷰로 폴백 처리함. jsp <%-- PC: 테이블 형태 --%> <div class="admin-table-wrapper
읽기 → -
JSP 워밍업 의존성 주입 조건 분기 버그 수정
fix: JspWarmupRunner 의존성 주입 방식 개선 — 버그 픽스.
읽기 → -
에러 레이어별 분리로 사용자 친화적 오류 메시지 제공
fix: 사용자 친화적 오류 메시지 처리 개선 에러 처리는 사용자 경험에 직결됨. 스택 트레이스 그대로 보여주거나, 의미 없는 "오류가 발생했습니다" 메시지는 지양함. 에러 레이어별 처리 BusinessException → 400/422 + 구체적 메시지 AuthException → 401/403 + 리다이렉트 NotFoundException →
읽기 → -
JSP 관리자 화면 모바일 반응형
fix: JSP 개발 모드 설정 로컬 환경 분리 JSP UI 작업은 레거시 환경에서 어떻게 사용성을 올릴 수 있는지 계속 고민하게 만듦. 테이블 레이아웃 개선 모바일에서 가로 스크롤 없이 보이게 하는 게 과제였음. 카드형 뷰로 폴백 처리함. jsp <%-- PC: 테이블 형태 --%> <div class="admin-table-wrapper d-
읽기 → -
권한 어노테이션 메뉴코드를 URL 기반 자동 추출로 전환
refactor: @RequirePermission menuCode 하드코딩 제거, URL 기반 자동 추출로 전환 리팩토링은 기능 변경 없이 코드 품질을 올리는 작업임. 이번엔 패키지 구조 정리와 Service 계층을 Util 방식으로 전환하는 게 핵심이었음. 패키지 구조 재편 기존: 기능별 패키지 내 Controller/Service/Mappe
읽기 →