← 포트폴리오 목록

카페인사이트 멀티매장 통합 관제 플랫폼

카페·외식(F&B) 프랜차이즈를 위한 멀티매장 통합 관제 플랫폼으로, 매장별 매출·원가·마진 데이터를 한 화면에서 비교하고 이상 매장을 자동으로 식별합니다.

멀티테넌시 Row-Level 격리 설계store_id 기준 Prisma 미들웨어로 매장 간 데이터 접근을 자동 격리하는 구조 구현
이상 매장 자동 감지 규칙 엔진 구현원가율 급등·정산 지연 조건을 규칙으로 정의해 우선순위 큐에 자동 노출하는 엔진 설계
비동기 정산 리포트 생성 파이프라인 구축Bull Queue와 Redis로 다수 매장 정산 리포트를 비동기 생성하고 PDF로 내보내는 구조 설계
서비스 타입Web
업종모니터링
기술 스택
React 18TypeScriptTailwind CSSNestJSPrisma ORMPostgreSQLRedisBull QueueRecharts
주요 기능
  • 멀티매장 통합 관제 대시보드
  • 매장별 매출·원가 분석 리포트
  • 정산 리포트 자동 생성
  • 미션 성과 분석
Overview

프로젝트 개요

범위: 개발, 디자인, 기획

카페·외식(F&B) 프랜차이즈를 위한 멀티매장 통합 관제 플랫폼으로, 매장별 매출·원가·마진 데이터를 한 화면에서 비교하고 이상 매장을 자동으로 식별합니다. 정산 리포트 자동 생성과 미션 성과 분석까지 확장하여, 여러 매장을 운영하는 프랜차이즈 본사가 데이터 기반으로 매장을 관리할 수 있는 구조를 설계합니다.

작업 범위

  • 멀티매장 통합 관제 대시보드: 프랜차이즈 다중 매장의 매출·원가율·정산 현황을 하나의 관제 화면에서 비교합니다
  • 매장별 매출·원가 분석 리포트: 매장·기간·메뉴 축으로 매출과 원가를 교차 분석하고, 매장 간 수익성을 랭킹으로 비교합니다
  • 정산 리포트 자동 생성: 일/주/월 단위로 매장별 정산 리포트를 자동 생성하고 PDF로 내보냅니다
  • 미션 성과 분석: 매장별 고정 미션 참여와 완료 추이를 분석하여 캠페인 효과를 매장 간 비교합니다

주요 업무

  • 멀티매장 통합 관제 대시보드 화면: 매장별 상태 스트립과 우선 대응 큐 구조로 원가율 급등·정산 지연 매장을 즉시 식별합니다
  • 매장별 매출·원가 분석 리포트 화면: PostgreSQL Materialized View를 매장×메뉴 교차 집계로 확장하고, Recharts 콤보 차트로 매출-원가 추이를 겹쳐 표시합니다
  • 정산 리포트 자동 생성 화면: Bull Queue로 리포트 생성 작업을 비동기 처리하고, jsPDF로 정산 리포트를 문서화합니다
  • 미션 성과 분석 화면: 미션 완료 이벤트를 집계 테이블로 적재하고, 매장 규모로 정규화한 지표로 비교합니다
카페인사이트 멀티매장 통합 관제 플랫폼
요구사항 정의

프로젝트 핵심 과제

프로젝트 진행 시 해결한 핵심 기술 과제입니다.

매장 수가 늘어날수록 커지는 집계 쿼리 부하를 Materialized View 갱신 주기 설계로 제어해야 합니다

매장 간 데이터가 섞이지 않

Row-Level 격리와 캐시 키 분리 전략을 함께 설계해야 합니다

정산 리포트 생성 중 매장 데이터가 변경될 경우 스냅샷 일관성을 보장하는 큐 처리 방식이 필요합니다

매장 규모 차이가 있는 상황에서도 미션 참여 성과를 공정하게 비교할 수 있는 정규화 지표 설계가 필요합니다

구현 내용

핵심 기능 상세

핵심 기능 1

멀티매장 통합 관제 대시보드

프랜차이즈 다중 매장의 매출·원가율·정산 현황을 하나의 관제 화면에서 비교합니다. 매장별 상태 스트립과 우선 대응 큐 구조로 원가율 급등·정산 지연 매장을 즉시 식별합니다.

  • 매장별 매출·원가율·마진율을 슬림 상태바에 인라인 표시하는 멀티테넌시 집계 구조 설계
  • 원가율 급등·정산 지연 매장을 자동 감지해 우선순위 큐에 노출하는 규칙 엔진 구현
  • NestJS 멀티테넌트 스코프(store_id 기준 Row-Level 필터)로 매장 간 데이터 격리 설계

여러 매장의 운영 지표를 하나의 관제탑 화면에 통합하고, 이상 매장을 자동으로 우선순위 큐에 노출하는 구조를 설계합니다.

멀티매장 통합 관제 대시보드
멀티매장 통합 관제 대시보드 실제 화면
핵심 기능 2

매장별 매출·원가 분석 리포트

매장·기간·메뉴 축으로 매출과 원가를 교차 분석하고, 매장 간 수익성을 랭킹으로 비교합니다.

  • Materialized View를 매장×메뉴 2축 교차 집계로 확장하여 조회 성능 구조 설계
  • Recharts 콤보 차트(막대+라인)로 매출과 원가율을 한 화면에 겹쳐 시각화
  • 매장 간 수익성 랭킹 정렬 및 전월 대비 비교 로직 구현

단일 매장 집계를 매장×메뉴 교차 분석으로 확장하여 프랜차이즈 본사가 매장 간 수익성을 비교할 수 있는 구조를 설계합니다.

매장별 매출·원가 분석 리포트
매장별 매출·원가 분석 리포트 실제 화면
핵심 기능 3

정산 리포트 자동 생성

일/주/월 단위로 매장별 정산 리포트를 자동 생성하고 PDF로 내보냅니다. Bull Queue로 리포트 생성 작업을 비동기 처리하고, jsPDF로 정산 리포트를 문서화합니다.

  • Bull Queue 기반 정산 리포트 생성 작업을 비동기 큐로 분리해 다수 매장 처리 구조 설계
  • jsPDF로 매장별 정산 리포트를 PDF 문서로 변환하는 템플릿 구현
  • Redis 캐시로 반복 조회되는 집계 데이터의 캐시 히트 구조 설계

정산 리포트 생성을 비동기 큐로 분리하여 매장 수가 늘어나도 요청 처리와 리포트 생성을 독립적으로 확장할 수 있는 구조를 설계합니다.

정산 리포트 자동 생성
정산 리포트 자동 생성 실제 화면
핵심 기능 4

미션 성과 분석

매장별 고정 미션 참여와 완료 추이를 분석하여 캠페인 효과를 매장 간 비교합니다. 미션 완료 이벤트를 집계 테이블로 적재하고, 매장 규모로 정규화한 지표로 비교합니다.

  • 미션 완료 이벤트를 일별 집계 테이블로 적재하는 배치 집계 구조 설계
  • 매장 규모(등록 원가 항목 수 기준)로 정규화한 미션 참여 지표 계산 로직 구현
  • Recharts 히트맵으로 매장×미션 완료 현황을 매트릭스로 시각화

미션 완료 데이터를 매장 규모로 정규화하여, 규모가 다른 매장 간에도 캠페인 효과를 공정하게 비교할 수 있는 분석 구조를 설계합니다.

미션 성과 분석
미션 성과 분석 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

멀티테넌시 데이터 모델 확장 설계 · 2026.09

매장(store) 엔티티 도입 및 Row-Level 데이터 격리 스키마 확장 설계

STEP 2

매장 간 집계 API 및 규칙 엔진 개발 · 2026.09

매장별 KPI 집계 API 10~12개, 이상 매장 자동 감지 규칙 엔진 구현

STEP 3

관제 콘솔 및 분석 리포트 UI 개발 · 2026.09

관제 대시보드·분석 리포트·미션 성과 화면 구현, Recharts 콤보/히트맵 차트 적용

STEP 4

정산 리포트 자동화 및 비동기 처리 구현 · 2026.09

Bull Queue 기반 정산 리포트 생성 큐 구현, Redis 캐시로 반복 조회 구조 최적화

프로젝트 성과

주요 성과

멀티테넌시 Row-Level 격리 설계store_id 기준 Prisma 미들웨어로 매장 간 데이터 접근을 자동 격리하는 구조 구현
이상 매장 자동 감지 규칙 엔진 구현원가율 급등·정산 지연 조건을 규칙으로 정의해 우선순위 큐에 자동 노출하는 엔진 설계
비동기 정산 리포트 생성 파이프라인 구축Bull Queue와 Redis로 다수 매장 정산 리포트를 비동기 생성하고 PDF로 내보내는 구조 설계
매장 간 수익성 비교 집계 구조 설계Materialized View 확장으로 매장×메뉴 교차 마진 데이터를 사전 집계하는 구조 구현
Highlights

기술적 주안점

  • 여러 매장의 운영 지표를 하나의 관제탑 화면에 통합하고, 이상 매장을 자동으로 우선순위 큐에 노출하는 구조를 설계합니다
  • 단일 매장 집계를 매장×메뉴 교차 분석으로 확장하여 프랜차이즈 본사가 매장 간 수익성을 비교할 수 있는 구조를 설계합니다
  • 정산 리포트 생성을 비동기 큐로 분리하여 매장 수가 늘어나도 요청 처리와 리포트 생성을 독립적으로 확장할 수 있는 구조를 설계합니다

유사한 프로젝트를 기획하고 계신가요?

FIRSTPIP이 개발 범위와 로드맵을 함께 정리해드립니다

무료 상담 시작하기