[case] 사례 연구 · pluswing
PLUSWING
다섯 개 언어로 동시에 서는 수출 카탈로그
(주)플러스윙 F&T Partners 사업부
pluswing.awg.kr ↗01과제
해외 바이어에게 보낼 제품 정보가 파일로 흩어져 있었습니다. 바이어의 언어가 제각각이라 같은 제품을 몇 벌씩 따로 만들어야 했고, 한 곳을 고치면 나머지가 낡았습니다.
중개업은 취급 품목이 자주 바뀝니다. 제품이 바뀔 때마다 외주를 부르는 구조로는 카탈로그가 항상 실제보다 늦습니다.
담당 인원은 한 명이고 개발자가 아닙니다. 관리 화면이 어려우면 결국 아무도 안 쓰고 파일로 돌아갑니다.
02접근 · 판단은 사람이, 실행은 시스템이
판단은 사람이, 실행은 시스템이 맡는 분리를 적용했습니다. 무엇을 팔지는 발주사가 정하고, 그것을 다섯 언어로 세우는 일은 시스템이 합니다.
언어를 페이지의 복사본이 아니라 제품의 속성으로 뒀습니다. 제품 한 건에 언어별 번역이 딸리는 구조라, 등록 한 번이 다섯 언어에 동시에 반영됩니다.
번역이 비어 있어도 화면이 깨지지 않게 했습니다. 빈 칸은 영어로 대체됩니다 — 번역을 다 채운 뒤에 열자는 순서를 없애고, 열어 두고 채우는 순서로 바꿨습니다.
관리 화면을 개발자 도구가 아니라 업무 화면으로 만들었습니다. 용어는 한국어로, 조작은 화면 안에서 끝나게 했습니다.
03구축 내용
다섯 언어 카탈로그
한국어·영어·일본어·번체중국어·태국어. 제품 한 건을 등록하면 다섯 언어 경로에 함께 서고, 번역이 비면 영어로 대체됩니다. 방문자의 브라우저 언어를 보고 첫 화면을 고릅니다.
제품·카테고리 관리
제품 등록·수정·정렬과 카테고리 편성을 화면에서 처리합니다. 언어 탭을 오가며 번역을 채우고, 대표 이미지와 상세 이미지를 각각 올립니다.
카카오 로그인·관리자 승인
새 담당자가 카카오로 한 번 로그인하면 승인 요청이 남고, 기존 관리자가 화면에서 승인합니다. 계정을 만들어 나눠 주는 절차가 없습니다.
제품별 QR
제품마다 그 상세 페이지로 가는 QR 을 내려받습니다. 인쇄물·전시 부스에 그대로 씁니다. 최종 도메인이 확정되기 전에는 잠정본 경고를 띄워 잘못 인쇄하는 것을 막습니다.
메신저 문의 버튼
카카오톡·라인·위챗·왓츠앱·이메일을 화면에서 켜고 끕니다. 채널을 더하는 데 코드를 고치지 않습니다. 버튼은 각 앱 아이콘으로 보여 줍니다 — 아이콘은 바이어의 언어를 거치지 않습니다. 보는 언어에 따라 순서가 바뀌어, 일본어·태국어에서는 라인이, 번체중국어에서는 위챗이 먼저 옵니다. 카카오톡은 한국어 화면에만 둡니다. 딥링크가 없는 채널은 아이디를 복사해 줍니다.
생성엔진이 읽는 층
제품·목록·회사 정보를 구조화 데이터(JSON-LD)로 심고 llms.txt 를 영문·한국어로 두었습니다. 사람 방문자와 AI 방문자가 같은 페이지를 읽습니다.
04구성
05결과
제품 16종이 다섯 언어로 서 있고, 번역 80건이 함께 붙어 있습니다(2026-08-13 실측).
카탈로그를 고치는 일이 발주사 안에서 끝납니다. 제품을 더하고 문구를 고치고 문의 채널을 바꾸는 데 AWG 를 부를 필요가 없습니다.
바이어에게 보낼 주소가 제품 단위로 생겼습니다. 파일을 첨부하는 대신 링크 하나를, 부스에서는 QR 하나를 건넵니다.
아직 발주사가 콘텐츠를 채우는 중이라 바이어 유입 성과는 측정 전입니다. 문의 건수 · 유입 국가 같은 지표는 데이터가 쌓이면 이 자리에 추가합니다.
※ 본 페이지는 사실 기반으로 작성되었으며, 측정되지 않은 항목은 측정 예정으로 표기합니다.
06이 건에서 배운 것
카카오 계정의 이메일은 회사 주소가 아니다
관리자를 이메일로 찾아 등록하려던 절차가 첫 단계에서 막혔습니다. 카카오 계정에 붙은 주소는 개인 주소인 경우가 흔해 회사 주소로는 찾을 수 없습니다. 그래서 순서를 뒤집었습니다 — 당사자가 먼저 로그인해 승인 요청 행을 만들고, 그 행을 보고 승인합니다. 사람을 찾아 계정을 만드는 것이 아니라, 온 사람을 확인해 들이는 방향입니다.
허용 목록에 없는 복귀 주소는 거절되지 않고 조용히 바뀐다
로그인을 누르면 형제 서비스 도메인으로 떨어졌습니다. 오류는 어디에도 뜨지 않았습니다. Supabase 는 허용되지 않은 복귀 주소를 거절하는 대신 프로젝트 기본 주소로 바꿔치기합니다. 앱 코드를 아무리 봐도 원인이 없는 부류의 고장이라, 인증 서버가 무엇을 기억했는지(auth.flow_state) 직접 들여다봐야 잡힙니다.
복귀 주소를 환경변수로 고정하면 미리보기 배포가 통째로 죽는다
위 문제를 복귀 주소 고정으로 풀고 싶어집니다. 그러면 안 됩니다. 로그인 검증값이 로그인을 시작한 그 주소의 쿠키에 심기기 때문에, 다른 주소로 돌아오면 검증값을 못 찾습니다. 복귀 주소는 고정하는 것이 아니라 지금 서 있는 주소에서 만들고, 대신 미리보기 주소까지 허용 목록에 넣습니다.
공개 화면의 파손은 관리자로 로그인한 채로는 보이지 않는다
표에 컬럼을 더했더니 방문자 화면에서 회사 정보와 문의 버튼이 통째로 사라졌습니다. 비로그인 방문자에게 이 표가 컬럼 단위로 열려 있었고 새 컬럼은 자동으로 열리지 않는데, 그 컬럼을 읽는 함수 전체가 거부됩니다. 관리자 화면은 표 단위 권한이라 멀쩡했습니다. 그래서 확인은 로그인한 화면이 아니라 비로그인 경로로 직접 합니다.
긴 변 기준으로 줄이는 이미지 처리는 세로로 긴 이미지를 파괴한다
상세용 세로 이미지가 1000×5200 에서 308×1600 이 됐습니다. 안에 박힌 글자를 아무도 읽을 수 없습니다. 갤러리 사진과 상세용 긴 이미지는 용도가 반대라 규칙도 반대여야 합니다 — 후자는 가로만 기준으로 맞추고 세로는 비율 그대로 둡니다. 화면에서도 올리는 자리를 둘로 나눠, 무엇을 어디에 올리는지가 상자 자체로 드러나게 했습니다.
한 칸을 고치려면 손대지 않은 칸까지 채워야 하는 규칙
발주사가 "수정이 안 된다"고 했습니다. 진입점 문제 하나를 고치고 직접 저장해 보니 다른 원인이 있었습니다 — 영어 상세가 비어 있으면 저장이 거절되는데, 한국어 오타 하나를 고치는 데에도 그 규칙이 걸렸습니다. 등록에는 요구하고 수정에는 경고만 하도록 갈랐습니다. 신고된 증상 하나에 원인이 하나라고 가정하지 않고, 고친 뒤 그 사람이 하려던 일을 끝까지 해 봅니다.

