Skip to content

Danger Zone の連続失敗による429を画面に表示する - #64

Merged
Atsumi3 merged 1 commit into
mainfrom
feature/danger-zone-rate-limit
Aug 24, 2026
Merged

Danger Zone の連続失敗による429を画面に表示する#64
Atsumi3 merged 1 commit into
mainfrom
feature/danger-zone-rate-limit

Conversation

@Atsumi3

@Atsumi3 Atsumi3 commented Aug 24, 2026

Copy link
Copy Markdown
Member

概要

サーバー側で Danger Zone のパスワード照合にレート制限が入り、連続失敗が上限に達すると 429 と Retry-After が返るようになった。アプリはこれを通常の通信エラーとして扱っていたため「サーバーに接続できませんでした」という誤った案内が出ていた。429 を専用の例外として扱い、再試行できるまでの秒数を設定画面に表示するようにした。

変更内容

  • DangerZoneRateLimitedException を追加し、Retry-After の秒数を保持する
  • OpenApiDangerZoneService が 429 を検知したときにこの例外を投げる。Retry-After が無い、または秒数として解釈できない場合は秒数なしとして扱う
  • SettingsViewModel の DangerZoneError に RateLimited を追加し、429 を専用の状態にする
  • 設定画面で、秒数がわかるときは「試行回数が多すぎます。◯秒後にもう一度お試しください」、わからないときは「しばらく待ってからもう一度お試しください」と表示する
  • app/openapi/api.yaml に 429 レスポンスと Retry-After ヘッダーを追記する

テスト

  • OpenApiDangerZoneServiceTest を追加。200 のマッピング、429 と Retry-After ありなし、HTTP-date 形式の Retry-After、429 以外のエラーの 5 ケース
  • SettingsViewModelTest に、429 で Locked のまま RateLimited になること(秒数ありなし)の 2 ケースを追加
  • SettingsScreenTest に、それぞれのメッセージが画面に出ることの 2 ケースを追加

関連

サーバー側のレート制限は KidsPOSProject/KidsPOS-Server の PR #49


Generated by Claude Code

サーバーが返す429とRetry-Afterを専用の例外に変換し、
設定画面で再試行できるまでの秒数を案内するようにした
@github-actions

Copy link
Copy Markdown
Contributor

UI差分

基準画像との差分はありません。

全画面スクリーンショット

main_screen

main_screen

main_screen_account_result

main_screen_account_result

main_screen_calculator

main_screen_calculator

main_screen_calculator_shortage

main_screen_calculator_shortage

main_screen_drawer

main_screen_drawer

main_screen_empty

main_screen_empty

main_screen_error

main_screen_error

main_screen_item_selection

main_screen_item_selection

main_screen_item_selection_failed

main_screen_item_selection_failed

main_screen_item_selection_loading

main_screen_item_selection_loading

main_screen_store_selection

main_screen_store_selection

main_screen_store_selection_failed

main_screen_store_selection_failed

main_screen_store_selection_loading

main_screen_store_selection_loading

settings_screen

settings_screen

settings_screen_danger_zone_locked

settings_screen_danger_zone_locked

settings_screen_install_not_permitted

settings_screen_install_not_permitted

settings_screen_up_to_date

settings_screen_up_to_date

settings_screen_update_available

settings_screen_update_available

settings_screen_update_check_failed

settings_screen_update_check_failed

github-actions Bot added a commit that referenced this pull request Aug 24, 2026
@Atsumi3
Atsumi3 merged commit 2668fd4 into main Aug 24, 2026
2 checks passed
@Atsumi3
Atsumi3 deleted the feature/danger-zone-rate-limit branch August 24, 2026 14:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant