Conversation
JwtFilter 가 SecurityConfig 보다 먼저 돌면서 토큰이 없으면 무조건 401 을 던진다. 그런데 isWhitelisted 가 startsWith 매칭이라 "/" 를 넣으면 전체 인증이 무력화된다. 정확히 일치할 때만 통과하는 EXACT_WHITELIST 를 분리해 "/" 와 "/error" 를 넣는다. /error 가 빠져 있던 탓에 존재하지 않는 모든 경로가 404 대신 401 로 나오고 있었다. ad.picke.store 루트가 인증 오류 JSON 을 반환하던 원인이다.
- ad 도메인 신설: 소재(AdCreative), 클릭 로그, 일별 노출 집계
- 앱 API: GET /api/v1/ads (지면별 가중 로테이션), POST /api/v1/ads/impressions
- 클릭 리다이렉트: GET /c/{code} 에서 매체별 추적 파라미터를 병합해 302, 클릭은 비동기 적재
- 관리자 API: 소재 CRUD, 소재별 노출/클릭/CTR, 클릭 내역 목록
- 쿠팡은 subId 를 병합해 지면별 성과를 분리하고,
애드픽은 규격 확인 전까지 pass-through 이며 파라미터명을 설정값으로 둔다
- 소재 등록 시 제휴 링크의 lptag 를 우리 파트너스 아이디와 대조해 남의 링크를 막는다
- enum 컬럼에 CHECK 제약을 선언하고, 제약과 enum 이 어긋나면 테스트가 먼저 깨지게 한다
- 노출 집계와 게재 기간 판단을 KST 로 고정
- ad.picke.store 루트 공개 지면 추가 (매체 심사에서 접속 확인 대상)
- Swagger "3. 광고 API" 그룹으로 분리
ERD 는 docs/erd/ad.puml, 참고 스키마는 docs/db 에 둔다. 운영은 ddl-auto=update 라 테이블은 배포 시 자동 생성되며, SQL 은 수동 관리·사후 검증용이다.
Author
|
CI 관련 참고입니다.
#442를 먼저 머지하면 이 PR의 base가 지금 base를 로컬 검증 결과입니다. 실패 2건은 |
애드픽은 캠페인 리스트 JSON API 를 인증 없이 공개한다.
쿠팡 오픈API 와 달리 승인 절차가 없어 애드픽 소재는 사람이 등록하지 않고 주기 동기화로 채운다.
- 수집한 캠페인을 같은 ad_creatives 에 source=ADPICK_API 로 저장해
로테이션·노출 집계·클릭 추적 경로를 그대로 태운다
- 애드픽 가이드가 최대 1분 1회 이하 호출을 요구하고 실제로 연달아 호출하면 403 을 준다.
요청마다 부르지 않고 스케줄러로만 호출한다
- apRemain 이 0 이면 게재하지 않는다. 잔여가 없으면 클릭해도 전환이 잡히지 않는다
- 피드에서 사라진 캠페인은 지우지 않고 내린다. 쌓인 집계를 계속 읽을 수 있어야 한다
- PAUSED 는 동기화가 되돌리지 않는다. 별도 플래그 없이 어드민의 끄기 스위치로 쓴다
- 동기화 소재는 수정·삭제를 막고 게재 상태만 바꾸게 한다 (PATCH /{id}/status)
- apOS 로 OS 가 갈리므로 target_os 를 두고 GET /api/v1/ads 에 os 파라미터를 받는다
iOS 사용자에게 Android 캠페인을 보여주면 클릭해도 전환이 일어나지 않는다
- affId 가 비어 있으면 동기화를 건너뛴다. 가입 전에도 나머지 기능은 그대로 돈다
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#️⃣ 연관된 이슈
📝 작업 내용
✨ Feat
AdCreative.java,AdClickLog.java,AdImpressionDaily.javaAdController.java,AdQueryService.javaAdClickController.java,AdClickService.java,AffiliateLinks.javaCoupangLinkBuilder.java,AdpickLinkBuilder.javaAdminAdController.java,AdminAdService.javaAdLandingController.java,templates/ad/landing.htmlSwaggerConfig.java🐛 Fix
/error401 해소JwtFilter.java,SecurityConfig.java📌 공유 사항
✅ 체크리스트
📸 스크린샷
@Check제약이 실제 DDL에 나가는지 스키마 생성으로 확인했습니다.💬 리뷰 요구사항