로직상 허점 찾기

Today I Learned 날짜 2024년 4월 3일 수요일 내용 오후 반차라 내용이 많이 빈약하다. 리뷰 임포트 CSV파일에서 리뷰를 임포트 해오는 것에 대한 스토어 이슈가 발생했다. 리뷰를 임포트하는 부분은 깊게 파본적이 없어서 대응하기가 어렵다.. 조만간 뜯어봐서 이해해봐야겠다. 고객 데이터 이벤트에 참여하고 쿠폰을 받은(혹은 사용한) 고객의 데이터를 언제 어떻게 받을지 모르겠다. 쿠폰 코드를 제공할 때는 회원가입(정확히는 로그인)이 필수 요건이 아니기 때문에 고객 정보를 알 수 없다. 결국 쿠폰을 사용한 사람의 데이터를 가져와 저장해야 하는데 이 부분에 대한 Shopify Docs가 찾기 힘들다. 누가 어떤 쿠폰을 사용했는지를 알려주는 app을 쇼피파이가 권하던데.. 그 말은 만들순 있다는 뜻인 것 같다. 다만, 주문 데이터에서 뽑아와야 한다면 이에 대한 공수도 분명히 고려해볼 필요가 있겠다. ...

2024년 4월 3일 · 1 분 · 배준수

엔드유저 관점에서 로직 생각하기

Today I Learned 날짜 2024년 4월 2일 화요일 내용 엔드유저의 진입에 따라 발생해야 할 데이터와 로직들을 고민했다. 세그먼트 Shopify에서 고객들을 특정 기준에 따라 세그먼트로 묶어 관리할 수 있다. 이메일 입력 여부, 지역, 국가, 주문량 등등.. 어제의 고민은 “미션을 통과하여 쿠폰을 사용할 자격이 생긴 사람”을 세그먼트로 관리하기 부적절하다는 것이었는데, 기획에 대한 이해가 부족하여 생긴 오류였다. 내 생각의 전제조건은 쿠폰을 받은 유저가 로그인이 되있어야 한다는 것이다. 하지만 쿠폰 발급과 고객의 로그인 여부는 연관이 없다. 로그인을 요구하는 시점은, 쿠폰을 사용할 때 뿐이다. 따라서 이 쿠폰을 사용하는 사람을 한정짓는 조건은 “회원가입하여 로그인이 되어있는 사람”이다. ...

2024년 4월 2일 · 3 분 · 배준수

shopify 쿠폰을 위한 고객관리

Today I Learned 날짜 2024년 4월 1일 월요일 내용 리스트 디자이너는 실서버에 배포! 다음 스프린트를 진행중 쿠폰 이벤트를 완료한 인원에게 쿠폰을 제공해야 한다. Shopify Docs 를 참조하여 GraphQL을 참고하여 생성하는 과정에서 두 가지 문제에 봉착했다. 내가 기존에 계획한 로직은 스토어에서 고객이 수행해야 할 이벤트를 설정할 때, 사용 가능 인원이 지정되지 않은 쿠폰을 만들어 두는 것이었다. 좀 더 자세히는, 아무도 들어있지 않은 비어있는 고객 세그먼트를 생성한 후 , 할인 쿠폰에 배정할 계획이었다. 이 후 이벤트를 완료한 고객만 해당 세그먼트에 개별적으로 추가하여 쿠폰을 사용할 자격을 부여할 생각이었다. ...

2024년 4월 1일 · 3 분 · 배준수

shopify 쿠폰 만들기

Today I Learned 날짜 2024년 3월 29일 금요일 내용 스프린트 본격적으로 시작! 쿠폰 생성 이번 스프린트에서 쿠폰을 생성하는 부분을 맡았다. 아직 한 번도 다뤄본 적 없었던 부분이라 공부가 많이 될거라고 생각했는데, 역시나 머리가 흔들거린다(커서 그런거 아님). Shopify에는 PriceRule이라는 객체가 존재하는데, 이게 쿠폰의 설정모음? 같은 역할을 하는 듯하다. 내가 생성할 쿠폰들에 대한 설정이 여기에 담기고 실제 쿠폰은 DiscountCode라는 객체로 생성된다. 결론적으로, PriceRule은 쿠폰을 스토어의 입장에서 다루기 위한 객체고 DiscountCode는 고객이 받아 사용할 부분이라고 생각된다. ...

2024년 3월 29일 · 2 분 · 배준수

1보 전진을 위한 3보 후퇴

Today I Learned 날짜 2024년 3월 28일 목요일 내용 새로운 스프린트를 시작해야 하지만 이전 것에 발목잡혔다. 이메일 HTML 이메일의 내용이 조건에 따라 달라지도록 구현했다. 기능 자체는 작동이 되는데, 여러모로 디테일이 많이 부족했다. 두 선이 겹친듯 안겹친듯 출력된다 던가, 옆 마진이나 패딩이 다르다던가…. 한 번 할 때 신경써서 세세하게 할껄. 삭제 로직 어드민 내에서 앱을 삭제할 수 있는 기능을 추가했지만 이상하게 작동이 안됐다. 알고보니, 삭제 과정에서 이유를 저장하는 테이블에 데이터를 저장해야하는데, 테스트 서버에 마이그레이션을 까먹어서 저장을 못해 오류처리 되는 문제였다. 항상 병합 후 취해야 하는 조치가 있다면 꼭 기록해두자. ...

2024년 3월 28일 · 1 분 · 배준수

위젯 렌더링 대작전

Today I Learned 날짜 2024년 3월 27일 수요일 내용 열심히 진행했던 스프린트인 리스트 디자이너의 QA작업에 돌입했다. 데이터 갱신 타이밍 위젯에 표시되는 상품들의 실시간성 데이터들은 1시간 간격으로 cron을 이용해 업데이트 하도록 설계했다. 간과한 것은, 새롭게 위젯을 만들 때, 데이터가 생성되야 한다는 것이다. 이 로직이 없으면 새로 만들어진 위젯의 상품들은 다음 크론이 오기 전까지 데이터가 없게 되어 고객이 사용할 수 없다. 관련된 데이터를 업데이트 하는 함수들 crud에 만들어놨었다. 이를 가져와서 위젯을 생성하는 클래스 내에서 호출하도록 구현했다. 모양새가 정말 맘에 들지 않지만.. 현재는 기능을 완성하여 출시하는 것이 중요하다고 생각해서 기능 완성에 중점을 두었고, 여기에는 이상 없다. ...

2024년 3월 27일 · 3 분 · 배준수

씨에수에수왕

Today I Learned 날짜 2024년 3월 26일 화요일 내용 다 고쳤다고 생각했는데, 이젠 위젯 수정 과정에서 발생한 오류들이… 위젯 수정 후 렌더링 썸네일 렌더링과는 별개로, 처음 위젯을 생성할 때는 상품의 썸네일 이미지도 가져와서 설정하는 로직이 있다. 그런데, 이미 존재하는 위젯을 수정하는 과정에서 상품을 추가할 때는 썸네일을 가져오지 않았다. 추가해주었다. 레이아웃 수정 행,열의 값이나 레이아웃 형태를 변경하면 위젯이 고장나버리는 문제가 있었다. 디자인 옵션은 받은 값을 통채로 덮어씌워져서 개별 값이 문제가 될 리가 없었다. 로그를 확인해보니 currency가 문제가 있었다. 뜬금없이 애는 또 왜…. ...

2024년 3월 26일 · 4 분 · 배준수

위젯 렌더링 고치기

Today I Learned 날짜 2024년 3월 25일 월요일 내용 상당히 바쁜 하루… 위젯 렌더링 위젯 프리뷰 기능에서 계속 오류가 발생했다. 고쳐도 고쳐도 문제가 계속 나온다! currency 문제 위젯 내에 가격을 표시할 때, 해당 스토어의 국가에 맞는 화폐단위도 출력해야한다. 미국이라면 USD, 한국이라면 KRW 이런식… 이 데이터를 결정하는 것은 서버쪽이 처리해야 했다. 따라서 프론트가 데이터를 보낼 때는 화폐 단위 정보는 없는 형태로 보낸다. 고정되어 저장된 설정의 위젯을 보여주는 것과 달리 프리뷰는 그때그떄 고객이 설정한 데이터의 형식을 보여줘야 한다. 따라서 고객의 디자인 설정값이 요청 본문에 담겨있고, 이를 렌더링한 위젯을 반환한다. 이때, 서버에서 관리하는 데이터베이스 내 위젯 객체와 클라이언트에서 보내는 요청을 검증하는 스키마는 currency를 제외하곤 동일하다. 이걸 몰라서 한참 해메고 있었다.. 자꾸 500 에러가 뜨는데 왜 안될까 못찾았는데.. 클라이언트에게 데이터를 받아 스키마 객체로 처리한다. 이 데이터를 그대로 위젯 데이터객체에 넣는다. 렌더링한다. 이 때, 스키마에는 currency가 없어 렌더링 과정에서 참조할 필드가 없으니 오류가 발생한다. 의 문제였다. ...

2024년 3월 25일 · 2 분 · 배준수

스프레드시트에 데이터 병합하는 크론 고치기

Today I Learned 날짜 2024년 3월 22일 금요일 내용 위젯 위젯 내용이 에러메시지에 담기는 문제에 대해 조언을 받았는데, 프론트 쪽의 문제일 수 도 있다고 한다. 응답을 받을 때 Text로 처리하는 함수를 사용하는 쪽으로.. 자세한 결과는 월요일에나 나오지 않을까 싶다. 고객 데이터 조회 예전에 진행했던 태스크에 문제가 생겼다. 고객들의 서비스 사용 정보를 구글 스프레드시트에 매일 갱신하는 함수가 제대로 작동하지 않았다. 리뷰 서비스나, AI 서비스를 사용하면 사용 개시 시간을 기록해야 하는데 사용한다고 기록했음에도 불구하고 구체적인 시간은 저장되지 않고 있었다. ...

2024년 3월 22일 · 2 분 · 배준수

에러메시지에 응답 담기

Today I Learned 날짜 2024년 3월 21일 목요일 내용 Angular 최근 작업한, 앱 내에 서비스 삭제 경로를 추가하는 건 나름(?) 큰 작업이었다. 그동안은 컴포넌트에 변수에 대한 조건을 추가하는 등의 사소한 작업이었는데, 새로운 하위 컴포넌트를 만들어야 했다. 모달 형태로. 기능 자체는 어제 TIL에 작성한 대로 완성했다. 다만, 기존에 작성되있는 방식에 맞추기 위해, 유지보수를 수월하게 하기 위해, 박살난 CSS 수준을 끌어올리기 위해 감사하게도 코드 리뷰를 받을 수 있었다. 이 TIL에 적어내면 참 좋겠으나 아직 내 것으로 받아들이지 못해 쓸 수 없다. 그래도 열심히 받아 적었으니 빨리 적용해보고 내가 몰랐던 부분에 대해 정리해야겠다. 최근 스프린트들이 프론트쪽에 작업이 몰리면서, 내가 프론트를 어느정도 할 수 있다면 팀의 일정에 도움이 많이 되겠다고 느꼈다. 마침 기가 막히게 성장할 환경이 갖추어졌으니 열심히 하기만 하면 될 듯! ...

2024년 3월 21일 · 2 분 · 배준수