名前表示・メモ共有・出欠訂正の本番反映
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で確認した。
実機での処理
- 更新ロックを取得し、現行イメージ・ソース・設定・復元/バックアップ状態を照合する。
- 新しいイメージを構築し、ネットワークなしの使い捨てコンテナで復元演習と577テストを実行する。
- 本番DBのコピーへ移行を2回適用し、許可されたスキーマ追加と既存記録、新旧の画面・権限、既存バックアップとの互換性を検証する。
- 公開接続を短時間停止してバックアップ・復元と排他し、アプリと両ワーカーを停止。ZFSスナップショット、主DB・施設DB・設定を退避して切り替える。
- 起動、ソース、既存記録・添付・設定・定期バックアップ、新旧の画面・権限を照合し、更新記録を保存して公開を再開する。
- 完了記録と独立取得した実機メタデータを照合し、公開
/healthzを再確認する。
実データへの試験登録・検査メール送信は行わない。DBを古いコピーへ戻す復旧は行わない。公開再開前の失敗時は、既知の追加だけであることを確認して旧アプリと両ワーカーを復旧する。ただし新しい共有範囲が既に保存されている場合は、共有範囲を扱えない旧コードへの復旧を拒否し、保守状態と退避物を保持する。公開再開後は自動で巻き戻さない。
配備処理・検証の証跡は .local-dev/truenas-spec-20260925/bundle/ に保持する。実機の詳細診断ログは管理者だけが読める状態で保持し、個別の園児・家庭情報をこの記録に転記しない。