고객과 미팅 내용을 토대로 개발할 페이지, 기능, 고려할 점을 정리했다.
정리한 내용을 바탕으로 DB를 설계하고 팀원과 페이지를 나눠서 개발을 진행하기로했다.
우선 회사 내부망의 Django 프로젝트에 app을 추가해서 개발하기로했다.
그래서 따로 로그인 기능을 개발할 필요 없이 기존 코드를 사용했다.
사번, 비밀번호만 가지고 예약할 수 있게 했다.
로그인 후 접속되는 페이지이다.
우선 필요한 기능을 나열해보자면
이었다.
간단한 내용이었고, 개발하면서 다양한 기능을 더 추가했다.
날짜, 시간, 회의실, 회의 제목, 회의 안건, 주최자, 참석자를 입력하여 예약하는 페이지이다.
회의를 예약할 때에는
사내 DB에 등록되지 않은 사람을 등록하는 페이지다.
외부인이 본사를 방문하여 회의에 참여하는 경우가 많아서 개발하기로했다.
내가 참석했거나, 참석해야하는 회의를 보여준다.
각 회의실 앞에 태블릿을 두고 사용할 예정이기 때문에, 태블릿에서 전체 현황을 볼 수 있는 페이지가 필요했다.
예약하거나 다른 기능은 필요 없이 전체 현황만 볼 수 있으면 되는 페이지였다.
아래 이미지처럼 DB를 설계했다.
DB설계할 때 가장 많이 고민한 부분은 시간 예약에 대한 부분이었다.
시간을 어떻게 예약하고, 관리할 것인가 ?
어떤 방식으로 시간 값을 저장했을 때 다른 기능들을 구현하기 편하고, 잘 작동할지 고민을 많이했다.
첫번째 고민 했던 방법은 세달치 시간값을 미리 생성해두고 상태값을 변경하는 방법이다.
보통 회의를 예약할 때 세 달이상 일찍 예약하는 경우가 없었다.
그래서 세달치 시간값을 미리 생성해두고 상태값을 변경하는 방법을 생각했었다.
자동으로 시간값을 지우고 생성하도록해서 관리하는 것이다.
회의 예약은 30분 단위로 가능하기 때문에 9시 부터 19시까지 하루에 21개의 값이 필요했다. 세 달이면 1,390개의 값이었다.
두번째는 예약할 때 마다 시간 값을 생성하고 이미 생성된 값이 있다면 생성되지 않도록 하는 것이다.
예약할 때 마다 데이터를 생성한다.
form을 넘기기 전에 비동기로 중복값 검사를 하고 중복된 값이 있으면 submit을 하지 못하게 하는 방법이었다.
이 외에도 다른 방법들을 고민해봤는데, 결국 2번으로 진행하기로했다.
