Skip to content

参拝結果の復元表示が成功演出を毎回再生し「無限に参拝できる」ように見える #215

Description

@ShinoharaTa

問題

#198 の修正(参拝成功結果のローカル保存と完了画面復元、PR #202)により、クールダウン中に /sanpai を再訪すると参拝成功の演出がフルで再生され、無限に参拝できているように見える

再現手順(本番)

  1. 参拝して成功画面を見る
  2. クールダウン(本番は SANPAI_NEXT_TIME_SECONDS=300 = 5分)以内に、トップの「参拝する」ボタンを押す(またはリロード)
  3. 二拍手の儀式なしで成功画面が表示され、ポイントのカウントアップ・「+N」バッジ・レベルアップバナー・SNS共有ボタンまで毎回フル再生される
  4. 何度でも繰り返せるため「参拝し放題」に見える

実際の挙動(ポイントは増えていない)

復元表示は localStorage に保存した前回結果の表示のみで、参拝API(sanpaiGo)は一切呼ばれない。サーバー側の付与は従来どおり last_sanpai + NextTime でガードされており(sanpai.go:317-323)、exp・参拝ログはサーバーでしか増えない。実害(多重付与)は無く、純粋にUX/見た目の問題

対応案

復元表示を「新規の成功演出」ではなく「参拝済みの結果表示」に変える:

  1. 見出しを変える(例: 「先ほどの参拝の結果じゃ」)
  2. CountUp アニメーション・「+N」バッジ・LevelUpBanner は復元時には再生せず、最終値を静的に表示する
  3. 「次の参拝まで あと◯分◯秒」のカウントダウンを表示する(next_time は保存済みなので算出可能)
  4. 共有UIは残してよい(前回結果の共有は正当)

実装は sanpai.vue の mounted 復元パスに restored フラグを立て、テンプレートで演出系を出し分けるだけで済む見込み。

確認方法

  • ローカル環境で参拝成功 → リロード/再訪 → 静的な「参拝済み」表示+カウントダウンになり、成功演出が再生されないこと
  • カウントダウン経過後は通常どおり儀式から参拝できること
  • エミュレーターの Firestore で exp・sanpai_logs が1回分しか増えていないこと(多重付与が無いことの再確認)
  • 初回の参拝成功時は従来どおりフル演出が再生されること(リグレッション確認)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions