勤怠打刻について考えてみた
打刻システム投入でちょっと考えてみた。
- 朝打刻忘れた
- 朝早起きして作業してたら出社するの忘れた
こんなの一々上長に打刻修正申請してもいいのだが、上長も忙しいし自分でなんとか解決しようと考えてみた。
hubotで打刻通知
定時10分前に @channel でみんな打刻しろの通知を送る。
dakoku.coffee
cronJob = require('cron').CronJob
module.exports = (robot) ->
cronjob = new cronJob('50 0 * * 1,2,3,4,5', () =>
channel = room: "random"
message = "<!channel> 打刻した?"
robot.send channel, message
)
cronjob.start()
オフィスにいなくても位置情報をオフィスにして打刻する
Chromeからだとchange locationを使えば良さそう。デベロッパーツールで一々変更してもいいのだが、on, offでやりたいので Change GeoLocation というextensionを使う。ラベルにオフィスを入れてlatitudeとlongitudeを調べて保存すればOK。後は普通に打刻すればOKなはず。
AndroidアプリからだとFake GPS location みたいなアプリ大量にあるのでどれか使えば良さそう。
どうせならcronで出来ない?
まずシステムのAPIはおそらくないと思って調べてない、絶対ないだろう。
後は自前でなんとかしてシステムを騙すか。
打刻のリクエスト見ると
curl 'https://hoge.force.com/apexremote' --data-binary '{"action":"hogeCtl","method":"inputTime","data":["{\"flag\":1,\"face\":0,\"comment\":\"\",\"device\":\"TS1\",\"latitude\":35.660464,\"longitude\":139.729249}"],"type":"rpc","tid":7,"ctx":{"csrf":"hoge"}}'
headerとか書いてないが大体こんな感じ。あとはlatitudeとlongitudeをオフィスにしてcurlすればいけるはず。問題はcsrfだな。こいつはブラウザ開かないとわからないやつなので、難しい。もしくはcurlでwebページ取ってきて中のcsrfを取得してcurlするとか?
以上
どれもまだ試してないですが、今後進展あったら共有します。