ChillStock(식재료 전문 3pl wms)

섭정이·2025년 3월 26일

ChillStock - 식재료 전문 3PL WMS 프로젝트

지역 농민과 상인을 위한 식재료 물류 시스템


목차

  1. 개요
  2. 특징
  3. 구조
  4. 기능
  5. 향후 개선 및 기능 추가
  6. 향후 방향성
  7. 트러블 슈팅

개요

최근 아마존, 쿠팡, 알리익스프레스, 스마트 스토어 등 물류를 효율적으로 관리하는 시스템이 급부상하고 있습니다. 하지만 식재료 분야는 여전히 1PL에 의존하고 있어, 지역 농민과 상인의 매출 부진과 사업 축소로 이어지고 있습니다.

ChillStock은 식재료 전문 3PL WMS 시스템으로, 지역 화주(농민, 상인)의 전국 단위 판매를 도우며, 보관·관리·유통까지 쉽게 접근할 수 있도록 지원하는 프로젝트입니다.

  • 자동화
  • 실시간 처리
  • 비용 효율성

특징

도메인 중심 + 다형성 활용한 유연한 구조

  • 초반에는 계층형 구조(Controller → Service → Repository)로 시작했지만, 도메인 간 연관이 많아지며 도메인 기반 구조로 리팩토링
  • 구역(Area), 창고(Warehouse), 상품(Product) 등 도메인별로 모듈 분리
  • 인터페이스 기반 설계로 테스트 및 기능 확장 용이

기존 구조
기존 구조

도메인 구조
도메인 구조

함수형 프로그래밍과 람다 스트림의 활용

  • 반복되는 조건문 추상화(runIfTrue), 스트림 기반 데이터 가공, Optional 활용
  • Function, Supplier, Consumer 등의 함수형 인터페이스 활용
  • 코드 가독성과 유지보수성 향상

협업 도구와 이슈 기반 개발

  • GitHub 기반 협업 환경 구축
    • Issue 생성 → 브랜치 생성 → PR → Merge 흐름 유지
  • 코드 리뷰를 통한 품질 개선
  • Notion 를 통해 일정 및 역할 분담 관리

협업 이미지


구조

아키텍처

아키텍처

ERD

ERD

클래스 다이어그램

로그인 / 회원가입
로그인 다이어그램

창고 / 구역 / 출고
창고 다이어그램

입고 / 재고 / 제품
입고 다이어그램


기능

기능 요약

  • 입고 / 출고 / 재고 자동화
  • 관리자 승인 기능
  • 관리자 / 화주 권한 분리

상세 기능

로그인

  • 총관리자 / 일반회원 로그인 및 권한 분리

회원 관리 (총관리자)

  • 전체 회원 목록 조회
  • 특정 회원 상세 조회
  • 회원 정보 수정 및 삭제
  • 삭제된 회원 목록 조회

회원 관리 (화주)

  • 내 정보 조회 / 수정 / 로그아웃 / 탈퇴

입고 관리

  • 입고 요청 승인 / 취소
  • 대기 중 입고 요청 조회
  • 사업체 및 제품 목록 조회
  • 재고 변경 이력 확인

출고 관리

  • 출고 요청 승인 / 취소
  • 출고 대기 및 전체 목록 조회
  • 출고 요청 및 요청 조회

재고 히스토리 관리 (관리자)

  • 전체 재고 변경 이력 조회

창고 관리

  • 전체 및 도시별 창고 정보 조회
  • 창고 상세 조회 및 생성
  • 창고 가용 공간 기반 구역 생성
  • 실시간 가용 공간 확인
  • 입고 승인 시 구역 공간 검증

향후 개선 및 기능 추가

  • 아이디 / 비밀번호 찾기 기능
  • 콘솔 기반 → 웹 기반 전환 (CSR 또는 SSR 방식)
  • 주소 간 거리 계산 API 적용을 통한 마이크로 풀필먼트 시스템 구축
  • 함수형 프로그래밍을 활용한 지속적인 코드 리팩토링

향후 방향성

  • 코드 스타일 가이드 작성 및 공유
  • Atomic Commit 전략 적용
  • 브랜치 전략, 이슈 관리, PR 중심 협업 문화 강화
  • 코드 리뷰 규칙 정립
  • 팀원 간 신뢰를 기반으로 한 협력 문화 구축

트러블 슈팅

  • lombok 사용시 주의점
    lombok 사용시 필드명을 바꾸면 getter, setter 메소드 모두 메소드명이 바뀌어서 사용한 부분 모두 수정해야함
    ->
    필드명 바꿀때 주의하고 직접 getter setter 메소드 구현하면 메소드명은 바뀌지 않음
    (캡슐화)
    상세정리 https://velog.io/@dlwjdtjq1234/lombok사용중-필드명-바꿨더니-큰일이

  • db 트리거 프로시저 생성시 문제
    Mysql이 바이너리 로그(Binary logging) 를 사용하는 경우, 보안상의 이유로 deterministic 함수 또는 sql 이 데이터를 변경하지 않음을 명시하지 않으면 일반사용자는 함수나 트리거를 생성할 수 없음
    ->
    SET GLOBAL log_bin_trust_function_creators = 1;
    실행 후 다시 0으로 세팅

profile
우직하게

0개의 댓글