コンテンツにスキップ

設定一覧・職員ログイン時間の本番更新(9月20日準備・21日反映)

状態: 2026年9月21日3:45:52 JSTに本番反映完了。完了証跡と現在の配備版の一致を確認済み。起動コマンドの再実行は不要。

ユーザーは設定一覧のモックと全体点検を確認し、コミット・プッシュ・実機反映まで依頼した。

固定した配備版

  • 更新前の本番: 801ed69915846bc42ec6e1f1342fc4f9f9aa6771。
  • 配備対象: f6f24938c3ad963c1b53203914a5cdd5aead2ad3。
  • 本番用ブランチ: codex/settings-session-20260920-production。
  • 開発側: codex/spec-20260919 の b40098b9f54cb461242a75e1a54d0dec40a7598e に今回の変更だけを取り込み、プッシュ済み。本番は開発側全体へ置き換えていない。

変更内容

設定一覧に9項目を4分類でまとめた。一般職員は既存権限に従いクラス管理と延長保育料金ルールを利用できる。旧URL、業務画面からの設定リンク、端末異常警告を保持した。

管理者は「設定」→「ログイン時間設定」で非操作時間と最長時間を保存できる。12時間の一括入力、単位換算、取消、未保存確認、入力検証、変更者と変更前後の監査を実装した。

新しいDBテーブル3個を追加する。既存の認証テーブル・既存セッションを書き換えず、保存後の新しいログインに設定を適用する。初回導入では環境変数の既存値を維持する。「勤務中は12時間維持」→「設定を保存」で12時間を選び、ログアウト後に再ログインすると適用される。

職員のフォーム用CSRF Cookieの寿命も最長24時間に合わせる。認証・CSRFの検証、ログアウト・利用停止・資格情報変更による失効は維持する。保護者のログイン期限や端末の登録期限は変更しない。

配備アーカイブの除外指定がバックアップ設定画面も除外していたため、/backups に限定した。実データのバックアップは除外し、画面テンプレートは配備する。

検証

  • 本番用版の全体テスト783件成功(359.38秒)。最後の単位換算・JavaScript配信調整後の設定・認証テスト34件成功。
  • 開発側へ取り込んだ版の関連テスト67件成功。
  • Ruff、MkDocs strict、差分の空白検査が成功。
  • 合成DBのブラウザー操作で保存・取消・入力エラー・未保存確認・単位換算を検証。320px幅で設定一覧・入力に横方向のはみ出しがないことを確認。
  • 配備物321ファイルをハッシュで固定。本番固有のカレンダー取込、議事録出力、保護者端末機能、バックアップ方式を保持。
  • 更新プログラムのWALバックアップ、設定保持、データ変化検出、正常更新、切替前中断、起動失敗・確認結果不足時の復旧を模擬検証。
  • 既存の各機能・8設定画面・設定一覧の権限別表示・3テーブル・操作用スクリプトの確認コードを合成DBで検証。

実機更新の手順と記録

更新プログラムは現在の本番コミットと設定ハッシュを確認し、現行版を稼働させたままイメージを構築する。ネットワークを遮断した実DBコピーで起動・スキーマ作成を試し、その後に短時間停止してDBバックアップとZFSスナップショットを作成する。切替後は正常起動、設定保持、既存69テーブル(認証セッションを含む)、所属園児数、設定一覧と時間設定の描画を確認する。確認失敗時は前のイメージ・設定へ戻す。

配備プログラムの場所: SSHユーザーのホームの settings-session-20260920-f6f2493/。完了証跡は同ディレクトリの status.json。更新開始後は起動コマンドを再実行せず、状態を確認する。

本番反映の結果(2026年9月21日)

ユーザーによるsudo認証後、更新プログラムが正常に完了した。実DBコピーでスキーマ作成と既存機能を検証し、バックアップとZFSスナップショットを取得してから切り替えた。

  • 完了状態: complete。アプリのヘルスチェックと接続用コネクターの稼働確認が成功。
  • 配備コミット: f6f24938c3ad963c1b53203914a5cdd5aead2ad3。
  • 配備イメージ: sha256:fa273d18a2219db49bbe373a74cb25247ec755306bde5becf0ea7d2e54e2342d。
  • 更新前バックアップ・スナップショット識別子: before-settings-session-20260920-20260920T184139Z。
  • 認証セッションを含む既存69テーブルの内容保持、321ファイルの一致、Compose設定の保持を確認。
  • 実機の設定一覧を読み取り専用で描画し、管理者9項目、編集可2項目、閲覧のみ2項目を確認。
  • 設定用3テーブル、既存8画面のテンプレート、ログイン時間設定の入力欄・説明、操作用JavaScriptの配信を確認。
  • 所属園児の合計97人と在園児97人が一致。退園児2人の記録を保持。
  • 完了後に、現在の配備メタデータが完了証跡のコミット・イメージ・バックアップ・スナップショットと一致することを再確認した。

実機の確認はヘルスチェック・読み取り専用描画・データ照合による。公開ブラウザーから実利用者としてログインして行う操作確認は今回実施していない。

確認時点ではログイン時間のDB設定は未保存であり、環境変数の既存値(非操作30分・最長12時間)を維持している。12時間維持へ変更するには、管理者が「設定」→「ログイン時間設定」→「勤務中は12時間維持」→「設定を保存」を実行する。保存後にログアウトして再ログインした職員から適用される。

バックアップ実行サービスの復旧(2026年9月21日)

配備後、ユーザーから「今すぐバックアップ」が使えないと報告があった。実機の backup-worker は backup-ui-trial profileにあり、通常のCompose起動対象に含まれず停止していた。画面で定期実行設定を保存してもworkerは起動しない。前回の配備確認は画面描画までで、実行サービスの稼働とバックアップ作成の確認が不足していた。

現行イメージ・データ共有先・保存先・空き容量を確認し、ユーザーのsudo認証後に既存workerを起動した。アプリのイメージ・コンテナ・Compose・環境設定を変更せず、保存済みの「毎日02:00 JST」を維持した。

  • 完了時刻: 2026年9月21日04:05:12 JST。worker online、画面の即時実行ボタン有効を実機の描画で確認。
  • 作成済みbackup ID: open-hoikuict_20260920T190506Z_f6f24938c3ad。
  • 作成後の独立した再検査: ok、検査対象12ファイル、警告0。DB・外部キー・添付・ハッシュ検査と配備元コミット/イメージの一致を確認。
  • アプリのhealthy、既存コンテナ継続稼働、配備記録・Compose・環境設定・定期実行設定の保持を確認。
  • SSHユーザーのホームの backup-worker-20260921-f6f2493/status.json に完了証跡を保存。起動処理の再実行は不要。

workerは restart: unless-stopped で稼働を継続する。今後の配備では実行中バックアップの完了を待ってworkerを停止し、アプリ更新後に同一イメージのworkerを明示的に再開する。以前の更新処理はworker停止を前提としているため、稼働中にその前提を無視して実行しない。

今回の検査は本番のbackup format 1による。別媒体への転送や復元試験の完了を意味するものではない。