コンテンツにスキップ

名前表示・メモ共有・出欠訂正の本番反映

2026-09-25。ユーザーが操作できるモックと実装を確認した後、「本番にも実装して」と依頼した。対象の動作は docs/implementation-2026-09-25.md に記載。

現在の状態

2026-09-25 17:08:11 JSTに本番反映が完了。17:09:09 JSTに実機メタデータとの独立照合、17:09:20 JSTに公開ヘルスチェックのHTTP 200・status: okを確認した。配備開始は17:00:01 JST。

sudo -n true が sudo: a password is required を返したため、管理者認証だけをユーザーに依頼した。その後、実機の status.json で処理開始を確認した。起動コマンドの再実行は不要。

本番反映の結果

  • 稼働commit:d7df60d658f3d066783c537cd5c26866911d4722。
  • 実機イメージ:sha256:6c628855795df8d7dce3c461826dcac23e788b28dd8e52273b1fc144d69f5d83。
  • 本番ソース:/mnt/main/open-hoikuict-pilot/releases/d7df60d658f3-20260925T080001Z。
  • 更新後deployment.json SHA256:6efc76f22783ecb33ac905b90246164dbbed25e42fd685e516acb77fe1258f0e。
  • 実機の隔離環境でも577テストすべて成功。失敗・スキップ・収集エラーなし。復元演習、本番DBコピーでの移行と読み取り専用画面検査、既存バックアップ10件の互換性検査も成功した。
  • アプリ・gateway・backup-worker・restore-workerが正常。公開接続を再開し、公開 /healthz のHTTP 200・status: okを独立確認した。
  • 既存78テーブルの記録、添付13ファイル、設定、Composeの内容を保持。園児100人、家庭134件、保護者アカウント8件、園児との紐づけ104件を保持した。
  • 在籍98人のキオスク表示と出欠確認(選択済み43件・未選択55件)、33種類の職員権限による記録関連3,234ページを本番DBで読み取り専用検査。検証による記録の書き込みは0件。
  • 既存の連絡詳細98ページ、園連絡9件(公開8件)、閉園時刻19:00、家庭アーカイブ52件と履歴、初期台帳38項目、保護者アカウントの利用中7件・停止中1件を検査。配備による登録・アーカイブ・削除・アカウント状態変更・検査メール送信は0件。
  • 定期バックアップの「有効・毎日02:00 JST・weekday=0」を保持した。
  • 直前退避:/mnt/main/open-hoikuict-pilot/backups/before-spec25-20260925T080001Z。
  • スナップショット:main/open-hoikuict-pilot/runtime@before-spec25-20260925T080001Z。

完了記録は .local-dev/truenas-spec-20260925/bundle/ の completed-status.json、live-after.json、verified-completion.json、public-health-after.json に保存した。

本番の出欠確認:https://hikarinomori.hoikuict.net/attendance-checks/。名前一覧:https://hikarinomori.hoikuict.net/attendance-checks/roster。

基準と配備内容

  • 最新の配備記録:docs/deployment-spec-2026-09-24.md。
  • 基準commit:79bd070a720f9546558a768026567f72168edd10。
  • 基準イメージ:sha256:8d0631611e54ee3135b469a6dfe94da005d3dcef86eee5bd416e44d62b585942。
  • 基準本番ソース:/mnt/main/open-hoikuict-pilot/releases/79bd070a720f-20260924T111618Z。
  • 基準deployment.json SHA256:09f3133b574cd36eba010db5d8edd50dff4650a2b771987debdd9154d7172c86。
  • Compose SHA256:a15583b8d1edf8b23827986068b6e95af2eba17992ef91c6ab212cf128a2db3b。内容を保持する。
  • 配備commit:d7df60d658f3d066783c537cd5c26866911d4722。
  • ローカルブランチ:codex/spec-20260925-production。
  • 本番基準の専用作業コピー:.local-dev/truenas-spec-20260925/source。
  • 固定配備ファイル:.local-dev/truenas-spec-20260925/bundle。
  • 実機ディレクトリ:/home/truenas_admin/spec-20260925-d7df60d。
  • systemdサービス:hoikuict-spec-20260925-d7df60d。

現行本番commitから、承認済みの実装・テスト・実装記録の20ファイルだけを取り込んだ。既存の家庭アーカイブ、初期台帳、保護者アカウント停止・再開、復元・定期バックアップなどの本番機能を保持する。同じ作業ツリーにある別の開発中変更は配備対象に含めていない。

配備前の検証

  • 本番基準の作業コピーで45モジュール・577テストがすべて成功(435.90秒)。失敗・スキップ・収集エラーなし。
  • 配備手順の8テストがWindows・実機Linuxともに成功。設定保持、復元/バックアップとの排他、失敗時の両ワーカー復旧、DBを巻き戻さない処理、新しい共有範囲の書き込み後に旧コードへ戻さない保護を含む。
  • 架空100人のDBで、既存画面と今回の読み取り専用画面検査を実行。初回未選択20件・入力済み80件、キオスク100名、記録関連400ページと4種類の職員権限を確認し、検査前後のDB全体のダンプが同一であることを確認した。
  • 本番に許可する移行は child_observation_logs のnullableな visibility VARCHAR と shared_staff_ids JSON の2列追加のみ。既存記録のNULLは従来の閲覧範囲を保つ。
  • 固定配備入力18ファイル、UPDATE.json、SHA256SUMSを転送し、実機でハッシュ・構文・配備手順テストを確認。ソース392ファイルのハッシュを固定した。
  • 準備前と転送後に実機の稼働版・Compose・deployment.jsonを照合し、基準と一致した。転送後の証跡は bundle/live-before.json。
  • 配備前の公開 /healthz はHTTP 200・status: ok。証明書検証を維持したcurlで確認した。

実機での処理

  1. 更新ロックを取得し、現行イメージ・ソース・設定・復元/バックアップ状態を照合する。
  2. 新しいイメージを構築し、ネットワークなしの使い捨てコンテナで復元演習と577テストを実行する。
  3. 本番DBのコピーへ移行を2回適用し、許可されたスキーマ追加と既存記録、新旧の画面・権限、既存バックアップとの互換性を検証する。
  4. 公開接続を短時間停止してバックアップ・復元と排他し、アプリと両ワーカーを停止。ZFSスナップショット、主DB・施設DB・設定を退避して切り替える。
  5. 起動、ソース、既存記録・添付・設定・定期バックアップ、新旧の画面・権限を照合し、更新記録を保存して公開を再開する。
  6. 完了記録と独立取得した実機メタデータを照合し、公開 /healthz を再確認する。

実データへの試験登録・検査メール送信は行わない。DBを古いコピーへ戻す復旧は行わない。公開再開前の失敗時は、既知の追加だけであることを確認して旧アプリと両ワーカーを復旧する。ただし新しい共有範囲が既に保存されている場合は、共有範囲を扱えない旧コードへの復旧を拒否し、保守状態と退避物を保持する。公開再開後は自動で巻き戻さない。

配備処理・検証の証跡は .local-dev/truenas-spec-20260925/bundle/ に保持する。実機の詳細診断ログは管理者だけが読める状態で保持し、個別の園児・家庭情報をこの記録に転記しない。