프로젝트

일반

사용자정보

Actions

버그 #600

진행중
RL HP

GetReferralRewards 가 cards 를 빈 배열로 반환해 Referral 레벨 카드가 표시되지 않음

버그 #600: GetReferralRewards 가 cards 를 빈 배열로 반환해 Referral 레벨 카드가 표시되지 않음

Ryan Lee이(가) 약 4시간 전에 추가함.

상태:
신규
우선순위:
높음
담당자:
시작일:
2026/08/10
완료일:
진척도:

0%

추정시간:

설명

Referral 화면의 레벨 카드 스택이 한 장도 표시되지 않습니다. GetReferralRewards 가 cards 를 빈 배열로 내려주는 것이 원인으로 확인돼 서버 측 확인을 요청드립니다.

현상

Referral 탭에서 'Referral rewards' 헤더와 초대 코드 안내 카드만 남고, 그 아래 레벨 카드 영역이 통째로 비어 있습니다.

재현 환경

  • staging (https://edge.alphea.dev), dev 빌드
  • 확인 일시: 2026-08-10
  • 계정: Active today 0 / 총 초대 0, 클레임 이력 없음

실제 서버 응답

POST /alphea.connect.v1.ReferralService/GetReferralRewards · Request {}

{
  "activeInvitees": "0",
  "claimedCount": 0,
  "earnedToday": { "micros": "0" },
  "cards": [],                                    ← 비어 있음
  "completionState": "COMPLETION_BONUS_STATE_LOCKED",
  "completionGoal": "100",
  "completionReward": { "micros": "0" },
  "resetAt": "2026-08-11T00:00:00Z",
  "serverTime": "2026-08-10T09:39:44Z",
  "questDisplayNames": {}
}

응답은 HTTP 200 이고 cards 를 제외한 나머지 필드(activeInvitees·completionGoal·resetAt)는 정상적으로 내려옵니다.

정황 — 카탈로그는 서버에 존재합니다

같은 서버의 QuestService/ListQuests 에는 레벨 카탈로그가 그대로 있습니다.

referral-level-1   metric=QUEST_METRIC_ACTIVE_INVITEE_COUNT  targetValue=1    reward.micros=0
referral-level-5   metric=QUEST_METRIC_ACTIVE_INVITEE_COUNT  targetValue=5    reward.micros=0
referral-level-10  metric=QUEST_METRIC_ACTIVE_INVITEE_COUNT  targetValue=10   reward.micros=0
referral-level-25  metric=QUEST_METRIC_ACTIVE_INVITEE_COUNT  targetValue=25   reward.micros=0

connect-rpc-api.md §10.6 도 "레벨 정의는 진행률 확인을 위해 일반 QuestService 카탈로그에도 노출되지만, 클레임은 오직 ClaimReferralReward 로만 가능하다"고 명시하고 있습니다. 즉 카탈로그 자체는 있는데 ReferralService 쪽 cards 만 비어 있는 상태로 보입니다.

또한 referral-level-* 의 reward.micros 가 모두 0 이고 completionReward.micros 도 0 입니다 — 보상 값이 미설정인지 함께 확인 부탁드립니다.

확인 요청 사항

  1. GetReferralRewards.cards 가 LOCKED 상태를 포함한 카탈로그 전체를 반환하는 것이 맞는지
    (§10.6 응답 예시에는 미달 레벨이 포함돼 있고, "카드 수·레벨·임계값·보상은 모두 서버가 정한다"고 기술돼 있습니다)
  2. 현재 빈 배열이 내려오는 조건이 무엇인지 — 활성 초대 인원 0 이면 제외하는 의도된 동작인지, 카탈로그 조회 누락인지
  3. referral-level-* 및 완주 보너스의 보상 micros 가 모두 0 인 것이 스테이징 미설정 때문인지
  4. 프로덕션(edge.alphea.ai)에서도 동일하게 빈 배열이 내려오는지

클라이언트 현황

  • 클라이언트는 응답의 cards 를 그대로 표시합니다. 레벨 재번호·임계값 재계산·개수 가정·재정렬을 하지 않습니다 (src/services/referralService.ts).
  • 이 구조는 #594 (fix/redmine-594-referral-rewards-authority) 에서 레벨 카드의 권한을 GetReferralRewards 로 확정하며 정해진 계약입니다. 이전에 쓰던 QuestService 카탈로그 기반 카드 생성 경로는 그때 제거했습니다.
  • 따라서 클라이언트가 카드를 합성해 표시하는 방식은 계약 위반이라 적용하지 않았고, 서버가 cards 를 채워주면 별도 앱 수정 없이 정상 동작합니다.

HP Henry Park이(가) 3달 전에 변경 Actions #1

원인 확인 및 조치 완료.

서버 코드 문제가 아니라 staging의 Referral 정의가 비활성·보상 0으로 남아 있어 카드가 하나도 조건(active && reward_micros>0)을 통과하지 못한 것입니다. 마이그레이션은 의도적으로 비활성·0으로 seed하고, 운영자가 admin/connect/quests에서 보상을 넣고 활성화하는 구조입니다. production은 이미 활성화되어 있어 초대 0명 사용자도 LOCKED 카드 7장을 받습니다. 즉 이 건은 staging 한정이며 production 영향은 없었습니다.

cards의 canonical 집합은 referral-level-5/10/20/50/100/500/1000 일곱 개입니다. referral-level-1과 referral-level-25는 남아 있는 legacy Quest 정의로 Referral 카드가 아닙니다. activeInvitees=0 자체는 빈 배열의 원인이 아니며, active·funded 정의는 미달이어도 LOCKED로 반환됩니다.

조치: staging에 production과 동일한 reward_micros(5·10=200000000, 20·50=300000000, 100=400000000, 500=500000000, 1000=600000000)를 적용하고 일곱 레벨을 활성화했습니다. referral-completion은 production과 동일하게 비활성·미설정으로 유지했습니다(Chris Park 결정). referral-level-1/25, referral-inviter-daily, production은 변경하지 않았습니다.

검증: staging에서 초대 0명 계정 기준 GetReferralRewards가 canonical 순서로 LOCKED 카드 7장을 반환하는 것을 확인했고, Ryan Lee 님이 앱 화면에서 카드 표시를 확인하셨습니다.

클라이언트 수정은 필요하지 않았습니다.

Actions

내보내기 PDF Atom