전체 얼개를 볼 때 읽는 문서

시스템 구성

화면·서버·저장소가 각각 무엇을 맡는지 그림과 함께 적었습니다.

11,356자 · 시스템이 만든 그대로입니다

사람이 손댄 곳 3군데
  • · 3단계 ‘화면 목록 다듬기’에서 화면 이름 몇 개를 손봤습니다. 하는 일이 겹쳐 보이는 이름을 갈라 적었을 뿐 문서 본문은 손대지 않았습니다.
  • · 사업계획서 검토에서 받은 지적 여덟 건 중 둘은 반영하지 않기로 하고 그 이유를 적어 남겼습니다. 반영하지 않은 것도 기록에 남아 심사에서 물으면 그대로 답이 됩니다.
  • · 아래 화면은 저장소에 연결되기 전 단계의 것입니다. 기능을 붙이는 작업은 이 사례를 정리하는 시점에 아직 진행 중이라, 동작하는 서비스 화면 대신 이 단계까지만 싣습니다. 없는 것을 있다고 하지 않기 위해 그대로 적어 둡니다.

로컬푸드 직매장 정산 자동화 시스템 구성 문서

1. 시스템 목표

약 30개 농가가 입점한 로컬푸드 직매장에서 계산대 판매 파일을 매주 업로드해 농가별 주간 정산서를 만들고, 매장 매출과 정산 합계를 대조한 뒤 권한자가 목요일에 정산 마감하는 웹 서비스입니다.

농가는 스마트폰에서 본인 정산서, 지급액, 입금 예정일, 판매·할인·반품·폐기 내역을 확인하고 이의 제기와 증빙 사진을 제출합니다.

첫 버전은 로컬푸드 직매장 한 곳만 처리합니다. 여러 매장 관리, 실제 은행 이체, 은행 이체용 파일 생성은 포함하지 않습니다.


2. 사용자와 권한

사용자할 수 있는 일제한
정산 담당 직원농가·품목·정산 규칙 등록, 계산대 판매 파일 업로드, 상품 연결, 반품·폐기 등록, 오류 처리, 정산서 생성정산 마감 권한이 없으면 마감 불가
점장 또는 마감 권한을 가진 운영자정산 담당자의 기능 전체, 매주 목요일 정산 마감, 담당자 계정과 권한 관리, 정정 항목 확인오류 또는 매출 대조 차이가 남으면 마감 불가
농가본인 정산서 조회, 판매·할인·반품·폐기 내역 확인, 이의 제기와 증빙 사진 제출다른 농가의 정산서, 사진, 판매 내역 접근 불가

3. 첫 버전 범위

포함 기능

기능사용 목적완료 조건
운영자 로그인과 권한 관리정산 담당자와 마감 권한을 구분한다.권한 없는 사용자는 정산 마감과 권한 변경을 할 수 없다.
농가·품목 관리농가, 품목군, 품목, 상품코드를 정산 대상에 연결한다.판매 항목을 농가와 품목에 연결할 수 있다.
정산 규칙 관리수수료율, 할인 수수료, 반품·폐기 부담 기준을 약정대로 등록한다.적용 시작일과 종료일을 가진 규칙 이력이 저장된다.
계산대 판매 파일 업로드주간 판매·할인·반품 내역을 판매 원장에 반영한다.파일 형식과 필수 열을 검사하고, 중복 업로드를 막는다.
상품코드 자동·직접 연결등록 상품코드는 자동 연결하고 처음 보는 상품코드는 직접 연결한다.미연결 판매 항목이 오류 목록에 표시된다.
판매·할인·반품·폐기 관리정산 계산 근거를 한곳에서 확인한다.폐기·미회수 기록은 농가, 품목, 수량, 사유, 부담 주체 없이 확정할 수 없다.
정산 계산농가별 판매액, 수수료, 공제액, 지급액을 계산한다.계산 당시 적용한 정산 규칙과 계산 결과를 보관한다.
매출 대조와 오류 검사매장 매출과 농가별 정산 계산 항목의 차이를 확인한다.미연결 상품, 규칙 누락, 미확정 내역, 대조 차이를 모두 확인할 수 있다.
정산서 생성과 정산 마감농가별 정산서를 생성하고 목요일에 마감한다.오류 0건, 대조 차이 0원일 때만 마감할 수 있다.
마감 잠금마감된 정산서와 계산 근거를 변경하지 못하게 한다.서버가 수정 요청을 거부한다. 화면 버튼만 숨기는 방식은 사용하지 않는다.
정정 항목마감 후 오류를 다음 정산 주차에 반영한다.원 정산서, 원 거래, 정정 전후 금액, 처리 담당자, 다음 반영 주차가 저장된다.
농가 정산 조회농가가 스마트폰에서 본인 지급액과 입금 예정일을 확인한다.농가는 본인에게 연결된 정산서만 조회할 수 있다.
농가 이의 제기농가가 정산 내역에 대한 문의와 증빙을 제출한다.처리 결과, 담당자, 처리일, 농가 안내 날짜와 방법을 기록할 수 있다.

첫 버전 제외 기능

  • 실제 은행 이체
  • 은행 이체용 파일 생성
  • 여러 로컬푸드 직매장 운영
  • 상품코드 외 고도화된 자동 상품 연결
  • 문자, 카카오톡 등 별도 알림 발송

4. 화면 구성

운영자 화면

화면주요 내용다음 행동
운영자 로그인과 권한 관리로그인, 정산 담당자 계정, 마감 권한 관리주간 정산 현황으로 이동
주간 정산 현황정산 주차, 입금 예정일, 판매 파일 처리 상태, 미연결 상품 수, 오류 수, 매출 대조 차이, 마감 가능 여부규칙 관리, 파일 업로드, 오류 처리, 정산 마감으로 이동
농가·품목·정산 규칙 관리농가, 품목군, 품목, 상품코드, 수수료율, 할인 수수료, 반품·폐기 부담 규칙, 적용 기간 관리규칙 저장 후 주간 정산 현황으로 복귀
계산대 판매 파일 업로드와 상품 연결파일 업로드, 형식 검사, 상품코드 자동 연결, 처음 보는 상품코드 직접 연결판매 원장과 오류 목록 확인
판매·할인·반품·폐기 내역 확인판매 원장 조회, 반품·폐기 등록, 할인·반품·폐기 확인오류 목록과 매출 대조로 이동
오류 목록과 매장 매출 합계 대조미연결 상품, 규칙 누락, 중복 가능 거래, 미확정 처리 내역, 매출 대조 차이 확인오류 해결 후 정산서 생성
농가별 정산서 생성·마감·정정 이력농가별 정산서 미리보기, 마감 검토, 정산 마감, 정정 항목 조회마감과 정정 이력으로 이동
마감과 정정 이력원 정산서와 원 거래, 정정 사유, 정정 전후 금액, 다음 반영 주차 확인정정 항목 등록 또는 관련 정산서 확인
농가 이의 제기 처리이의 제기 내용과 증빙 사진 확인, 처리 결과와 농가 안내 기록처리 완료 또는 정정 항목 연결

농가 스마트폰 화면

화면주요 내용완료 조건
농가 로그인농가 계정으로 로그인로그인 농가와 농가 정보가 연결된다.
농가용 스마트폰 정산 조회이번 주 판매금액, 수수료, 지급액, 입금 예정일, 정산 주차별 목록최종 지급액을 큰 글씨로 먼저 보여 준다.
농가용 큰 글씨 정산서 상세판매·할인·반품·폐기·정정 항목별 상세 내역각 금액의 계산 근거를 확인할 수 있다.
이의 제기대상 내역 선택, 내용 작성, 증빙 사진 첨부접수 상태와 이후 처리 결과를 조회할 수 있다.

5. 정산 계산 기준

기본 계산식

농가 지급액
= 농가 정산 대상 매출
- 판매수수료
- 농가 부담 반품액
- 농가 부담 폐기·미회수 비용
- 사전 합의된 별도 공제
+ 매장 부담 할인 보전액
± 다음 정산 정정액

규칙 적용 원칙

  1. 판매일에 유효한 정산 규칙을 적용합니다.
  2. 이미 정산 마감된 주차는 이후 규칙 변경의 영향을 받지 않습니다.
  3. 농가별 예외 규칙이 품목 또는 품목군 규칙보다 우선합니다.
  4. 같은 범위와 같은 적용 기간에 충돌하는 정산 규칙은 저장할 수 없습니다.
  5. 정산 규칙이 없는 거래는 임의 계산하지 않고 오류로 처리합니다.
  6. 판매 건에는 적용된 수수료율, 할인 수수료 기준, 부담 기준, 계산 결과의 복사본을 저장합니다.
  7. 금액은 원 단위 정수로 저장합니다.
  8. 수수료 계산의 반올림 기준은 매장 설정으로 정하고 변경 이력을 남깁니다.

수수료율 적용 우선순위

우선순위적용 범위
1농가 × 개별 품목
2농가 × 품목군
3농가 전체
4개별 품목
5품목군
6매장 기본 규칙

6. 정산 상태와 마감 기준

정산 주차 상태

상태의미가능한 작업
준비 중정산 기간과 입금 예정일을 설정한 상태규칙 확인, 파일 업로드
판매 원장 확인 중계산대 판매 파일을 올리고 상품을 연결하는 상태직접 연결, 반품·폐기 등록
오류 처리 중규칙 누락, 미연결 항목, 대조 차이가 있는 상태오류 해결
마감 검토 가능오류 0건, 매출 대조 차이 0원인 상태정산서 생성, 마감 검토
마감 완료권한자가 정산 마감을 완료한 상태조회와 정정 연결만 가능
다음 주 정정 반영마감 후 오류를 다음 정산 주차에 반영하는 상태정정 항목 생성 및 반영

정산 마감 차단 조건

아래 항목 중 하나라도 남아 있으면 정산 마감을 허용하지 않습니다.

  • 계산대 판매 파일의 대상 기간 누락
  • 중복 업로드 또는 중복 거래 의심
  • 미연결 상품코드
  • 농가 또는 품목이 연결되지 않은 판매 항목
  • 적용할 수수료율, 할인 수수료, 반품·폐기 부담 규칙이 없는 거래
  • 확인되지 않은 할인 판매
  • 확인되지 않은 반품 또는 폐기 내역
  • 매장 매출과 정산 합계의 대조 차이
  • 정산 마감 권한이 없는 사용자 요청

7. 시스템 구성도

그림을 그리는 중…

운영자와 농가는 각각 웹 브라우저에서 서비스를 이용합니다. 서버는 로그인 권한, 계산대 판매 파일 처리, 정산 계산, 정산 마감, 파일 접근을 처리하며, 정산 데이터와 변경 기록은 분리해 저장합니다.

증빙 사진과 계산대 판매 파일은 비공개 파일 저장소에 보관합니다. 파일을 보여 주거나 내려줄 때마다 서버가 로그인과 농가·운영자 권한을 확인합니다.


8. 핵심 기능 흐름도: 계산대 판매 파일 업로드부터 정산 마감까지

그림을 그리는 중…

계산대 판매 파일을 올린 뒤 서버는 파일 오류와 중복 여부를 먼저 검사하고 판매 원장을 만듭니다. 상품코드가 연결되지 않은 항목은 정산 담당 직원이 직접 연결해야 합니다.

정산 마감 직전에도 서버가 권한, 오류 수, 매출 대조 차이를 다시 검사합니다. 따라서 화면을 우회하거나 버튼을 숨기는 방식만으로는 마감된 정산서를 변경할 수 없습니다.


9. 데이터 저장 구조

데이터주요 저장 항목보관 목적
운영자 계정이름, 로그인 정보, 역할, 마감 권한, 사용 상태정산 담당자와 마감 권한 구분
농가농가명, 연락처, 로그인 계정 연결, 입점 상태정산 대상과 농가 조회 권한 관리
품목군품목군명, 사용 상태공통 정산 규칙 적용
품목품목명, 규격, 품목군, 출하 농가, 상품코드, 사용 상태계산대 판매 파일 항목 연결
정산 규칙적용 대상 농가·품목·품목군, 수수료율, 할인 수수료, 반품·폐기 부담 기준, 적용 시작일, 종료일약정에 따른 계산 기준 관리
계산대 판매 파일파일 식별값, 업로드 일시, 업로드 담당자, 파일 기간, 처리 결과원본 파일 추적과 중복 업로드 방지
판매 원장거래 고유값, 판매일시, 상품코드, 품목, 농가, 수량, 정상가, 실제 판매가, 할인·반품 여부정산 계산 근거
상품 연결 기록상품코드, 연결 품목, 자동·직접 연결 구분, 처리 담당자, 처리 시점연결 결과 재사용과 변경 이력
할인 판매 기록정상가, 할인액, 실제 판매가, 할인 부담 주체, 분담 비율, 할인 수수료 기준할인 판매 정산 근거
반품 기록반품일, 반품 사유, 환불액, 부담 주체순 판매액 계산
폐기 기록농가, 품목, 수량, 사유, 부담 주체, 사진, 처리 담당자, 농가 통지 기록폐기·미회수 정산 근거
정산 주차시작일, 종료일, 목요일 마감일, 입금 예정일, 상태주간 정산 단위 관리
정산서농가, 정산 주차, 판매액, 수수료, 공제액, 정정 금액, 지급액, 상태농가별 정산 결과
정정 항목원 정산서, 원 거래, 정정 사유, 정정 전후 금액, 다음 반영 주차, 처리 담당자마감 후 오류 처리
이의 제기농가, 대상 정산서 또는 거래, 내용, 증빙 사진, 상태, 처리 결과, 안내 기록농가 문의와 처리 이력
변경·마감 기록작업 유형, 대상 데이터, 담당자, 처리 시점, 변경 전후 값변경 추적과 정산 마감 근거

10. 서버 기능과 책임

서버 기능책임핵심 구현 기준
로그인과 권한 확인운영자·농가 로그인, 역할 확인, 농가별 데이터 접근 제한모든 조회와 수정 요청에서 권한을 검사한다.
농가·품목 관리농가, 품목군, 품목, 상품코드 등록과 수정이미 마감된 정산에 사용된 품목 연결 정보는 변경 영향이 없게 한다.
정산 규칙 관리수수료율, 할인 수수료, 반품·폐기 부담 기준 이력 관리같은 적용 대상·기간의 충돌 규칙 저장을 막는다.
파일 업로드 처리CSV 또는 엑셀 파일 검사, 원본 보관, 판매 원장 생성실제 계산대 판매 파일 형식 확인 후 지원 범위를 정한다.
중복 거래 검사파일과 거래의 중복 업로드 방지파일 식별값과 거래 고유값을 함께 사용한다. 거래 고유값이 없는 경우 기준은 확인 필요다.
상품 연결 처리상품코드 자동 연결, 직접 연결 저장, 이후 재사용자동 연결과 직접 연결 결과를 구분해 기록한다.
정산 계산판매일 기준 규칙 적용, 지급액 계산, 계산 근거 보관마감된 판매 건의 계산 결과를 다시 계산하지 않는다.
대조 처리매장 매출, 수수료, 할인, 반품, 폐기, 지급액의 차이 원인 계산대조 차이 0원 여부를 서버가 판단한다.
정산 마감마감 조건 검사, 상태 변경, 잠금, 담당자 기록오류가 하나라도 있으면 마감 완료 상태로 변경할 수 없다.
정정 처리마감 후 오류를 다음 정산 주차에 정정 항목으로 생성원 정산서와 원 거래를 수정하지 않는다.
농가 이의 제기 처리증빙 저장, 처리 상태·결과·안내 기록농가는 본인의 정산서와 거래에 대해서만 이의 제기할 수 있다.
파일 제한 접근증빙 사진, 정산서 내려받기 파일 보호공개 주소를 사용하지 않고 요청 시 권한을 확인한다.

11. 기술 구성 제안

구분선택선택 이유운영 시 주의점
사용자 화면과 서버Next.js운영자 화면과 농가용 스마트폰 화면을 하나의 웹 서비스로 만들기 쉽다.화면 권한 처리와 서버 권한 처리를 분리하지 말고 서버를 최종 기준으로 둔다.
데이터 저장소관계형 데이터베이스농가, 품목, 판매 원장, 정산 규칙, 정산서, 정정 항목의 연결 관계를 안정적으로 관리하기 좋다.정산서·판매 원장·규칙 간 참조 관계를 삭제로 끊지 않도록 한다.
파일 저장소비공개 객체 저장소계산대 판매 파일과 증빙 사진을 안전하게 저장한다.공개 링크를 만들지 않고 제한된 시간만 접근 가능한 주소를 발급한다.
로그인역할 기반 로그인정산 담당자, 마감 권한자, 농가의 접근 범위를 나눈다.농가 조회 요청마다 농가 식별값과 정산서 소유 관계를 검사한다.
변경 기록변경·마감 기록 테이블엑셀처럼 나중에 누가 무엇을 바꿨는지 모르는 문제를 막는다.로그인, 규칙 변경, 파일 업로드, 직접 연결, 반품·폐기, 마감, 정정 작업을 자동 기록한다.
시간 기준한국 시간 기준판매일, 적용 시작일, 정산 주차, 목요일 마감 시각을 일관되게 처리한다.서버와 데이터베이스의 시간대 설정을 한국 시간 기준으로 통일한다.

12. 보안과 데이터 보호 기준

접근 제한

  • 농가는 본인 농가에 연결된 정산서, 판매 내역, 이의 제기, 증빙만 조회할 수 있어야 합니다.
  • 주소의 정산서 번호나 파일 번호를 바꿔도 다른 농가의 정보가 보이면 안 됩니다.
  • 정산 담당 직원은 정산 처리 기능을 사용할 수 있지만, 마감 권한은 점장 또는 마감 권한을 가진 운영자에게만 부여합니다.
  • 마감된 정산 주차의 판매 원장, 정산 규칙 적용 결과, 정산서는 서버에서 수정 요청을 거부해야 합니다.

기록 보존

  • 규칙을 수정할 때 기존 값을 덮어쓰지 않고 종료일을 설정한 뒤 새 규칙을 등록합니다.
  • 판매 건에는 계산 당시 적용한 정산 규칙과 계산 결과를 복사해 보관합니다.
  • 정정 항목은 원 정산서와 원 거래를 참조하되, 원 데이터를 변경하지 않는 별도 기록으로 저장합니다.
  • 파일 업로드, 직접 상품 연결, 정산 마감, 이의 제기 처리 등 주요 작업에 담당자와 처리 시점을 남깁니다.

확인 필요

  • 판매·정산 정보, 농가 연락처, 계좌 정보의 보관 기간
  • 농가 로그인 첫 비밀번호 발급과 비밀번호 복구 방식
  • 계산대 판매 파일에 거래 고유값이 없을 때의 중복 판별 기준
  • CSV와 엑셀 중 실제 계산대 판매 파일 형식
  • 지급 완료 여부를 서비스에 표시할지 여부
  • 세무·회계·개인정보 관련 보관 및 처리 기준

13. 첫 시범 운영 완료 기준

첫 로컬푸드 직매장에서 실제 한 주의 계산대 판매 파일을 사용해 아래 조건을 모두 만족하면 시범 운영의 핵심 목표를 달성한 것으로 봅니다.

  1. 계산대 판매 파일을 업로드할 수 있다.
  2. 판매 원장의 모든 판매 항목이 농가와 품목에 연결된다.
  3. 수수료율, 할인 수수료, 반품·폐기 부담 기준이 판매일 기준으로 적용된다.
  4. 정산 규칙이 없는 거래는 오류로 표시되고 임의 계산되지 않는다.
  5. 농가별 판매액, 수수료, 반품·폐기 공제액, 정정 금액, 지급액이 정산서에 표시된다.
  6. 매장 매출과 농가별 정산 계산 항목의 대조 차이가 0원이 된다.
  7. 오류가 남아 있으면 정산 마감이 차단된다.
  8. 점장 또는 마감 권한을 가진 운영자가 목요일에 정산 마감할 수 있다.
  9. 마감 후 기존 정산서와 판매 내역을 수정할 수 없다.
  10. 마감 후 발견된 오류를 다음 정산 주차의 정정 항목으로 연결할 수 있다.
  11. 농가가 스마트폰에서 본인 정산서, 지급액, 입금 예정일과 세부 내역을 확인할 수 있다.
  12. 농가가 이의 제기와 증빙 사진을 제출하고, 운영자가 처리 결과와 농가 안내 기록을 남길 수 있다.
시스템 구성 — 로컬푸드 직매장 위탁판매·정산 관리 | Prometheon