-
휴대폰 인증 로직 중복을 컴포넌트로 통합
휴대폰 본인인증 처리를 공통 컴포넌트로 추상화하고, 회원가입의 중간 단계(step2)와 기존회원의 재인증 플로우에 적용했다.
읽기 → -
지갑 충전 화면 색상 통일로 브랜드 일관성 강화
지갑 충전 기능의 강조색을 브랜드 레드로 변경하고, 결제 흐름(/pay)의 히어로카드 톤과 맞춰서 통일했다. 단순한 색상 변경처럼 보이지만, 이것은 결제 플랫폼 전체의 UX 일관성을 높이는 작업이었다.
읽기 → -
관리자 쿠폰 설정에 신규 공급사 탭 추가
쿠폰 관리 시스템에 새로운 공급사 탭을 추가했다. 기존 관리자 화면에서 여러 공급사별 쿠폰 정책을 각각 관리할 수 있도록 탭 UI를 확장한 작업이다. 자바 백엔드 웹 컨트롤러 클래스와 JSP 뷰 레이어를 수정해서 구현했는데, 단순해 보이는 "탭 하나 추가"가 실제로는 꽤 신경 쓸 부분들이 많았다.
읽기 → -
새로운 상품권 공급사 연동 간편화
새로운 상품권 발송 공급사인 클라이프스를 시스템에 추가하는 작업을 완료했다. 단순해 보이는 "공급사 추가"지만, 팀이 이후 계속해서 공급사를 확장할 수 있도록 구조적 기반을 다지는 중요한 마일스톤이었다.
읽기 → -
프로젝트 종료 후 흩어진 문서들을 한 곳으로 정리
어떤 프로젝트가 일단락되거나 운영 단계로 접어들 때, 그 과정에서 쌓인 설계 문서, 연동 규격서, 검증 계획 같은 것들이 클라우드 저장소 곳곳에 흩어져 있는 경우가 많다. 이번 작업은 바로 그런 상황—404_pjt 라는 프로젝트의 잔여 문서들을 정리해서 체계적으로 아카이빙한 것이다.
읽기 → -
벤더 API 규격서 한곳에서 관리하기
이커머스 플랫폼에서는 여러 외부 벤더와 API 연동을 하게 된다. 결제 PG, 배송 시스템, 인증 솔루션, 상품권 발송 등 비즈니스 도메인별로 각각 다른 벤더와 작업하다 보니, API 규격서들이 여기저기 흩어져 있었다. 이번 작업은 그 모든 벤더 연동규격서를 .claude/pdf 디렉토리에 한곳으로 모으고, 신규 벤더 2종을 추가하는 문서화 작업이었다.
읽기 → -
본인인증 SMS 전환 완료, 다음 단계 정의
어느 정도 규모가 되는 팀에서 진행 중인 작업을 파악하고 다음 사람에게 넘겨주는 건 생각보다 복잡하다. 특히 개발과 운영이 나뉘어 있거나, 여럿이 같은 영역을 건드려야 할 때는 더더욱. 이번 커밋은 본인인증 SMS 마이그레이션이 완료되었다는 사실을 팀 핸드오프 문서에 기록하고, 동시에 다음 우선순위를 명시하는 작업이었다.
읽기 → -
예금주명 검증으로 계좌 인증 정확도 강화
계좌 인증은 결제 시스템의 핵심 신뢰 포인트다. 특히 B2B나 정산 플랫폼에서는 계좌 이체 시 송금처와 수취처가 일치하는지 확인하는 게 중요한데, 기존엔 계좌번호 자체만 검증하고 소유주(예금주명)는 별도 확인 없이 진행해왔다. 이번에 그 부분을 보강하고 동시에 구식 1원인증 방식의 UI 잔재도 정리했다.
읽기 → -
회원 본인인증을 웰컴 팝업에서 SMS로 전환
회원 본인인증 방식을 기존의 웰컴 팝업 기반에서 제주(kp-pay)의 휴대폰 SMS 인증으로 전환했다. 보안과 사용자 경험, 그리고 규정 준수 관점에서 실제로 필요했던 작업이었다.
읽기 → -
결제 웹훅 발신자 위조 공격 차단 강화
결제 플랫폼에서 들어오는 웹훅의 발신자 IP를 검증하는 방식을 개선했다. XFF(X-Forwarded-For) 헤더를 다룰 때 보안 취약점이 있었는데, 맨 뒤 값(위조 불가능한 IP)을 사용하도록 변경한 작업이다.
읽기 → -
진행 상황을 문서로 정리하고 팀의 다음 방향 결정하다
프로젝트를 진행하다 보면 특정 지점에서 그간의 성과를 정리하고 다음 단계를 명확히 하는 시간이 필요하다. 특히 팀 규모가 커지고 기간이 길어질수록 말이다. 이번에 한 인증 서비스의 핸드오프 문서를 작성하면서 느낀 것들을 정리해본다.
읽기 → -
결제 인증 화면 일관성 개선과 인증 방식 현대화
결제 플랫폼의 계정 검증 단계를 손봤다. 디자인 시스템 통일과 인증 수단 전환이 함께 들어간 작업이었는데, 이 과정에서 여러 고민이 있었다.
읽기 → -
사이트맵 크롤링 효율 높인 HEAD 메서드 지원
이번 주는 블로그 사이트의 검색 엔진 최적화(SEO) 관점에서 작은 하지만 의미 있는 두 가지를 손봤다. sitemap, robots.txt, RSS 피드 엔드포인트에서 HTTP HEAD 메서드를 지원하고, 정적 sitemap entries에 마지막 수정 시간(lastmod)을 추가했다.
읽기 → -
결제 PG의 원가 설정값 정정
결제 게이트웨이 통합에서 원가와 사용자 수수료를 혼동하는 버그를 발견해서 수정했다. 한 PG사(jeju)의 설정 테이블에서 pgCost(PG에게 우리가 지불하는 원가)가 사용자 수수료로 잘못 입력되고 있었다. 문서, Java 코드, SQL 초기화 스크립트까지 세 곳을 동시에 정정해서 설정값의 일관성을 맞췄다.
읽기 → -
결제 webhook 정산·환불·보안 통합 완료
지난번부터 남겨둔 결제 플랫폼 webhook 처리 기능들을 마무리했다. 정산 후처리, 환불 시 역분개, IP 토글을 통한 접근 제어까지—세 가지 핵심 기능이 모두 구현되면서 webhook 통합이 한 단계 완성된 느낌이다.
읽기 → -
신규 결제 수단 추가로 충전 유입 다양화
지갑 결제 시스템에 두 가지 새로운 결제 수단을 추가했다: 특정 카드 결제 PG와 가상계좌 통합인증.
읽기 → -
셀카 이미지 6장 복구, gitignore 충돌 수정
최근 배포 파이프라인에서 캐릭터 미디어 에셋이 누락되는 문제가 발견됐다. 원인은 두 가지가 함께 작용했다: (1) 실제 이미지 파일이 저장소에서 유실됨, (2) .gitignore의 패턴 충돌로 파일이 제대로 추적되지 않음. 이번 작업에서 두 문제를 동시에 해결했다.
읽기 → -
결제 컷오버 범위 확대, 충전 수수료 로직 재설계
결제 시스템의 P6 단계 적용 범위를 14곳으로 확대하고, 동시에 충전 수수료 계산 로직 5곳을 재설계했다. 한 번에 여러 도메인을 건드리는 작업이었기에 그 의도와 과정을 정리해본다.
읽기 → -
API 비용을 모델별·계정별로 한눈에 보기
Claude API를 팀 단위로 쓰면서 가장 신경 쓰이는 게 비용 관리다. 이번에 계정별 사용량을 모델별로 분리해서 추적하고, Discord를 통해 자동으로 리포트하는 기능을 만들었다.
읽기 → -
크롤 콘텐츠 재구성을 2단계로 나눴더니 품질이 올랐다
최근에 크롤링한 콘텐츠를 재구성하는 파이프라인을 2단계로 분리했다. 기존에는 한 번의 프롬프트 호출로 "기획 + 작성"을 한꺼번에 처리했는데, 이제 Sonnet으로 먼저 구조를 잡고 Haiku로 실제 콘텐츠를 만드는 식으로 개선했다. 같은 입력인데도 결과물이 더 고유하고 일관성 있게 나오니까, 이제는 이렇게 하는 게 기본이 될 것 같다.
읽기 →