아이디어 배경
09:00,14:00,17:50에 Crontab 및 Slack Bot을 이용해 Slack의 #출석체크
채널에 출석체크 메시지를 보내고 버튼을 클릭하면 출석체크가 되는 방식
Crontab
에 Scheduling된 시간에 출석체크봇이 출석체크 라는 메시지를 전송Incoming WebHook
를 이용하여 출석체크 메시지를 전송하게 됨Slack에서 채팅 이벤트가 있을 때 호출하는 API
를 Django 내에서 Post 요청을 받아 Slack 채널에 응답(버튼을 포함한 메시지)을 주는 방식Slack에서 버튼 클릭 이벤트가 있을 때 호출하는 API
를 Django 내에서 Post 요청을 받아 Pandas
와openpyxl
를 이용해 출석부를 만듬출석체크 알고리즘 - 평일에만 작동
09:00~09:11 : 버튼 클릭시 출석 인정
09:11 이후 출석체크 버튼 클릭 시 버튼이 없어짐
14:00~14:11 : 버튼 클릭시 출석 인정
14:11 이후 출석체크 버튼 클릭 시 버튼이 없어짐
17:50~18:01 : 버튼 클릭시 출석 인정
18:01 이후 출석체크 버튼 클릭 시 버튼이 없어짐
출석 인정
출석 계산
- 훈련일수 : 강의 일수
- 출석일수 : check로 표시된 수
- 지각일수 : tardy로 표시된 수
- 결석일수 : absent로 표시된 수 (출석 버튼을 누르지 않으면 default absent)
- 출석률 : (출석일수+지각일수-지각일수/3)/훈련일수 (3번 지각 시 결석 1)
- 훈련지원금 : (출석일수+지각일수-지각일수/3) * 10,000원
Crontab - 평일 및 정해진 시간에만 Scheduling
최종 결과물 예시