신세계아이앤씨 JAVA 기반 백엔드 개발자 과정 1차 프로젝트로 배웠던 기술로 WMS를 구현 하는 것이 목표입니다. WMS(Warehouse Management System)란 창고 내 재고를 효율적으로 관리하고, 입고부터 배송까지 신뢰성 있는 물류 운영을 지원하는 시스템으로 물류업계에선 없어선 안될 시스템입니다. 저희는 이 프로젝트를 구현하면서 물류의 흐름을 파악하고 기술스택을 견고히 하는 것을 목표로 합니다.

| @cookiemiro | @HongYong-Woo | @PARK-TH | @disneydreamworker |
|
팀장
|
팀원
|
팀원
|
팀원
|
Java 17

브랜치 명명 규칙은 아래와 같이 설정합니다:
feature/설명: 새로운 기능 개발 시
예시: feature/login-page
bugfix/설명: 버그 수정 시
예시: bugfix/fix-login-error
test/설명: 테스트 관련 작업 시
예시: test/add-unit-tests
커밋 메시지는 아래와 같은 형식을 따릅니다:
🐛 bug: 버그 수정
✨ sparkles: 새로운 기능 도입
🔥 fire: 코드나 파일 삭제
📝 memo: 문서 추가 또는 업데이트
🎨 art: 코드의 구조/형식 개선
🚧 construction: 작업 진행 중
🎉 tada: 프로젝트 시작
✅ white_check_mark: 테스트 추가, 업데이트 또는 통과
🔧 wrench: 설정 파일 추가 또는 업데이트
📦️ package: 컴파일된 파일이나 패키지 추가 또는 업데이트
♻️ recycle: 코드 리팩토링
Title: [타입] 간략한 설명
예시: [feat] 로그인 페이지 구현
Description:
작업 내용 요약
관련된 이슈 링크
테스트 방법 및 스크린샷(가능한 경우)
코드 리뷰는 모든 Pull Request에 대해 최소 1명이 수행해야 합니다.
모든 논의는 GitHub의 Pull Request 코멘트를 통해 이루어져야 합니다.
리뷰어는 코드의 가독성, 성능, 보안 문제 등을 검토합니다.
main 브랜치에 merge는 팀장이 진행하거나 팀장의 동의 하에 팀원이 진행합니다.
모든 작업은 사전에 정의된 컨벤션에 따라 진행합니다.
예외 사항이 발생할 경우, 팀 내부에서 논의 후 결정합니다.
코딩 스타일 가이드 참고 링크
https://google.github.io/styleguide/javaguide.html#s5.1-identifier-names
https://www.oracle.com/technetwork/java/codeconventions-150003.pdf
DataBase에 저장 되어 있는 id와 비밀번호를 조회하여 일치하면 로그인 성공, 일치 하지 않으면 로그인 실패로 이어진다.ENUM으로 관리한다.유스케이스 다이어그램
https://drive.google.com/file/d/1HqgtNMDZrbNUNMMBrXxyIndZB2EG7nmT/view?usp=sharing
플로우 차트
https://drive.google.com/file/d/1rGDOgvS9yFpdQrfZAbNvn8pL6UkSb-z8/view?usp=sharing
ERD

클래스 다이어그램
https://drive.google.com/file/d/1GQt5a0g0_OHIyAZgpBRSFtzZqXF3Xx54/view?usp=sharing
유스케이스 다이어그램
https://drive.google.com/file/d/1VEKzX78uLWzKSU6PLziI66RuH6n6zO3h/view?usp=sharing
플로우 차트
https://drive.google.com/file/d/1KlDGXn8V_PHX5BG52qtL61_buYZJtu11/view?usp=sharing
ERD

클래스 다이어그램
https://drive.google.com/file/d/1sNGTIzZO8Woc_tMylrbZBjJbFJ8qapTh/view?usp=sharing
@Getter와 @Setter, @Builder의 사용으로 인해 따로 코드를 짤 필요 없이 선언 만으로도 getter, setter, 생성자 메서드를 쓸 수가 있으니 코드 분량과 구현 시간을 줄 일 수 있었다.DataBase와 송수신을 할지 아니면 DAO에 값을 받아와 연산을 할지 많은 고민을 했다.BufferedReader 사용에서 문제가 있었는데 객체마다 BufferedReader를 생성하고 사용후 close()를 한 다음 다른 객체에서 BufferedReader를 사용하려고 하면 Stream closed라는 error가 발생하였다. 이 error를 고치려고 try-with-resources 형식으로 해봤지만 역시 같은 error가 발생하였다.close()를 안했을 때와 main에 static으로 선언하여 사용하면 error가 발생하지 않는 것을 발견했는데 이때 BufferedReader를 여기저기서 생성해서 사용해도 BufferedReader안에 어떤것이 리터럴 풀처럼 공용으로 사용하고 있을 것 같은 생각이 들었다.BufferedReader를 main에 static으로 생성하고 프로그램이 종료 될때 close()를 하면 될 것 같았다.close()를 하면 BufferedReader안에 InputStream가 닫혀서 null이 되어버리는데 이 InputStream은 모든 입력을 받는, 공용으로 사용 되는 것이였다.!close()를 안하는 것이고