· hack office

勤怠打刻について考えてみた

打刻システム投入でちょっと考えてみた。

こんなの一々上長に打刻修正申請してもいいのだが、上長も忙しいし自分でなんとか解決しようと考えてみた。

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するとか?

以上

どれもまだ試してないですが、今後進展あったら共有します。