アプリから園全体を復元する操作案
状態:2026-09-21、モック試用後に実装・本番反映を承認。実装と配備準備は docs/deployment-restore-ui-2026-09-21.md を参照。
ユーザーの要望と合意
- アプリから復元できるようにしたい。
- 2026-09-21の確認で「園全体をまとめて復元する」を選択。園児・記録を選ぶ部分復元は今回の対象外。
- AGENTS.mdに従い、現行本番を基準にしたモックを試した後、合意した操作を実装する。
現行版との違い
本番は f6f24938c3ad963c1b53203914a5cdd5aead2ad3、backup format 1。バックアップ作成・検査・定期実行・履歴はあるが、画面からの復元はない。2026-09-21にworkerを起動し、実バックアップ1件と再検査の成功を確認済み。
開発ブランチには prepare-restore による隔離ディレクトリ準備、旧認証失効、待機中配送の取消がある。本番には未配備であり、現行版に対応するスキーマ契約・追加検査・切替処理・失敗時の復旧は別途実装が必要。開発ブランチ全体を本番へ上書きしない。
こちらの解釈・提案する操作
入口は「設定」→「バックアップ・復元」。管理者だけが操作する。既存の即時バックアップ、定期実行の有効・頻度・時刻・曜日・保存、次回予定、実行履歴の項目を維持する。
- 「復元元を選ぶ」、または成功履歴の「この時点に復元」から開始する。同じ園の保存済みバックアップを日時・状態付きで表示する。欠損・不対応版・追加検査未完了の候補は理由付きで選択不可にする。外部ファイルのアップロードは初回範囲に含めない。
- 復元元と任意の作業理由を入力し、事前検査する。この段階では業務を停止せず、本番データを変更しない。
- 戻す日時、現在と復元後の件数、対象、入力が戻る影響、利用停止、再ログイン、定期バックアップ再開を確認する。確認チェック後に最終画面へ進む。
- 現在の管理者を再認証し、日時を明記した実行ボタンを押す。ここで初めて復元依頼を確定する。
- 全書込み停止と処理中業務の完了待ち→直前データ退避→別領域で復元準備・検査→切替→起動確認→再開を進行状況に表示する。
- 完了後は全員に再ログインを求める。定期バックアップは無効のまま、管理者が設定確認後に再開する。
復元するデータは、主DB・施設文例DB・写真・全添付・DB内設定。アカウント・パスワードも復元時点の内容となる。サーバー接続設定や秘密鍵はこの画面で過去値に戻さず、別保管の現行設定を検証して使う。定期実行設定は旧形式1の不足を補い、必ず無効として復元する。
修正・取消・失敗
- 実行確定前は戻る・選び直す・取消ができる。理由は画面間で保持するが、復元元の変更時は影響確認をやり直す。取消時に復元ジョブは作らない。
- 最終画面で戻る・取消を選んだら再認証入力を破棄する。実行後は重複依頼・取消を受け付けない。画面を閉じても継続し、再表示で同一作業の状態を確認できる。
- 事前検査、権限、再認証、空き容量、対応版、復元後の管理者ログイン可否が不適合なら開始しない。
- 直前退避が作れなければ切り替えない。実行開始後の失敗でも切替前は元データの保持を確認して再開する。
- 切替後の検査失敗は、直前退避へ戻して再検査する。戻せた場合だけ「直前の状態へ戻し、利用再開」と表示する。
- 自動復旧にも失敗したら利用停止を継続し、作業番号と運用担当への引継ぎを表示する。成功や利用再開と誤表示しない。
モック
架空の園児数・記録数・日時・バックアップIDのみを使用。本番DB、SSH、送信、復元処理に接続しない。管理者パスワードはモック用の demo のみ。入力値を状態保存に含めない。
通常操作、履歴なし、サービス停止、一部入力、入力済み、事前検査エラー、途中失敗後に戻せた状態、自動復旧失敗、完了を切り替えられる。確認用の表示切替と業務画面を分離する。
本実装前に詰める事項
- 上記の画面遷移・影響説明・最終確認の操作についてユーザーの試用確認。
- 本番固有テーブルを含む復元元の互換性と復元後の管理者ログイン保証。未対応の古い版は選択不可にする。
- WebアプリにDocker操作権限を渡さず、固定された復元処理だけを受け付ける専用実行サービスを用意する。入力値をシェル命令や任意パスに使わない。
- app停止中にも進捗・メンテナンス表示を提供する独立経路、復元対象外の監査・進捗保存先、再開後の安全な結果参照。復元前の認証情報で通常業務へ入れる状態を残さない。
- 既存バックアップworker・更新処理との排他、全書込みとメール/Push配送の停止、復元前の退避・失敗時の戻し、再起動・切断後の継続を実機の隔離環境で検証する。
- モックに所要時間の保証値は置かない。実データ量で実測する。
アプリ自体が起動しない障害は通常の管理画面を開けないため、サーバーから復旧する経路も残す。
モックの確認結果
ローカルブラウザーで通常の選択・事前確認・最終確認・完了、未入力時の拒否、戻る時のパスワード入力破棄、取消、バックアップなし、復元サービス停止、事前検査失敗、切替後失敗からの復旧成功/失敗を操作確認した。定期実行の毎週・曜日保存と次回予定、320pxと1024pxの画面幅で横方向のはみ出しがないこと、ブラウザーのJavaScriptエラーがないことを確認した。
これは画面案の検証であり、実データの復元・排他・停止・切替・失敗時の復旧を検証した結果ではない。