기간 : 2주
팀원 : 프론트 2명 (PM) / 백엔드 4명
필수 구현 사항 : 로그인, 회원가입, 주문, 결제
오늘도 ERD에 대한 수정을 진행했다. 머리로만 구상했던 구조가 막상 입력을 하는 과정에서 구조의 오류를 많이 마주했다.
문제 1)
수정 전
기존 구조는 users에 agreement_id(fk) 라는 컬럼이 있었고 agreements (pk) 라는 테이블을 만들어서 광고성 동의 (app, email, sms) 의 체크 여부를 저장하려고 했다. 그런데 boolean 값으로 정보를 0,1 로 체크여부 3항들을 각각 받아올텐데 어떻게 1개의 컬럼으로 저장하는가... 라고 고민하다가 조언을 구했다.
수정 후
애초에 이해를 잘 못하고 있던 것이였다. agreements 테이블은 필수 동의(TOS, PICU)의 법률적인 내용을 담는 용도로 법률의 개편 및 수정을 관리하는 곳으로 어떠한 user 와 연관된 정보를 담는 곳이 아니였다. 그리고 광고 동의는 users 테이블에 컬럼으로 각각 추가해서 개별로 관리해야 한다는 것이다. 이렇게 수정하니 user 정보와도 이어지고 광고 동의도 어떤 것들만 체크했는지 관리할 수 있게 되었다.
ERD는 이렇게 마쳤고 앞으로 진행하면서 예상치 못한 수정이 생길듯 하나 나중에
10번 고칠 것들을 지금 고생해서 나중에 2번 고친다는 생각으로 정말 팀원들과 많은 대화를 나누어 구상 과정을 임했다.
문제 2)
주문 과정의 구상
지금까지 배우며 느낀 점은 코딩은 늘 산 넘어 산이다...
kream의 핵심 기능은 경매 방식이다. 과연 이것을 query 문법과 api로 어떻게 해볼 수 있을까... 엄청 고민하고 수 많은 의견이 오고가서 지금 기록할 시점에 목이 많이 피로하다... ㅎㅎ
먼저 제품 리스트 페이지부터 시작하면 프론트에서 필요한 정보들을 뽑아서 전달한다. 여기까지는 괜찮았지만 즉시 판매가/ 즉시 구매가 이것들이 1차 난관이였다.
이 가격은 무슨 기준으로 책정한 것인가 고민했고 입찰가들을 유심히 보다보니 알게 되었다. 즉시 판매가는 판매입찰을 올린 여러 고객들의 가격들 중에 최저가 가격이고 최저가를 보여줌으로서 고객은 생각보다 저렴하다고 생각해 원하는 상품의 디테일 페이지로 유입시키는 효과를 의도한 것 같다.
그 다음으로 상세페이지이다.
여기서도 동일한 정보를 전달하고 즉시 구매가 / 판매가가 버튼을 통해서 보여진다.
그 외 정보들은 products 의 컬럼으로 데이터들을 관리하며 불러온다.
그 다음은 사이즈 별로 즉시 구매/ 판매 가격을 보여주며 본인이 원하는 사이즈로 이동시키게 한다. 구매입찰은 재고를 판매/구매 의사가 한명도 없을 경우 표시가 된다.
여기서 팀원과 "select ~~ 이렇게 작성해서 최저가를 불러와야겠다" 라고 대략적인 그림을 그려보았다.
그 다음으로 중요한 매입 매도 정보를 입력하는 부분이다.
만약 나는 즉시구매가 정도면 바로 구매하겠다 하는 생각일때 바로 즉시 구매를 누르거나 만약 나는 즉시구매가보다 더 저렴하게 내가 금액을 기입해서 구매하겠다 하는 생각일때 희망가를 입력한다. 여기서 포인트인 부분은 즉시구매가 보다 더 비싼 금액을 입력하면 저절로 즉시구매쪽으로 이동한다. 그 후 다음으로 넘어간다.
이제 최종적으로 해당 주문을 하는 곳이다. 정보기입이 끝나면 아래 버튼을 눌러서 다음 프로세스로 넘어가는데 만약 즉시구매를 하는 주문이라면 바로 결제페이지로 넘어간다. 반대로 구매입찰이라면 그냥 주문이 완료된다.
그래서 여기부분에서 아래 버튼을 누르는 시점으로 백엔드로 저 정보들이 bid 테이블에 "insert into ~~~" 로 저장이된다.
그러면 즉시 구매는 데이터가 저장된후 바로 판매 내역을 서칭하며 사이즈, 가격이 맞는 제품을 찾아내고 orders라는 테이블에 채결 내역을 저장시키고 채결이 되었으니 저장되어 있던 bid 테이블의 정보는 삭제시킨다.
이렇게 경매라는 매우 복잡한 로직을 정리해보았다. 이번 프로젝트는 경매방식을 얼마나 잘 구현하는가 가 제일 중요하고 정말정말 팀원들과 머리를 싸매고 엄청 고민하며 내용을 순차적으로 정리할 수 있었다. 각자의 의견을 서로 적극적으로 얘기하고 다른 사람의 얘기도 잘 들어주면서 열정적인 토론을 경험했고 팀원들에게 정말 감사한 토론이였다. 그래서 이번 프로젝트도 잘 이겨내어 만들어 나갈 것 같은 느낌을 받았다.