기프티콘 등록 및 사용 - 9min9/GiftHub GitHub Wiki

테이블 및 흐름도

gifticonTableOnline

기프티콘 등록 흐름도

  1. 사용자가 기프티콘 이미지 파일을 첨부 시 이미지 서버에 등록 및 GifticonImage 생성
  2. GifticonImage를 FK로 참조하는 GifticonStorage(기프티콘 임시 엔터티) 생성
  3. Product의 상품명과 동일하다면 사용자가 ‘등록하기’ 클릭시 Gifticon 생성 후 해당 GifticonImage 및 이미지 서버의 이미지 파일 삭제
  4. Product의 상품명과 동일하지 않다면, 관리자에게 검수요청
  5. 관리자의 검수가 처리 시 기프티콘 등록, 반려 시 재검수 요청
  6. 정상등록된 Gifticon은 ‘사용’ 클릭 시 사용자의 휴대전화로 바코드 사진을 포함한 MMS 전송

Gifticon 테이블과 GifticonStorage를 분리한 이유

  • 기프티콘 등록 시 사용자 예외처리관리자 검수를 통해 ‘정상’ 기프티콘과 ‘임시’ 기프티콘을 분리하고자 하였음
  • ‘정상’ 기프티콘은 판매, 사용이 자유롭고, ‘임시’ 기프티콘은 등록 처리 전 사이트 기능이 이용 불가

OCR 동작 방식

OCR 흐름도

등록과정

  1. 카카오톡으로 추가 시 카카오챗봇의 이미지 URL이 서버로 전송, 파일로 등록 시 MultipartFile 객체가 서버로 전송
  2. 등록 API가 호출되면 Naver OCR API를 호출하고 이미지의 텍스트를 읽어 결과 값을 반환
  3. OCR의 결과 값을 통해 해당 이미지의 기프티콘 여부 파악
  4. 이미지가 기프티콘으로 판단되면 Product 테이블의 브랜드 목록과 먼저 비교
  5. 브랜드 목록을 비교 후 해당 브랜드가 존재하면 상품명을 비교

OCR 오류 처리

  • 브랜드 및 상품명이 매칭되지 않으면 오류를 반환하는 것이 아닌 기프티콘 상태를 NEED_APPROVAL 상태로 등록
  • NEED_APPROVAL 상태는 관리자 검수를 통해 기프티콘 등록 값을 검증
  • 유효기간 및 바코드가 부적합 시 오류를 반환하여 기프티콘 등록 실패 처리

GifticonStorage 등록

챗봇으로 등록 카카오톡 등록


파일로 등록 파일 등록


기프티콘 사용

기프티콘 사용