목록으로

영업 담당자 자동매칭 시스템 구축 및 DB 마이그레이션

2025년 8월 ~ 2026년 3월Fullstack Developer주식회사 루멘테라
Next.jsReactTypeScriptNestJSNode.jsPostgreSQLPythonClaude Code

Overview

주요 벤더사의 비정형 지역 데이터를 표준화하고, 약국 주소 기반 담당자 자동매칭 시스템을 구축하여 수동 매칭으로 인한 거래 지연 문제를 해결했습니다.

벤더사마다 완전히 다른 지역 구분 체계를 통일된 데이터로 정규화한 뒤, 행정안전부 도로명주소 API를 활용한 자동매칭 시스템을 구축했습니다. 이후 정적 JSON 158,000줄을 DB로 마이그레이션하고 매칭 로직을 서버로 전면 이관하여, 벤더사 관리자가 직접 데이터를 관리할 수 있는 환경까지 완성했습니다.

Structure

담당자 자동매칭: 지역 데이터 정규화로 기준을 만들고, 주소 기반으로 담당자를 배정1단계 — 지역 데이터 정규화비정형 입력벤더별 상이한 표기주소 파싱표기를 단위로 분해정확 매칭기준과 1:1 대조유사도 매칭남은 값만 처리미해결분만지역 마스터통일된 기준 데이터2단계 — 주소 기반 담당자 배정거래 신청약국 주소 입력주소 → 지역공공 주소 API담당 구역 조회기준 데이터 참조담당자 배정자동정규화된 기준 데이터를 배정 단계가 참조 · 자동 배정되지 않는 건만 수동으로 남김
벤더마다 지역 구분 체계가 달라 그대로는 매칭할 수 없었다. 정확 매칭으로 걸러지지 않는 값만 유사도 매칭으로 넘겨 단계적으로 정규화했다.

Challenges & Solutions

비정형 벤더 데이터 → 통일된 JSON 데이터로 변환

Before
  • 벤더사마다 완전히 다른 지역 구분 체계
  • A 벤더는 전국 2,000여 개 세분화, B 벤더는 20여 개로 구분
  • "부산,대구 = 영업사원1" 수준의 비정형 데이터 존재
After
  • 가장 세분화된 벤더 데이터 기준으로 타 벤더사 대조, 전국 2,705개 지역 마스터 데이터(Brick Form) 설계
  • Python 매핑 도구로 주소 파싱 → 정확 매칭 → 유사도 매칭 3단계 정규화
  • 벤더별 비정형 데이터를 통일된 JSON 구조로 변환

수동 매칭 → 자동매칭 시스템 구축

Before
  • 벤더사 관리자가 거래신청 건마다 담당 영업사원을 직접 확인·수동 매칭하는 구조
  • 입점 초기 하루 수백 건 이상의 거래신청을 벤더 측에서 일일이 처리
  • 승인 지연으로 거래 미성사 및 약국의 거래신청 취소 발생
  • 플랫폼 거래 수수료 손실 및 벤더·약국 양측의 신뢰도 하락
After
  • 정규화된 JSON + 행정안전부 도로명주소 API 활용, 약국 주소 기반 담당자 자동매칭 시스템 구축
  • 자동 매칭 성공률 80% 이상 달성
  • 예외 케이스 점진적 처리로 90% 이상까지 개선

JSON 하드코딩 → DB + 서버 전면 이관

Before
  • 영업사원 인사이동·담당지역 변경 시 개발자가 JSON 직접 수정 후 배포 필요
  • 반영까지 수일 소요, 잘못된 담당자 배정 또는 미배정으로 거래 승인 지연
  • 변경 이력 추적 불가
  • 프론트엔드에 매칭 로직 산재
  • 동일 JSON이 두 프로젝트에 복제, 한쪽만 수정될 리스크
After
  • DB 4개 테이블 설계 + 데이터 마이그레이션
  • 매칭 로직 서버 전면 이관 (프론트 코드 ~700줄 삭제, JSON 158,000줄 제거)
  • 벤더사 관리자가 개별 CRUD + 엑셀 업로드 → diff 확인 → 승인 워크플로우로 직접 관리
  • 표준화된 데이터 구조 + 검증된 매칭 로직 기반, Claude Code 활용 고도화로 DB 설계~QA 1주일 내 완료

Impact

90%+

담당자 자동매칭 성공률

0

158,000줄 → 0

정적 JSON 완전 제거

1주일

DB 마이그레이션 ~ QA