消えてはいけない警告が、消えていた
接客中のキャストは、派遣先にいるはずだ。この当たり前を、安全デバイスの位置で2分おきに確かめている。 接客中の予約を全部拾って、キャストの現在地と予約の目的地との距離を測り、半径を超えていたら「派遣先逸脱」の警告を出す。 半径の初期値は300メートル。見ているのは接客中だけで、向かっている最中は当然遠いので対象にしない。 場所が仮のままの予約も対象外にしている。仮の座標は店の待機拠点なので、そこから測った距離に意味がない。
電話は鳴らさない
SOSや転倒と違って、これは警告どまりにしている。店の画面に黄色で出すだけで、連絡先への電話もSMSも、昨日書いた再通知もしない。 連れ回しの疑いというのは重い言葉だが、誤検知の余地がそれなりにある。 目的地の座標は住所やホテルの登録から引いたもので、敷地のどこを指しているかまでは保証できない。 疑いの段階で全員の電話を鳴らすと、本当のSOSが来たときに誰も驚かなくなる。 だから警告にして、オペレーターが地図で位置を見て、必要ならキャストに電話をかける。うちのデリヘル管理システムでは、ここだけ人の判断を挟む。
消えてはいけない警告が、消えていた
難しいのは出すほうより消すほうだった。 最初の作りは「逸脱していない端末の警告は全部解決にする」だった。素直に書くとそうなる。 7月の終わりに読み直して、これが危ないと気づいた。 接客が終わった操作をすると予約は接客中でなくなる。すると検知の対象から外れて、「逸脱していない」側に入って、開いていた警告が勝手に閉じる。 契約が切れた端末やキャストの行が消えた場合も同じだった。 連れ回されている最中に誰かが接客完了を押せば、警告は人の目に触れずに消える。
直した後は逆向きにした。自動で閉じるのは「半径の中に戻った」と実際の位置で確かめられた端末だけ。 接客が終わって対象から外れた警告は、そのまま残る。店が安否を確かめて、手で「解決」を押す。 位置が古い端末も触らない。30分以上測位がない端末は、逸脱とも復帰とも判定しないで通信途絶の側に任せる。端末を切られた最悪のケースで、警告が消える道を残したくなかった。
古い位置が、あとから届く
同じ調査でもうひとつ見つけた。安全デバイスからの位置は、少なくとも1回は届く約束で送られてくる。裏返すと、同じものが2回届いたり、順番が入れ替わったりする。 圏外から戻った端末は、ためていた位置をまとめて吐き出す。 その中の古い位置でキャストの現在地を上書きすると、派遣先の近くにいた頃の座標が「今の位置」になり、「半径の中に戻った」と見なされて警告が閉じる。 今は、端末が最後に送ってきた時刻より古いメッセージでは、位置も端末の状態も更新しない。記録だけ残して、判定には使わない。
数日後にも似た穴があった。位置の鮮度を「受け取った時刻」で測っていたので、2時間前の測位が「今取れた新鮮な位置」として記録されていた。測位した時刻で測るように変えた。 それと、3Pや4Pの2人目のキャストを見ていなかった。主担当しか判定していなかったので、2人目が端末ごと連れ回されても気づけない。追加のキャストも対象にした。 安全の仕組みは、出すところより、黙って消えるところで壊れる。 明日は、部屋の中でGPSが取れないままSOSが押されたとき、どの位置を知らせるかの話を書く。