Skip to content
one-year-gapPublic

About

고객 데이터 기반 초개인화 통신 서비스 분석 및 추천 플랫폼 Holliverse

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

48 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Holliverse

고객 데이터 기반 고객 분석 서비스 (팀: 한살차이)


image

📚 목차


📌 프로젝트 소개 (Overview)

Holliverse는 통신사의 고객 데이터를 기반으로 고객의 특성을 이해하고 분류하는 과정을 서비스로 구현하는 통합 프로젝트입니다.
고객의 기본 정보와 상담 이력 데이터를 조합하여 고객 성향과 특징을 도출하고, 이를 서비스 화면(고객/관리자) 으로 제공합니다.

또한 CRM/CDP 관점에서 고객 데이터를 분석해 추천, 알림 등 행동(Action) 서비스로 연결함으로써,
단발성 분석이 아니라 고객과의 지속적인 연결(Engagement) 을 지향합니다.


🛠️ Tech Stack

Frontend

  • Next.js (SSR/CSR): 초기 로딩/SEO와 인터랙션을 함께 고려한 렌더링 구조
  • TypeScript: 정적 타입 기반 안정적인 UI/데이터 모델링
  • Tailwind CSS: 빠른 UI 제작 및 일관된 디자인 시스템
  • TanStack Query: 서버 상태 캐싱/동기화, API 호출 표준화
  • Zustand: 전역 상태 관리(인증 상태, UI state 등)

Backend

  • Java 17 / Spring Boot 3.x: 도메인 중심 REST API 구축
  • Spring Security + JWT(OAuth2 확장): 인증/인가 및 소셜 로그인 연동
  • JPA(Hibernate) + Jooq: 핵심 도메인 CRUD + 복잡한 조회/통계 쿼리
  • Spring Batch: 일 단위 고객 세그먼트/캐릭터 산출, 타겟 리스트 생성

Data / Storage

  • PostgreSQL: 핵심 트랜잭션 데이터(회원/상품/상담/쿠폰/발송이력) 저장

Infra / DevOps

  • Docker Compose: 로컬 개발 환경 표준화(Postgres 등)
  • GitHub Actions: CI(빌드/테스트/린트/커버리지) 자동화

🖥️ User UI (고객 화면)

1) 스플래시 페이지, 로그인 페이지, 약관 페이지, 회원가입 페이지

화면 제공 (UI)

Image

기능 소개

  • 스플래시 페이지
    • 대기시간 동안 로딩바가 채워지는 CSS를 적용시킬 예정입니다.
  • 로그인 페이지
    • 폼 로그인, 소셜 로그인 기능을 제공합니다.
    • 비회원은 회원가입 페이지로 이동하여 가입할 수 있습니다.
  • 약관 페이지
    • 약관 동의를 한 후에 회원가입 페이지로 이동할 수 있습니다.
  • 회원가입 페이지
    • 기본 정보와 아이디, 비밀번호를 입력받습니다.
    • 아이디는 소셜로그인 회원과 형식을 통일하기 위해 이메일로 받을 예정입니다.
    • 주소에서 상세주소는 생략하였습니다.

2) 메인 페이지

화면 제공 (UI)

Image

기능 소개

  • 사용 패턴 분석 카드를 통해 데이터/통화/문자 사용량을 막대그래프 형태로 제공합니다.
  • 예상 요금을 통해 현재 사용 중인 요금제의 가격을 확인할 수 있습니다.
  • 하단의 배너를 통해 두가지 페이지로 이동이 가능합니다.
    1. 고객 유형 캐릭터 페이지
      • Holliverse에서는 사용자에게 사용패턴에 맞는 캐릭터를 지정해줍니다.
      • 사용자가 어떤 캐릭터인지 보여주는 페이지로 연결됩니다.
    2. 맞춤 상품 추천 페이지
      • 해당 고객이 속한 캐릭터 유형에게 추천되는 상품 페이지로 연결됩니다.
      • 해당 페이지는 상품 페이지의 필터링 결과와 동일합니다.

3) 상품 페이지

화면 제공 (UI)

Image

기능 소개

  • 요금제 상품을 조회할 수 있는 페이지입니다.
  • 상단의 필터링을 통해 분류하여 조회가 가능합니다.
    1. 전체/추천 필터링: 전체 상품을 조회할 지, 본인의 캐릭터 유형에게 추천되는 상품제를 조회할 지 결정합니다.
    2. 상품제 카테고리 필터링: 5G/LTE, 태블릿/스마트워치, 부가서비스, IPTV, 인터넷
    3. 상위 분류 카테고리가 부가서비스인 경우, 추가적인 필터링을 도입할 예정입니다.
  • 요금제 상품 카드를 누르면 상세 정보 모달이 등장하며 아래의 기능을 수행할 수 있습니다.
    1. 요금제 상세 정보 조회
    2. 현재 요금제와 비교 (가격, 추가혜택 등)
    3. 요금제 변경

4) 캐릭터 유형 페이지

화면 제공 (UI)

Image

기능 소개

  • Holliverse는 사용자의 서비스 이용 정보를 분석하여 고객 유형 캐릭터를 지정해줍니다.
  • 사용자는 캐릭터를 통해 본인의 서비스 사용 패턴을 확인할 수 있습니다.
  • 캐릭터 이미지 저장 기능을 통해 본인의 캐릭터를 남들과 공유할 수 있도록 할 예정입니다.

5) 마이 페이지, 쿠폰 페이지

화면 제공 (UI)

Image

기능 소개

  • 본인이 사용중인 요금제에서 제공하는 혜택을 확인할 수 있습니다.
  • 로그아웃을 할 수 있습니다.
  • 쿠폰 페이지로 이동할 수 있습니다.
    • 보유한 쿠폰을 조회할 수 있습니다.
    • 보유한 쿠폰을 사용할 수 있습니다.

🖥️ Admin UI (관리자 화면)

1) 고객 통합 관리 페이지

화면 제공 (UI)

Image

기능 소개

  • 검색바, 필터링바를 통해서 조회할 사용자들을 필터링할 수 있습니다.
  • 고객 항목을 클릭시 고객 상세 정보를 확인할 수 있습니다.
  • 필터링된 고객들에 대한 정보를 차트로 조회할 수 있습니다.
    1. 등급별 고객 분포
    2. 월간 데이터 사용량

2) 지역별 통계 페이지

화면 제공 (UI)

image

기능 소개

  • 평균 ARPU(가입자당 평균 매출) 및 데이터 사용량을 확인 가능합니다.
  • 지도에서 지역을 클릭시 해당 지역의 ARPU 및 데이터 사용량 그래프가 추가적으로 보여지게 되고, 그래프 호버시 각 지역별 정보를 확인 가능합니다.

3) 고객 특성 페이지

화면 제공 (UI)

Image

기능 소개

  • 고객 유형별 분포 조회
    1. 고객 페이지의 고객 유형 캐릭터와 동일한 분류입니다.
    2. 막대그래프로 조회할 수 있으며 막대그래프를 호버시 해당 유형의 고객들의 사용 요금제 분포 정보를 확인할 수 있습니다.
  • 평균 ARPU 및 데이터 사용량 조회: 막대그래프를 클릭시 해당 유형의 ARPU 및 데이터 사용량 그래프가 보여지게 됩니다.

4) 관리자 - 상담이력 페이지

화면 제공 (UI)

Image

기능 소개

  • 상담 키워드 버블 차트
    1. 상담 내요에서 추출된 주요 키워드를 버블 차트 형식으로 조회할 수 있습니다.
    2. 빈도 수가 높은 키워드일수록 버블의 크기가 커집니다.
    3. 차트 하단에서는 각 키워드의 증감 추이를 보여줍니다.
  • 상담 트래픽
    1. 시간대별로 상담 트래픽을 선형 그래프로 조회할 수 있습니다.
    2. 요일별로 상담 트래픽을 선형 그래프로 조회할 수 있습니다.
  • 전체 상담 처리 현황
    1. 상담 현황을 원형 그래프로 조회할 수 있습니다.
    2. 상담 현환 종류: 완료, 진행중, 미처리

5) 고객이탈 페이지

화면 제공 (UI)

Image

기능 소개

  • 이탈 위험군 고객 목록을 조회할 수 있습니다.
  • 이탈 위험군 인원의 증감 추이를 날짜별로 막대 그래프를 통해 조회할 수 있습니다.
  • 실시간 이탈 고객 피드를 통해 어떤 고객이 이탈 위험 지수를 높이는 활동을 했는지 조회할 수 있습니다.

6) 제안서 작성 페이지

화면 제공 (UI)

Image

기능 소개

  • AI가 데이터를 분석하여 보고서 및 제안서 초안을 작성 해줍니다.
  • 보고서는 PDF 형식으로 다운로드할 수 있습니다.
  • AI가 작성해준 보고서를 참고하여 제안서를 첨삭 및 제출할 수 있습니다.
  • 제안서 예시: 새로운 요금제 출시 제안

📌 핵심 기능 (Overview)

1) 요금제/상품 추천 (고객 캐릭터 기반)

고객이 보유한 데이터(요금제 종류, 데이터 사용량, 웨어러블 기기 사용 여부, 부가서비스 가입 내역 등)를 분석하여
팀이 정의한 6가지 고객 캐릭터 중 1개를 부여합니다.
부여된 캐릭터를 기준으로 고객에게 가장 적합한 요금제 및 관련 상품을 추천합니다.

입력 데이터 예시

  • 요금제 종류(현재 가입 요금제)
  • 데이터 사용량(최근 N일/월 사용량)
  • 웨어러블 기기 사용 유무
  • 부가서비스 가입/이용 내역
  • 그외 여러가지 데이터

처리 방식

  • 고객 특성(feature)을 생성하고, 규칙/점수 기반으로 6개 캐릭터 중 1개를 매칭
  • 캐릭터별 추천 규칙(또는 추천 후보군)을 정의하여 요금제/상품을 추천

화면 제공(UI)

image image image
  • 고객에게 부여된 캐릭터를 캐릭터 카드/이미지로 시각화
  • 캐릭터에 맞춘 추천 요금제/상품 목록 제공

운영 방식(배치)

  • 캐릭터 부여는 하루 1회 배치로 실행하며, 고객의 최신 데이터를 반영해 일 단위로 갱신

2) 고객 유지/이탈 방지를 위한 알림·쿠폰 발송 (세그먼트 기반)

서비스 이용 고객의 유지(Loyalty) 와 이탈 방지(Churn Prevention) 를 위해,
고객 데이터를 기반으로 알림/쿠폰 발송 대상을 선정하고 맞춤 혜택을 제공합니다.

정량 기준은 운영 정책에 따라 변경 가능한 Rule Config 형태로 설계합니다.


타겟 세그먼트 & 정량 기준(예시)

A. 충성 고객(Loyalty)

  • 조건 예시
    • 가입 기간 ≥ 10년
    • 멤버십 VIP 이상 유지(예: VIP/VVIP)
    • 최근 90일 상담 0건 또는 상담 만족도/긍정 비율 ≥ 80%
  • 혜택 예시
    • 데이터 쿠폰(예: 5GB)
    • 요금제 1개월 할인 쿠폰(예: 10%)

B. 이탈 위험 고객(Churn Risk)

  • 조건 예시(아래 중 2개 이상 충족 시 “이탈 위험”)
    • 약정 만료 D-30 이내
    • 최근 30일 상담에서 불만/부정 키워드 ≥ 3회
    • 욕설 키워드 1회 이상 탐지(즉시 위험 플래그)
    • 데이터 사용량 급감: 최근 7일 평균이 직전 4주 평균 대비 30% 이상 감소
  • 혜택 예시
    • 약정 갱신 유도 쿠폰(할인/추가 데이터/부가서비스 체험 등)

C. 이벤트/기타 캠페인

  • 생일 캠페인
    • 조건: 생일 당일
    • 혜택: 서비스 내 상품/부가서비스 할인 쿠폰
  • 사용량 리워드 캠페인
    • 조건: 월간 데이터 사용량 상위 1% 또는 Top N명
    • 혜택: 데이터 쿠폰(예: 10GB)

화면 제공(UI)

image
  • 고객 앱/웹에서 알림 수신 및 쿠폰 확인 화면 제공

알림 발송 플로우(다이어그램)

Untitled diagram-2026-02-19-074550

3) 분석 보고서 생성 (AI 기반 인사이트 리포트)

관리자 페이지에서 수집·집계된 지표(예: 고객 세그먼트 분포, 이탈 위험 추이, 상담 이슈 키워드, 요금제/상품 이용 패턴 등)를 기반으로
AI를 활용해 향후 비즈니스 방향성을 제안하고, 실행 가능한 인사이트를 도출하는 기능입니다.

목표

  • “데이터 조회”를 넘어, 관리자가 바로 의사결정을 내릴 수 있도록
    • 현재 상태 요약 → 문제/원인 가설 → 개선 포인트 → 실행 항목(Action Items)까지 자동 생성

입력 데이터(예시)

  • 세그먼트 지표: 고객 유형 분포, 전환/유지율, 세그먼트별 특징 요약
  • 이탈/리텐션 지표: 약정 만료 임박 고객 수, 이탈 위험 고객 추이, 쿠폰 캠페인 반응(발송/사용/전환)
  • 상담 데이터: 상담 카테고리 TOP, 불만/부정 키워드 빈도, 최근 증가 이슈
  • 이용 패턴: 데이터 사용량 분포(상위/급감), 부가서비스 가입률, 요금제 변경 패턴

산출물(관리자 화면)

image
  • 보고서 생성전 UI
image
  • 보고서 생성후 UI

  • AI 분석 리포트 카드/문서

    • 핵심 요약(Executive Summary)
    • 주요 인사이트 TOP N (근거 지표 포함)
    • 리스크/기회 요인
    • 권장 액션(우선순위/대상 세그먼트/예상 효과)
  • (미정) 리포트 다운로드(PDF) / 공유 링크 / 저장된 리포트 히스토리


AI 적용 방식(설계 포인트)

  • 관리자 지표를 그대로 넣지 않고, AI가 이해하기 쉬운 형태로 정규화/요약된 컨텍스트로 구성합니다.
    • 예: 표/JSON 형태
  • 보고서 품질을 위해 “데이터 컨텍스트 + 리포트 템플릿 프롬프트”를 분리합니다.
    • 컨텍스트: 수치/분포/추이/키워드(근거 데이터)
    • 프롬프트: 보고서 구조(요약→인사이트→액션)와 출력 형식(마크다운/섹션 고정)

기획 단계에서 “어떤 지표를 어떤 포맷으로 정리해 AI에 제공할지”를 우선 정의하고,


리포트 생성 플로우(예시)

Untitled diagram-2026-02-19-075111

⚖️ 기술 선택 근거


Persistence 전략: Customer(Core)는 JPA, Admin/Analytics는 jOOQ

Holliverse는 업무 성격이 다른 두 영역을 함께 다룹니다.

  • Customer(Core) 영역: 회원/상담/상품 등 트랜잭션 중심 CRUD(OLTP)
  • Admin/Analytics/Reco 영역: 집계·분석·랭킹 계산 등 SQL 중심 대량 처리(OLAP/Batch)

따라서 우리는 Core(Customer)에는 JPA, Admin/Analytics에는 jOOQ를 사용해 각각의 강점을 극대화합니다.


1) JPA (Customer/Core에 사용)

장점

  • 생산성이 높다: 엔티티 기반으로 CRUD를 빠르게 구현 가능
  • 트랜잭션 범위에서 dirty checking이 동작하여 도메인 로직 구현이 편하다
  • 연관관계 매핑을 통해 비즈니스 규칙을 코드로 표현하기 좋다(특히 core 도메인)

단점

  • 대량 처리/집계/벌크 업데이트에 취약
    • 대량 INSERT/UPDATE는 영속성 컨텍스트 관리(flush/clear), batch size 튜닝 등 “JPA식 최적화”가 필요
    • 벌크 update는 영속성 컨텍스트와 DB 불일치가 발생해 운영 사고 포인트가 될 수 있음
  • CTE/윈도우 함수/복잡 조인처럼 분석형 SQL을 끌고 가기 어렵고, 결국 Native Query 비중이 증가
  • N+1, 지연 로딩 등으로 실제 실행 쿼리가 코드만으로는 예측이 어려운 경우가 있음

적용 범위(우리 기준)

  • core 스키마: 로그인/인증, 고객 CRUD, 상담 기록, 상품/요금제 카탈로그 등 OLTP 트랜잭션성 CRUD
  • 관리자 영역도 “CRUD + 단순 통계” 수준이면 JPA로 충분

2) jOOQ (Admin/Analytics/Reco에 사용)

장점

  • SQL을 그대로 작성하면서도 타입 세이프(코드 생성) + IDE 지원이 강함
  • 실행 쿼리가 명확해 성능 예측/디버깅/튜닝이 용이
  • 분석/집계에서 자주 쓰는 패턴(CTE, 윈도우 함수, upsert, 복잡 조인)을 자연스럽게 표현 가능
  • 스키마/권한 기반으로 경계를 강제하는 구조에서 DB 중심 read-model/집계 모델을 만들기 적합

단점

  • 엔티티 기반 도메인 모델링(JPA 스타일)에는 부적합 (SQL 중심 접근)
  • 코드 생성/스키마 변경 관리(Flyway 연계) 등 초기 셋업 비용이 존재
  • 팀의 SQL 숙련도에 따라 러닝커브가 생길 수 있음

적용 범위(우리 기준)

  • analytics 스키마: 피처 테이블 생성, 페르소나/리스크 집계, KPI 산출
  • reco 스키마: 추천 로그 기반 집계, 랭킹 계산을 위한 조합 조회
  • 배치/집계 중심 워크로드 전반

결론: CQRS(Command Query Responsibility Segregation, 명령 쿼리 책임 분리) 패턴 적용

데이터 생성/수정/삭제 처리하는 모델과 조회를 처리하는 모델을 분리하여 각자 독립적으로 최적화하는 디자인패턴

1) 성능/운영 관점

  • 문제점: 추천 및 분석 작업은 복잡한 데이터 계산이 동반되어 SQL 튜닝이 필수적입니다. 하지만 JPA를 사용할 경우 쿼리가 간접적으로 생성되어 병목 지점을 추적하기 어렵고, 대용량 배치 처리 시 영속성 컨텍스트(flush/clear, fetch 전략, batch size 등 ORM 최적화 러닝 커브 가 커짐) 관리에 따른 러닝 커브가 매우 높습니다.
    따라서 쿼리가 명확하고 튜닝 포인트가 분명해야 운영이 가능합니다.

  • 해결책: 튜닝 포인트가 명확하고 쿼리를 직접 제어할 수 있는 SQL 기반(JOOQ/JDBC) 기술을 집계와 분석 영역에 도입하여 성능과 운영 효율을 극대화합니다.

2) 코드 복잡도 관리 및 일관성 관리

  • 문제점: 초기에는 JPA만 사용하는 것이 생산성이 높아 보이지만, 서비스가 고도화되며 집계 쿼리가 늘어나면 필연적으로 JPA + Native Query가 혼재되어 시스템 복잡도가 급증합니다.
  • 해결책: 복잡한 조회가 필요한 영역은 처음부터 JOOQ 기술을 통일합니다. 이를 통해 코드의 유지보수성을 높입니다.

About

고객 데이터 기반 초개인화 통신 서비스 분석 및 추천 플랫폼 Holliverse

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors