← 포트폴리오 목록

농가 오피스·마스터 관리 콘솔

구매자 화면 뒤에서 입점 농가가 주문·출고와 상품을 관리하고 마스터 관리자가 입점 승인, 대리 등록, 농가별 판매 금액 집계를 처리하는 확장 프로젝트입니다.

프로젝트 납품 요약

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

서비스 타입Web
업종플랫폼
기술 스택
React 18TypeScriptTailwind CSSNode.js + ExpressPostgreSQL + Prisma토스페이먼츠 결제 APIRedisExcelJS
주요 기능
  • 농가 주문·출고 관리
  • 상품 등록·대리 등록
  • 입점 승인
  • 농가별 판매 집계

프로젝트 개요

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

구매자 화면 뒤에서 입점 농가가 주문·출고와 상품을 관리하고 마스터 관리자가 입점 승인, 대리 등록, 농가별 판매 금액 집계를 처리하는 확장 프로젝트입니다. 역할에 따라 메뉴와 버튼이 달라지는 콘솔로 구성하며, 정산 자동화와 소셜 펀딩은 MVP 이후 확장 로드맵 항목으로 제안합니다.

작업 범위

  • 농가 주문·출고 관리: 농가 담당자가 오늘 확인할 일반 주문과 예약 주문, 출고 대기 건을 한 화면에서 보고 송장 번호를 입력해 출고 처리합니다
  • 상품 등록·대리 등록: 농가 담당자는 상품 정보와 가격·재고, 판매 방식을 직접 등록하고, 마스터 관리자는 직접 등록이 어려운 농가를 대신해 상품을 등록하며 대리 등록 표시가 남습니다
  • 입점 승인: 마스터 관리자가 농가의 입점 신청을 서류 내용과 함께 검토해 승인하거나 반려하고, 승인된 농가 계정의 상태를 관리합니다
  • 농가별 판매 집계: 마스터 관리자가 기간을 정해 농가별 판매 금액을 집계해 보고 수동 정산에 쓸 엑셀 파일로 내려받습니다. 정산 자동화는 확장 로드맵 항목으로 안내합니다

주요 업무

  • 농가 주문·출고 관리 화면: 처리할 일 카드, 일반·예약 주문 탭, 주문 상세 대화상자와 송장 입력, 출고 완료 되돌리기 구조를 설계합니다
  • 상품 등록·대리 등록 화면: 상품 목록, 등록·수정 폼, 판매 방식(즉시·예약) 설정, 대리 등록 대상 농가 선택과 대리 등록 알약 표시 구조를 설계합니다
  • 입점 승인 화면: 입점 신청 목록, 심사 상세 대화상자, 승인·반려 처리와 반려 사유 입력, 농가 계정 상태 변경 구조를 설계합니다
  • 농가별 판매 집계 화면: 기간 선택, 농가별 판매 금액·주문 건수 집계 표, 취소·환불 차감 표시, 엑셀 다운로드와 확장 로드맵 안내 구조를 설계합니다
농가 오피스·마스터 관리 콘솔
요구사항 정의

프로젝트 핵심 과제

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

농가 계정이 늘어도 주문·상품 조회에서 다른 농가의 데이터가 섞이지 않

소유 검증을 모든 API에 일관되게 적용하는 설계 필요

수동 정산용 집계에서 부분 취소·환불 건을 판매 금액에서 어떻게 차감할지 기준을 정해 화면과 엑셀에 같은 값으로 반영하는 설계

대리 등록 상품의 수정 권한을 농가와 관리자 중 누구에게 어디까지 줄지 정하고 이력으로 남기는 규칙 설계

정산 자동화와 소셜 펀딩은 별도 견적 범위라 MVP 데이터 모델이 확장 시 크게 바뀌지 않

주문·금액 필드를 확장 가능하게 설계 필요

구현 내용

핵심 기능 상세

핵심 기능 1

농가 주문·출고 관리

농가 담당자가 오늘 확인할 일반 주문과 예약 주문, 출고 대기 건을 한 화면에서 보고 송장 번호를 입력해 출고 처리합니다.

  • 주문을 농가 단위로 격리 조회하는 서버 필터와 역할 검증 미들웨어 구현
  • 출고 처리 시 송장 번호 저장과 주문 상태 전이를 하나의 트랜잭션으로 묶는 구조 설계
  • 예약 주문을 수확 예정일 순으로 정렬해 출고 대기 목록과 분리해 보여 주는 쿼리 구현

농가 계정은 자기 상품의 주문만 읽도록 서버에서 소유 농가를 검증해, 같은 주문 테이블을 구매자·농가·관리자가 서로 다른 범위로 보도록 구현합니다.

농가 주문·출고 관리
농가 주문·출고 관리 실제 화면
핵심 기능 2

상품 등록·대리 등록

농가 담당자는 상품 정보와 가격·재고, 판매 방식을 직접 등록하고, 마스터 관리자는 직접 등록이 어려운 농가를 대신해 상품을 등록하며 대리 등록 표시가 남습니다.

  • 상품 등록자와 소유 농가를 별도 컬럼으로 저장해 대리 등록 여부를 이력으로 남기는 모델 설계
  • 판매 방식에 따라 예약 마감일·수확 예정일 입력란이 나타나는 조건부 폼과 제출 시 검사 구현
  • 상품 이미지를 업로드 전에 크기 검증하고 S3 호환 저장소에 저장하는 업로드 흐름 설계

등록자 역할과 소유 농가를 분리해 저장하여, 관리자의 대리 등록 상품에도 농가 본인 상품과 같은 권한 규칙이 적용되도록 구현합니다.

상품 등록·대리 등록
상품 등록·대리 등록 실제 화면
핵심 기능 3

입점 승인

마스터 관리자가 농가의 입점 신청을 서류 내용과 함께 검토해 승인하거나 반려하고, 승인된 농가 계정의 상태를 관리합니다.

  • 입점 신청 상태를 대기·승인·반려로 정의하고 상태 변경 이력을 감사 테이블에 남기는 구조 구현
  • 반려는 사유 입력을 필수로 하고 승인은 되돌리기 토스트를 제공하는 처리 흐름 설계
  • 마스터 관리자 역할에만 승인 API를 열어 두는 역할 기반 라우트 검증 구현

승인·반려 결과를 신청 레코드와 농가 계정 상태에 한 번에 반영하는 트랜잭션을 구성해, 승인된 농가만 오피스 메뉴가 열리도록 구현합니다.

입점 승인
입점 승인 실제 화면
핵심 기능 4

농가별 판매 집계

마스터 관리자가 기간을 정해 농가별 판매 금액을 집계해 보고 수동 정산에 쓸 엑셀 파일로 내려받습니다. 정산 자동화는 확장 로드맵 항목으로 안내합니다.

  • 기간 조건으로 농가별 판매 금액을 집계하고 취소·환불 건을 차감하는 SQL 집계 쿼리 구현
  • ExcelJS로 농가별 시트와 합계 행을 가진 엑셀 파일을 서버에서 생성하는 다운로드 API 설계
  • 대량 기간 조회는 Redis에 집계 결과를 짧게 보관해 같은 조건의 재조회를 줄이는 캐시 구조 적용

화면의 집계 표와 엑셀 파일이 같은 집계 쿼리를 쓰도록 구성해, 화면에서 본 금액과 내려받은 파일의 금액이 어긋나지 않게 구현합니다.

농가별 판매 집계
농가별 판매 집계 실제 화면
구현 과정

프로젝트 진행 단계

STEP 1

역할·권한 체계와 집계 모델 설계 · 2026.11

농가 담당자·마스터 관리자 권한 매트릭스, 농가 소유 관계와 집계용 인덱스 설계

STEP 2

농가 오피스 주문·출고 구현 · 2026.11

농가별 주문 격리 조회, 일반·예약 탭, 송장 입력과 출고 상태 전이 트랜잭션 구현

STEP 3

상품 등록과 입점 승인 구현 · 2026.11

조건부 등록 폼, 이미지 업로드, 대리 등록 이력, 입점 승인·반려 감사 기록 구현

STEP 4

판매 집계와 엑셀 생성 구현 · 2026.11

농가별 집계 쿼리, 취소·환불 차감, ExcelJS 다운로드 API, Redis 집계 캐시 구성

개발 결과

농가별 데이터 격리 권한 구조 구축주문·상품 조회 시 소유 농가를 서버에서 검증하는 미들웨어로 농가 간 데이터 노출을 막는 구조를 구축합니다.
대리 등록 이력 모델 설계등록자와 소유 농가를 분리 저장해 대리 등록 표시와 권한 규칙을 함께 적용하는 모델을 설계합니다.
화면·엑셀 공용 집계 쿼리 구현취소·환불 차감을 포함한 농가별 집계 쿼리 하나로 화면 표와 엑셀 파일을 함께 생성하도록 구현합니다.
입점 심사 감사 이력 설계승인·반려와 사유를 상태 변경 이력 테이블에 남기고 계정 상태 변경과 하나의 트랜잭션으로 묶습니다.

기술적 주안점

  • 농가 계정은 자기 상품의 주문만 읽도록 서버에서 소유 농가를 검증해, 같은 주문 테이블을 구매자·농가·관리자가 서로 다른 범위로 보도록 구현합니다
  • 등록자 역할과 소유 농가를 분리해 저장하여, 관리자의 대리 등록 상품에도 농가 본인 상품과 같은 권한 규칙이 적용되도록 구현합니다
  • 승인·반려 결과를 신청 레코드와 농가 계정 상태에 한 번에 반영하는 트랜잭션을 구성해, 승인된 농가만 오피스 메뉴가 열리도록 구현합니다

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

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

프로젝트 문의