목차
스위치를 아래로 당기면 광고가 열리고, 완료하면 다이얼 한 칸이 채워집니다. 열 칸을 채운 뒤에는 마지막 지급 광고가 따로 있습니다. 화면에서는 반복 동작을 짧게 만들고, 서버에서는 충전과 실제 지급의 책임을 나눴습니다.
다음 동작과 방금 받은 결과를 나누기
스위치를 되돌리는 과정에서 방금 받은 보상 표시도 사라졌습니다. 사용자는 조작을 마쳤는데 결과를 충분히 확인할 수 없었습니다.
반복 조작은 빠르게 이어가되 완료 결과는 남겨두도록 피드백했습니다. 작은 전구 나열 대신 진행 상황을 볼 수 있는 다이얼로 바꾸고, 화면의 충전 표시와 실제 포인트 지급을 구분하는 흐름으로 다듬었습니다.
Codex와 조작 초기화·충전 상태·지급 상태를 나눴습니다. 보상 서버에는 멱등키와 일회성 액션 티켓을 두고, 외부 지급 응답이 불명확하면 지급을 다시 실행하기보다 결과를 조회하도록 구성했습니다.
소스에는 동시 티켓 소비, 재전송, 지급 시간 초과, 오래된 작업자 응답을 다루는 테스트가 있습니다. 이는 비공개 테스트 구현이며 실제 지급 운영 성과를 의미하지 않습니다.
조작이 끝났다는 신호와 보상이 확정됐다는 신호는 서로 달라야 했습니다. 재시도도 화면과 서버의 책임을 나눠 다뤘습니다.
화면으로 보는 기능
스위치는 끌어당기는 거리에 반응하고 중간에 놓으면 돌아옵니다. 다이얼은 오늘의 충전 횟수를 표시합니다. 광고 완료와 지급 완료는 같은 이벤트로 취급하지 않습니다. 네트워크가 끊기거나 화면을 다시 열어도 지급 상태를 확인하는 과정이 필요하기 때문입니다.
갤러리는 로컬 테스트 모드에서 7→8회 충전한 화면입니다. 실제 토스 로그인이나 포인트 지급까지 검증한 캡처가 아닙니다.
응답이 없을 때 다시 지급해도 될까
지급 API의 응답이 끊겨도 외부에서는 이미 처리가 끝났을 수 있습니다. 이때 같은 지급 동작을 무조건 다시 실행하면 중복 지급 위험이 생깁니다.
| 상황 | 구현한 처리 |
|---|---|
| 액션 시작 | 세션에 묶인 만료 시간·일회성 티켓 발급 |
| 같은 완료 요청 재전송 | 멱등키와 소비 상태 확인 |
| 지급 요청 수락 | DB 작업으로 저장하고 작업자가 처리 |
| 지급 실행 뒤 응답 불명확 | 실행 결과 조회로 상태 확인 |
| 작업자 교체·중단 | 임대 상태와 오래된 작업 점검 |
| 연결 해제 | 대기 상태를 정리하고 후속 지급 제한 |
티켓은 재전송을 관리하는 장치이지 실제 광고 시청을 암호학적으로 증명하는 장치는 아닙니다. 운영 전환에는 광고 파트너의 완료 검증과 부정 사용 방어가 더 필요합니다.
Snapshot
| 항목 | 현재 범위 |
|---|---|
| UI | 스위치 드래그, 충전 다이얼, 테스트 광고 |
| API | 액션 티켓, 일일 제한, 충전과 지급 상태 |
| 저장·실행 | PostgreSQL 지급 작업과 별도 작업자 |
| 날짜 | 일일 제한은 Asia/Seoul 기준 |
| 검증 | API 관련 22개 테스트 통과 |
Recent Notes
소개 기준은 2026.08.22의 main 브랜치입니다. 9월에 갱신된 의존성 자동 업데이트 브랜치는 아직 합쳐지지 않아 현재 기능이나 출시 버전으로 계산하지 않았습니다.
2026.09.13에 API 테스트 22개를 실행해 통과했습니다. 티켓 소비, 재시도, 외부 응답 형태, 연결 해제와 마이그레이션 관련 로직을 확인했습니다.
Next
실제 지급을 켜려면 토스 로그인·mTLS, 운영 DB와 작업자, 광고 그룹, 예산과 지급 승인 설정이 필요합니다. 현재 페이지는 비공개 테스트 구현을 소개하며 운영 리워드 서비스가 아닙니다.