코트디부아르의 화폐 단위

2024년 4월 18일 목요일

Today I Learned

날짜

2024년 4월 18일 목요일

내용

이메일 레거시 코드 개선

이메일 보내는 로직이 2개로 나누어져있다. 하나는 message_sender로 클래스로 구현되어있고, 다른 쪽은 템플릿 만드는 함수, 데이터 처리하는 함수, 전송하는 함수가 구현되어있다. 클래스에는 이 함수들이 메서드로 구현되어 있는 형태인데 추상 패턴이라 이메일 뿐만 아니라 웹 푸시, SMS 전송에도 사용할 수 있다. 따라서 모든 이메일 전송은 전자의 클래스를 사용하도록 개선해야 한다. 단순히 사용 함수를 바꾼다고 해결할 문제는 아닌게, 받는 변수와 처리 로직이 다르다. 전송 클래스는 변수로 messaging_log 테이블의 레코드를 받게 되는데 누구에게 어떤 이유로 어떤 형식의 메일을 보냈는지가 기록되는 테이블이다. 이 테이블에 기록을 남기는 메일은 프로덕트 리뷰 서비스로 발생하는 것들만 포함된다. 첫 리뷰 요청 메일이라던가, 장기간 사용 리뷰 요청 등등 정책에 의해 메일이 전송되어야 할 경우, 해당 메일 전송을 예약하기 위해 전송 대기 상태로 저장해둔다. 1달 후 보내져야 할 메일은 그 시간이 기록된 채로 테이블에 저장되고, 어떤 타입의 메일들은 저장된 즉시 처리되어 전송완료 상태로 변경된다.

고객에게 보내는 서비스 안내 메일(웰컴 메일이나 삭제 후 설문조사를 위한 메일, 서비스 비활성화 유저에게 보내는 메일 등)은 이 로그를 남기지 않는다. 즉, ‘클래스’로 구현된 메일 전송 로직을 사용하면 초기화때 messagingLog변수로 무엇을 줘야할까? 기존과 달리 메세지 로그 테이블을 모든 메일에 대한 테이블로 변경해도 될 까? 그렇게 하더라도 구현하여 테스트 해보기 까지 쉽지 않을 것 같다. 물론 가장 중요한 전제는 기존 기능들에 아무 영향이 없어야하고, 이 부분도 분명히 확인해봐야 한다.

추가로, 각 메시지는 데이터베이스에 어떤 유형인지와 구체적으로 어떤 메일인지를 기록한다. 여러가지 이슈로, 이 필드가 각각 2개씩 (typesetting_type, type_detailsetting_type_detail ) 만들어져 있다. 우선 이 부분을 통일해서 불필요한 필드를 삭제하려하는데 어디서 어떻게 문제가 터질지 몰라 무섭다

구현에 테스트까지 쉽지 않은 태스크다.. 아이고 두야

코트디부아르는 어떤 화폐를 쓰는지 아시나요?

기존에 위젯에 가격을 표시할때 통화를 붙여주는 파이프가 존재했다. 예를 들어, 가격이 1000이고 스토어가 미국에 있다면 “USD 1000.00” 으로 값을 집어넣는다. 이걸 약간 수정했는데, 숫자 3개마다 콤마를 붙이도록 했다. “USD 1,000.00” 이런식으로.

통화를 붙이고 나서 공백을 기준으로 2개로 쪼갰다. 그리고 오른쪽 숫자에만 콤마를 붙이는 작업을 처리했다. 그런데 오늘 실서버에서 오류가 발생했다. 확인해보니 화폐 단위가 XOF라고 한다. 누구세요…? 검색해봤다.

서아프리카 CFA 프랑 은 서아프리카의 8개 독립국가인 베냉, 부르키나파소, 코트디부아르, 기니비사우, 말리, 니제르, 세네갈 그리고 토고의 통화이다. CFA는 아프리카의 경제 공동체 를 의미한다. 위키백과

그렇다. 이게 바로 글로벌 서비스지! 문제는, 이 화폐는 단위 표시가 2단어다. “ F CFA 500” 이런식으로.. 기존 코드는 당연히 쪼개면 공백을 기준으로 2개가 나올 것으로 생각하고 처리하는데 3개가 나오니 오류가 떴다. 몰랐지 나도 3개가 나올줄은…. 그냥 쪼개서 리스트에 담아서 통화 단위가 2개일 때와 3개일 때를 나누어주었다. 설마 4개는 없겠지..?

회고

빨리 GPT가 자라서 테스트 좀 알잘딱깔센으로 해줬으면 좋겠다.