저는 초대 코드 이벤트를 운영하면서 “누가 언제 스탬프를 받았지?”를 추적하기 어려웠습니다. 초대받은 사람과 초대한 사람 모두에게 보상을 주려면 흐름을 하나로 묶어야 했죠. 그래서 초대 코드 검증, 히스토리 저장, 스탬프 지급을 한 API에서 처리하도록 만들었습니다.
created_at 비교를 추가했습니다.세션 사용자를 확인하고, 초대 코드가 유효한지 검사한 뒤 히스토리 테이블에 inviter_id, invitee_id로 레코드를 만듭니다.
새로 생성된 히스토리 ID로 초대받은 사용자에게 스탬프를 지급합니다. 이미 지급된 스탬프가 있으면 실패 메시지를 반환합니다.
import { addUserStamp } from './stamp-service';
export const addInviteReceivedStamp = async (
inviteeId: string,
inviteHistoryId: string,
) => {
return addUserStamp(inviteeId, '친구 초대 받음', inviteHistoryId, null);
};
초대받은 사용자가 이미 학교 인증을 마친 상태라면 초대한 사용자에게 “친구 초대 완료” 스탬프를 주고 히스토리에 verified 플래그를 업데이트합니다.
지금은 초대 코드가 사용되면 스탬프와 히스토리가 동시에 기록돼 운영자가 엑셀로 체크할 일이 없어졌습니다. 학교 인증까지 이어지면 자동으로 초대한 사람에게 보상도 지급되니 이벤트 관리가 훨씬 수월합니다. 다음에는 초대 코드 사용 시 알림을 보내 초대자가 바로 변화를 느낄 수 있게 해볼 예정입니다.
여러분은 친구 초대 보상을 어떻게 구현하고 계신가요? 다른 아이디어가 있다면 댓글로 공유해주세요.