← 포트폴리오 목록

거래처별 접수·정산 조회 포털

거래처별 접수·정산 현황을 조회하는 B2B 셀프서비스 포털과 관리자 백오피스를 React + Node.js 기반으로 구현하는 프로젝트입니다.

프로젝트 납품 요약

아래 프로젝트 개요와 핵심 기능에서 구현 화면을 확인할 수 있습니다.

서비스 타입Web
업종데이터 분석
기술 스택
ReactTypeScriptTailwind CSSNode.jsExpressPostgreSQLPrismaJWT
주요 기능
  • 거래처 로그인 및 데이터 분리 대시보드
  • 접수내역 조회
  • 정산 조회
  • 관리자 접수·정산 관리

프로젝트 개요

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

거래처별 접수·정산 현황을 조회하는 B2B 셀프서비스 포털과 관리자 백오피스를 React + Node.js 기반으로 구현하는 프로젝트입니다. Row-Level Security로 거래처 간 데이터를 격리하고, 인터넷/렌탈/휴대폰 메뉴별 접수·정산 조회 화면과 관리자 수기 등록 기능을 포함합니다.

작업 범위

  • 거래처 로그인 및 데이터 분리 대시보드: 거래처가 발급받은 계정으로 로그인하면 본인 거래처의 접수·정산 현황만 요약해 보여주는 대시보드입니다
  • 접수내역 조회: 인터넷/렌탈/휴대폰 메뉴별로 접수 건 목록과 진행 상태(접수 중/접수 완료 등)를 조회할 수 있는 화면입니다
  • 정산 조회: 인터넷/렌탈/휴대폰 메뉴별 정산 내역을 기간별로 조회할 수 있는 화면입니다
  • 관리자 접수·정산 관리: 관리자가 접수·정산 내역을 수기로 등록·수정하고 거래처를 지정할 수 있는 백오피스 화면입니다

주요 업무

  • 거래처 로그인 및 데이터 분리 대시보드 화면: JWT 기반 인증과 PostgreSQL Row-Level Security 정책을 결합하여 거래처별 조회 범위를 DB 레벨에서 격리하는 구조를 구현합니다
  • 접수내역 조회 화면: 메뉴별 탭 전환과 상태 필터·검색을 지원하는 테이블 컴포넌트를 구현하고, 상태값은 Enum 기반으로 관리합니다
  • 정산 조회 화면: 기간 필터와 메뉴별 정산 합계를 함께 보여주는 테이블 및 요약 카드를 구현합니다
  • 관리자 접수·정산 관리 화면: 관리자 전용 폼에서 접수·정산 건을 등록하며, 거래처 지정 시 검색형 드롭다운과 진행 상태 변경 UI를 제공합니다
거래처별 접수·정산 조회 포털
요구사항 정의

프로젝트 핵심 과제

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

거래처별 데이터 분리(RLS) 적용 시 관리자 조회 권한과 충돌하지 않는 정책 설계가 필요합니다

인터넷/렌탈/휴대폰 3개 메뉴의 접수·정산 상태값 체계가 서로 달라 통합 상태 모델 설계가 필요합니다

관리자 수기 입력과 자동 집계 데이터가 혼재할 때 정합성을 보장하는 검증 로직 설계가 필요합니다

거래처 계정의 세션 관리와 비밀번호 정책을 안전하게 설계할 필요가 있습니다

구현 내용

핵심 기능 상세

핵심 기능 1

거래처 로그인 및 데이터 분리 대시보드

거래처가 발급받은 계정으로 로그인하면 본인 거래처의 접수·정산 현황만 요약해 보여주는 대시보드입니다.

  • JWT 액세스/리프레시 토큰 기반 세션 관리 구현
  • PostgreSQL Row-Level Security 정책으로 거래처 간 조회 범위를 DB 레벨에서 격리하는 구조 설계
  • 메뉴별(인터넷/렌탈/휴대폰) 접수·정산 요약 카드를 집계하는 대시보드 쿼리 구현

인증 미들웨어와 DB 레벨 RLS 정책을 이중으로 적용해, 애플리케이션 코드 실수로도 다른 거래처 데이터가 노출되지 않는 구조를 설계합니다.

거래처 로그인 및 데이터 분리 대시보드
거래처 로그인 및 데이터 분리 대시보드 실제 화면
핵심 기능 2

접수내역 조회

인터넷/렌탈/휴대폰 메뉴별로 접수 건 목록과 진행 상태(접수 중/접수 완료 등)를 조회할 수 있는 화면입니다.

  • 메뉴(인터넷/렌탈/휴대폰)별 탭 전환 + 상태 필터 + 키워드 검색 UI 구현
  • Enum 기반 진행 상태(접수중/접수완료/보류 등) 배지 컴포넌트 설계
  • React Query로 목록 데이터 캐싱 및 페이지네이션 처리 구현

메뉴별로 스키마가 조금씩 다른 접수 데이터를 하나의 공통 테이블 컴포넌트로 렌더링할 수 있도록 컬럼 설정을 데이터 기반으로 추상화합니다.

접수내역 조회
접수내역 조회 실제 화면
핵심 기능 3

정산 조회

인터넷/렌탈/휴대폰 메뉴별 정산 내역을 기간별로 조회할 수 있는 화면입니다. 기간 필터와 메뉴별 정산 합계를 함께 보여주는 테이블 및 요약 카드를 구현합니다.

  • 기간(월별) 필터와 메뉴별 정산 합계 요약 카드 구현
  • 정산 내역 테이블에 정렬·검색 기능 적용
  • 정산 데이터 CSV 다운로드 기능 구현

메뉴별 정산 합계를 서버에서 집계 쿼리로 미리 계산해 내려주어, 대량 데이터에서도 화면 렌더링이 지연되지 않는 구조를 설계합니다.

정산 조회
정산 조회 실제 화면
핵심 기능 4

관리자 접수·정산 관리

관리자가 접수·정산 내역을 수기로 등록·수정하고 거래처를 지정할 수 있는 백오피스 화면입니다. 관리자 전용 폼에서 접수·정산 건을 등록하며, 거래처 지정 시 검색형 드롭다운과 진행 상태 변경 UI를 제공합니다.

  • 메뉴별 접수·정산 수기 등록/수정 폼과 서버·클라이언트 이중 유효성 검증 구현
  • 거래처 지정을 위한 검색형 드롭다운(Combobox) 구현
  • 진행 상태 변경 시 상태 전이 규칙을 검증하는 로직 구현

수기 입력과 향후 자동 연동 데이터가 같은 테이블에 섞여도 구분 가능하도록 입력 소스 컬럼을 두어 데이터 출처를 추적하는 구조를 설계합니다.

관리자 접수·정산 관리
관리자 접수·정산 관리 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

요구사항 분석 및 ERD 설계 · 2026.09

거래처·접수·정산 업무 프로세스 분석, PostgreSQL 테이블 8~10개 정의 및 관계 매핑

STEP 2

인증·데이터 분리 백엔드 API 개발 · 2026.09

JWT 인증 미들웨어와 Row-Level Security 정책을 결합한 접수·정산 조회 API 구현

STEP 3

거래처 조회 화면 및 관리자 백오피스 UI 개발 · 2026.09

React 기반 접수·정산 조회 화면과 관리자 수기 등록 폼 구현

STEP 4

통합 테스트 및 접수·정산 데이터 검증 · 2026.09

메뉴별 상태 전이·거래처 데이터 격리 시나리오 통합 테스트 및 크로스 브라우저 검증

개발 결과

거래처별 데이터 격리 아키텍처 설계PostgreSQL Row-Level Security 정책으로 거래처 간 조회 범위를 DB 레벨에서 격리하는 구조를 설계합니다.
접수·정산 상태 관리 모델 구현인터넷/렌탈/휴대폰 3개 메뉴별 상태 전이(접수중→완료 등)를 Enum 기반으로 관리하는 스키마를 설계합니다.
관리자 수기 입력 검증 로직 구현접수·정산 수기 등록 시 거래처 지정과 필수값 검증을 클라이언트·서버 이중으로 적용하는 구조를 구현합니다.
메뉴별 정산 합계 집계 조회 구현기간 필터와 메뉴별 정산 합계를 서버 집계 쿼리로 미리 계산해 내려주는 조회 구조를 구현합니다.

기술적 주안점

  • 인증 미들웨어와 DB 레벨 RLS 정책을 이중으로 적용해, 애플리케이션 코드 실수로도 다른 거래처 데이터가 노출되지 않는 구조를 설계합니다
  • 메뉴별로 스키마가 조금씩 다른 접수 데이터를 하나의 공통 테이블 컴포넌트로 렌더링할 수 있도록 컬럼 설정을 데이터 기반으로 추상화합니다
  • 메뉴별 정산 합계를 서버에서 집계 쿼리로 미리 계산해 내려주어, 대량 데이터에서도 화면 렌더링이 지연되지 않는 구조를 설계합니다

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

필요한 기능과 일정을 알려주시면 개발 범위를 함께 정리하겠습니다.

프로젝트 문의