💼 프로젝트명 : B2Tech 근태 관리 프로그램
(1) 프로젝트 소개
- 근태 등록, 근무제 선택 및 신청, 연차 등 휴가 관리, 초과 근로 관리 및 수당 지급 등
인사 업무 시스템
개발 프로젝트(2) 프로젝트 기간 : 2021.06.07. ~ 2021.07.01. (4주)
(3) 프로젝트 계획
- 1주차 Sprint : 프로젝트 기획 및 모델링, 레이아웃 및 스타일링
- 구현해야하는 agenda 선정
업무정의서
작성- 2주차 Sprint : 근태 입력 및 조회, 휴가/근무제 신청, 마이페이지, 관리자 페이지 기능 구현
- 3주차 Sprint : 백엔드와
API
연결(4) 프로젝트 팀원 (👩💻github)
(5) 적용기술
- Front-end :
React
,React Hooks
,Styled Component
,JavaScript
- Back-end : Python, MySQL, Django, AWS(RDS, EC2)
- Common : gitlab, git graph, slack, trello, google ppt, google sheets
(6) 필수 구현사항 💥
- 🎈 근태 프로그램 메인
- 개인별 고유한 데이터인
사원번호
입력을 통해 출퇴근 등록 및 조회- 🎈 휴가/근무제 신청
- 휴가 신청: 개인별
휴가일수(발생/사용/잔여)
,휴가 type
,휴가 일자
선택 후 등록- 근무제 신청: 유연근무제 4가지 type 중
시차출퇴근
에 대한월단위 기간
및출근시간
선택 후 등록- 🎈 마이페이지
- 개인별
당일 출퇴근 시간
확인- 주 52시간에 따른 한주 동안의 근로시간, 요일별 초과근로시간 및 출퇴근 시간
시각화
- 🎈 관리자 페이지
관리자 권한
이 부여된 사용자인지 여부에 따라, 좌측 사이드 바 메뉴의 활성화 영역 조정react-table 라이브러리
및useMemo Hook
을 활용하여, 전 직원 기본정보 및 출퇴근정보 테이블화fetch 함수
를 통해 서버에서 불러온 전 직원의 기본정보 및 출퇴근 정보에 대한검색
기능(7) 프로젝트 전체 시연 영상
- 로그인 후
마이페이지
로 이동시, fetch 함수를 이용해 관리자 권한이 부여된 사용자의 token 인지 확인 후 활성화 메뉴 구분
일반 직원
의 경우,마이페이지
메뉴만 활성화관리자
의 경우,마이페이지
및관리자 메뉴
전체 활성화
react-table 라이브러리
를 활용하여 table 양식 및 정렬 기능 구현useMemo Hook
을 활용해 table header 구성
- 전 직원의 기본정보 및 출퇴근정보 data는 fetch 함수를 이용해 서버로부터 받아옴
- search box 에 onClick 이벤트 발생 시,
Query Parameter
를 사용한 fetch 함수 호출
- 서버로부터 전 직원의 기본정보를 받아오기 위해
promise
.then
문법을 사용하여 fetch 함수 호출
- data 가 화면에 랜더링 되지 않아, 콘솔창에
콘솔로그
확인
- operation 이 수행중인 상태를 나타내는
promiseState : <pending>
메시지 확인
- 구글링을 통해, promise object 의 상태를 크게 3가지로 구분하는 것까지는 확인하였으나,
- operation 수행중 : pending 상태
- operation 성공 : fulfilled 상태
- operation 실패 : rejected 상태
- 코드를 어떻게 수정 적용해야 할지 방법이 떠오르지 않아, 사수님께 조언(?)을 구함
- 기존
promise
.then
문법 대신,async
와await
키워드를 사용하여 문제 해결
주어진 사이트를 클론하는 프로젝트가 아닌, 기획부터 직접 구상하는 것이 쉽지는 않았지만, 같이 인턴십에 참여한 동기들과 서로 의지하며 끝까지 완주할 수 있었음
나름대로 팀원 간에 소통도 많이 하면서 구체적인 그림을 가지고 시작했지만, 기능을 구현하다보니 조금 더 디테일한 부분까지 신경써서 프론트와 백엔드 간에 조율을 하고 진행했더라면 하는 아쉬움이 남음
3개월 동안 갑자기 너무나 많은 지식을 스치듯 받아들이기만 한 것 같아, 차분히 정리하고 되짚어보는 시간이 필요하지 싶음
터미널 창을 이용하여 git 명령어를 입력하는 대신 git graph extension 활용
사용자가 주소창에 URL을 직접 입력하여 접속하려 할 때, 토큰 또는 권한이 없는 사용자는 접근이 불가하도록 구현
백엔드는 프론트엔드에서 요청한 데이터를 전달하는 것이 주요한 역할로, 데이터의 포맷을 변경하고 가공하는 부분은 프론트엔드에서 담당하는 것이 좋음
ideal React project structure
기능 단위 분할
(통신기능, 유저입력 처리기능, 이벤트대응, 화면 갱신 기능)시각적 단위 분할
(atomic, molecule, organism, template, page)데이터 중심 분할
(MVC, MVT, MVVM)