
— 설계가 끝난 자리에서, 시스템이 시작된다
1편에서 사업자번호를 묶음 키로 쓰는 의료 다중 영역 설계를 적었다.
2편에서 그 설계를 회원가입 폼으로 옮긴 여섯 시간을 적었다.
이번 글은 그 다음 자리다.
가입 폼만 작동한다고 시스템이 작동하는 것은 아니다. Make 시나리오, 대시보드, 영역 전환, 불량신고, 마케팅 ROI까지 한 줄로 연결돼야 한다.
마음이 급했다. 한 시간이라도 빨리 대시보드 v4.0을 보고 싶었다. 자는 동안에도 꿈을 꾸고, 새벽에 잠들어서 잠깐 자고 일어났는데도 왠지 개운했다. 그래서 아침부터 액셀을 밟기 시작했다.
그날 밤. PHP 사고가 났다.
가입 폼에서 영역 다중 선택된 데이터가 Make로 넘어왔다. 이걸 영역 수만큼 행으로 분기시키는 라우터를 짰다.
단일 영역 → 1행 생성
다중 2영역 → 2행 생성, partner_id에 접미사 추가
다중 3영역 → 3행 생성, partner_id에 접미사 추가
법률 플랫폼인 렉스랩은 1:1 구조 그대로 작동한다. 단일 영역, 단일 행, partner_id에 접미사 X.
의료는 영역 접미사가 붙는다. partner_N_skin, partner_N_hair, partner_N_beauty.
같은 Make 시나리오 안에서 두 구조가 분기되도록 짰다. 라우터 하나 추가. 그 외 기존 로직은 그대로.
테스트 환경에서 잘 작동했다. 본체로 이관 — 이관 오류. 환경 변수, 권한, 시트 ID 등 차이를 하나씩 맞췄다. 1시간 정도 소요.
가입은 끝났다. 다음은 그 다중 영역 파트너가 대시보드에서 자기 정보를 보는 자리였다.
기존 대시보드 v3는 1파트너 = 1대시보드였다. 다중 영역 파트너는 영역별 잔여·충전·CS·리드 상태가 다 다른데, v3 구조로는 보여줄 자리가 없었다.
이 단계에서 가장 두려운 자리는 작업 컨텍스트 자체의 무게였다. AI 도구는 컨텍스트가 누적될수록 토큰 한계가 위험하다. v2부터 v3까지 누적된 작업 흐름이 그 컨텍스트 안에 들어 있어, 작업 중간에 그 흐름이 끊어지는 것이 가장 큰 리스크였다.
위험 구간에서는 도구에 의지하지 않고 직접 처리하는 흐름을 선택했다.
v4로 전면 재구축했다.
핵심 구조:
sync-all — 사업자번호로 모든 영역 행을 그룹핑해서 가져옴partner_verticals — 영역별 데이터를 JSON 묶음으로 한 번에 처리가장 중요한 자리는 영역별 lead_status / charges 분리였다.
피부 영역의 충전·잔여는 피부 행에서만 보여줘야 한다. 탈모 영역의 리드 상태는 탈모 행에서만. 영역 탭을 전환하면 그 영역의 데이터만 보이게.
렉스랩은 영역 탭 자체가 없다. 단일 영역이라 기존 v3 UI 그대로 작동한다. 의료만 탭 분기 UI 추가.
같은 대시보드 코드에서 법률은 탭 X, 의료는 탭 O — 사업자번호 그룹핑 결과에 따라 자동 결정.
다음은 불량신고 통합이었다.
리드 매칭 후 파트너가 허수 리드를 신고하면, 시스템이 행 잠금 + 신고 버튼 비활성화 처리해야 한다. 이걸 영역별로 분리.
sync-reports 시나리오 신규로 만들었다. 리드 테이블에 신고 상태 컬럼을 표시하고, 신고된 리드는 행 자체 잠금. 신고 버튼은 상태에 따라 분기 — 신고 가능 / 처리 중 / 환불 완료 / 신고 불가.
여기까지 했을 때 시간이 저녁이었다.
마지막 통합 단계에서 PHP 사고가 났다.
작업이 12시간 가까이 이어졌다. 프로젝트가 끝나기 전 컨텍스트가 터질 위험을 줄이려고 작업을 압축한 탓에, 시간보다 체력이 먼저 닿았다. 눈꺼풀이 무거웠다.
대시보드 코드를 한 번에 묶어 정리하다가 함수 충돌. 흰 화면. 운영 중인 시스템이 5분간 다운.
멍하니 화면을 바라본다. 나라 잃은 표정이었을 것이다.
아니다. 빨리 복구해야 한다.
자세를 고쳐 앉고 다시 정신을 집중했다. 백업이 있었다. 4시간 전 백업 — 작업의 상당 부분이 들어 있는 자리.
복원했다. 흰 화면 — 사라짐. 시스템 정상 작동. 다만 그 4시간 동안 작업한 코드는 사라졌다.
다시 짰다. 익숙한 자리라 두 번째는 빨랐다. 4시간 → 1시간.
그 자리에서 한 가지 결정했다.
백업은 4시간 단위가 아니라, 함수 묶음을 바꿀 때마다.
운영 중인 시스템에서 코드 묶음 변경 직전은 항상 위험한 자리다. 5분 다운이 4시간 작업 손실이 됐다. 위험 직전 백업이 손실의 크기를 결정한다.
마지막 자리는 phone+name 매칭이었다.
리드 매칭 시 전화번호만으로는 동명이인 위험이 있어, 전화번호 + 이름 조합으로 매칭 키를 강화했다. 기존 로직에 이름 매칭 조건 추가 — 한 줄.
자정 가까웠다.
다음 날 대시보드에 마케팅 ROI 페이지를 추가했다.
파트너가 자기 데이터를 지표·증거로 확인할 수 있는 자리.
대시보드가 시스템 작동을 보여주는 자리에서, 비전을 증명하는 자리로 한 단계 더 나아간 시점이었다.
조각이 하나로 작동하는 자리가 시스템의 시작점이다.
설계 → 폼 → Make → 대시보드 → 불량신고 → ROI. 한 줄로 연결되는 순간, 그제야 시스템이 살아 있다고 말할 수 있다.
법률 렉스랩은 1:1, 의료 (피부, 성형, 탈모)는 다중. 두 구조가 같은 시스템 안에서 함께 작동한다. 6월 15일 뷰티케어랩(성형) 런칭까지, 이 시스템이 세 영역의 의료 데이터를 동시에 처리하게 된다.
하나의 플랫폼이 완성되기까지 다양한 분야의 전문가가 필요하다. 또한 그만큼의 다양한 기술이 필요하다.
운영자의 자리는 조각으로 나뉘어져 있는 이 기술의 파편들에 경영 철학을 덧대고, 시스템을 관통할 수 있는 능력에 있다.
이번 시리즈는 흩여진 조각의 퍼즐을 맞추고, 파이프라인을 연결하는 그 시야에 대한 기록이였다.