슈퍼 어드민 수정

2024년 6월 19일 수요일

Today I Learned

날짜

2024년 6월 19일 수요일

내용

슈퍼어드민

우리가 고객사를 관리하는 사이트가 슈퍼어드민이다. 모든 고객의 알파리뷰 어드민에 접근할 수 있고 대략적인 정보도 볼 수 있다. 다만 여기엔 브라우즈 부스터 앱과 관련된 정보가 없어서 추가해야 했다. 만든지 상당히 오래됌 + 서비스 구조와는 사뭇 다름 문제가 겹쳐 머리 아팠다.

앱이 하나 추가되면서, 쇼핑몰을 나타내는 샵 테이블은 2개로 나누어졌다. 두 개를 조회해야 한다는 효율성 문제보다는, 두 테이블이 연관된 것이 다르다는게 자꾸 문제로 나타났다. 예를 들어, 알파 플러스 앱에선 온보딩 데이터가 닮긴 shop_initial_info 테이블이 있는 반면, 브라우즈 부스터에는 (필요도) 없다. 해당 쇼핑몰이 우리 서비스를 사용한 지속기간은 여기 있는 installed_at 이라는 필드를 참조해야 하는데 이 부분이 꽤 거슬렸다. 두 테이블이 필요한 값을 다른 테이블의 다른 필드에서 가져와야 했고 기존에 있던 함수들의 타입 힌팅이 계속 어긋났다. 무작정 함수를 나누기엔, 어디서 어떻게 또다른 오류가 발생할지 몰라 그럴 수 없었다.

슈퍼어드민에서 가장 핵심적인 기능은 슈퍼어드민 계정을 이용해 고객사의 대시보드(알파리뷰 어드민)에 접근하는 것이다. 이슈 문제가 터졌을 때 상황이 어떤지 직접 눈으로 확인할 수 있으니까! 이 기능은 로그인 기능과 유사하다. 로그인에 성공하면 여러 데이터들을 프론트에서 넘겨주는데 그것을 똑같이 만들어주면 된다. 더 쉽게 말하자면, 원래 계정과 관계된 샵 데이터를 데이터베이스에서 탐색하여 반환한다면 슈퍼어드민은 우리가 접근하려는 샵을 슈퍼어드민 계정에 집어넣어 주는 것이다. 마치 슈퍼어드민으로 로그인하면 그 계정이 연결된 것 처럼. 앱이 하나 추가되면서 각 알파 플러스를 사용하는 앱 뿐만 아니라 브라우즈 부스터를 사용하는 앱 데이터도 넘겨줘야 했기 떄문에 슈퍼어드민에도 이 부분을 추가해주었다.

이 대시보드로 이동할 때 특이하게 shop_id로 샵을 구분한다. 기존 우리 서비스에선 대부분 shop_access_code 라는 8글자의 고유 값을 사용하고 instagram_comments에서 shopify shop platform id 를 사용한다. 옛날 옛날 코드라 왜 그런지 파악하는 건 의미없어보이고.. 문제는 샵 테이블이 두개라 샵 아이디로 구분하는게 힘들다는 것이다. shop_id 가 22라면 알파 플러스 테이블의 샵 아이디일까? 브라우즈 부스터 샵 테이블의 아이디일까? 이에 대해 별도로 표기하면 좋겠지만은 프론트를 건드릴 생각도 없기 때문에 나름 묘수를 내놨다.

브라우즈 부스터 샵의 아이디는 음수로 표기했다.