×を押しても、通報は止まらない
昨日の最後に、誰も確認しなければもう一度知らせるのは緊急の通報だけだ、と書いた。今日はその「もう一度」の中身を書く。 うちのデリヘル管理ツールでは、SOS・転倒・無動作・電源OFFの4種類を緊急として扱っていて、店の誰かが「確認」を押すまで鳴り直す。 毎分、開いたままの緊急を見て回り、最後に知らせてから2分たっていたら、最初とまったく同じことをやり直す。 登録してある連絡先へのSMSと電話、店の画面のお知らせ、赤いポップと3連のビープ音だ。
×を押しても、通報は止まらない
ポップには「確認して対応」と×の2つがある。どちらを押しても、再通知は止まらない。 ×はポップを画面から消すだけ。「確認して対応」は安全モニタリングの画面へ移るだけで、確認済みにはしない。 止まるのは、移った先の一覧で「確認」か「解決」を押したときだ。 鳴っている最中のポップは邪魔なので、人は反射で消す。消す操作と「わかった」を同じボタンにすると、反射ひとつで通報が終わってしまう。 それに、一覧に並ぶのは未確認の通報だけなので、ポップの側で確認済みにすると、移った先にその行がもう無い。
再通知は5回まで。最初の1回と合わせて6回鳴って、それでも誰も押さなければ止まる。 何回目かはポップに出るし、履歴にも「↑3」のように残る。あとから見て、何回鳴ってから気づいたのかが分かる。
鳴らないまま、回数だけ減っていた
7月にコード全体を読み直したとき、この仕組みに穴を見つけた。 「最後に知らせた時刻」を書き込むのが、実際に通知を出す処理の側だけだった。 通知は順番待ちの列に積んでから出している。列が2分以上詰まると時刻が進まないので、毎分の見回りが同じ通報を毎回「もう2分たった」と数える。 回数は1分ごとに上がって、5分で上限に着く。そのあいだ、電話は1本も鳴っていない。 詰まりが解けても、回数はもう使い切っている。
直したのは1か所で、列に積んだ時点で時刻を進めるようにした。次の2分は、積んだときから数える。 鳴らし続ける仕組みは、鳴らす側が詰まったときにいちばん壊れやすい。 警告にはもうひとつ、派遣先逸脱というのがある。明日はその話を書く。