- sh파일들은 CommuteApplication.java의 main프로그램을 실행한다.(jar파일 내 main메소드)
- crontab에 설정된 workin.sh이 실행된다.
- workin.sh는 crontab에 설정되어있는 기존 workout.sh Job을 삭제한다.
- 그룹웨어를 호출하여 출근시간을 취득한다.
- jsoup라이브러리를 활용하여 로그인 후 로그인쿠키를 취득한다.
- 로그인 쿠키를 통해 출근시간 API를 호출하여 정보를 얻는다.
- jsoup는 스크래핑도 가능한데 여기서는 AJAX로 모든화면이 구성되어있어서 활용할곳이 없음.
- 출근시간으로 퇴근시간을 계산 후, 퇴근시간에 workout.sh이 실행될 수 있도록 crontab을 설정한다.
- crontab에 설정된 workout.sh이 실행된다.
- Slack WebHook에 연결된 채널로 알림메시지를 전송한다.
- MacOS AppleScript를 통해 브라우저앱이 실행되고, 그룹웨어 URL을 호출한다.
- 2~3이 평일에 반복 실행된다.
※ 주요정보(로그인정보, SlackWebHookUrl 등..)는 PC(또는 server)의 Environment Variable로 관리한다.