問題
#198 の修正(参拝成功結果のローカル保存と完了画面復元、PR #202)により、クールダウン中に /sanpai を再訪すると参拝成功の演出がフルで再生され、無限に参拝できているように見える。
再現手順(本番)
- 参拝して成功画面を見る
- クールダウン(本番は
SANPAI_NEXT_TIME_SECONDS=300 = 5分)以内に、トップの「参拝する」ボタンを押す(またはリロード)
- 二拍手の儀式なしで成功画面が表示され、ポイントのカウントアップ・「+N」バッジ・レベルアップバナー・SNS共有ボタンまで毎回フル再生される
- 何度でも繰り返せるため「参拝し放題」に見える
実際の挙動(ポイントは増えていない)
復元表示は localStorage に保存した前回結果の表示のみで、参拝API(sanpaiGo)は一切呼ばれない。サーバー側の付与は従来どおり last_sanpai + NextTime でガードされており(sanpai.go:317-323)、exp・参拝ログはサーバーでしか増えない。実害(多重付与)は無く、純粋にUX/見た目の問題。
対応案
復元表示を「新規の成功演出」ではなく「参拝済みの結果表示」に変える:
- 見出しを変える(例: 「先ほどの参拝の結果じゃ」)
- CountUp アニメーション・「+N」バッジ・LevelUpBanner は復元時には再生せず、最終値を静的に表示する
- 「次の参拝まで あと◯分◯秒」のカウントダウンを表示する(
next_time は保存済みなので算出可能)
- 共有UIは残してよい(前回結果の共有は正当)
実装は sanpai.vue の mounted 復元パスに restored フラグを立て、テンプレートで演出系を出し分けるだけで済む見込み。
確認方法
- ローカル環境で参拝成功 → リロード/再訪 → 静的な「参拝済み」表示+カウントダウンになり、成功演出が再生されないこと
- カウントダウン経過後は通常どおり儀式から参拝できること
- エミュレーターの Firestore で exp・sanpai_logs が1回分しか増えていないこと(多重付与が無いことの再確認)
- 初回の参拝成功時は従来どおりフル演出が再生されること(リグレッション確認)
問題
#198 の修正(参拝成功結果のローカル保存と完了画面復元、PR #202)により、クールダウン中に
/sanpaiを再訪すると参拝成功の演出がフルで再生され、無限に参拝できているように見える。再現手順(本番)
SANPAI_NEXT_TIME_SECONDS=300= 5分)以内に、トップの「参拝する」ボタンを押す(またはリロード)実際の挙動(ポイントは増えていない)
復元表示は localStorage に保存した前回結果の表示のみで、参拝API(
sanpaiGo)は一切呼ばれない。サーバー側の付与は従来どおりlast_sanpai + NextTimeでガードされており(sanpai.go:317-323)、exp・参拝ログはサーバーでしか増えない。実害(多重付与)は無く、純粋にUX/見た目の問題。対応案
復元表示を「新規の成功演出」ではなく「参拝済みの結果表示」に変える:
next_timeは保存済みなので算出可能)実装は
sanpai.vueの mounted 復元パスにrestoredフラグを立て、テンプレートで演出系を出し分けるだけで済む見込み。確認方法