月案帳票・文例検索・Ollamaの本番反映
後続更新:2026-09-27 13:14 JSTに印刷・Excel出力を追加した。
13:36 JSTに主任印欄を追加し、13:54 JSTに画面へ古いJSが届く配信キャッシュの不具合を修正した。
最新の稼働版は 5ae9e04。最新の配備記録 を参照。
以下は11:08時点の配備履歴。
2026-09-27。ユーザーが本番 /plans/monthly-plans/new に変更がないと指摘したため、
実機内の隔離検証と本番反映を区別し、本番用の配備手順を準備した。
現在の状態
2026-09-27 11:08:25 JSTに本番反映が完了。 11:08:51 JSTに稼働メタデータを独立照合し、11:09:03 JSTに公開HTTPSを確認した。 ユーザーによる修正版の管理者コマンド実行後、処理開始から完了まで確認済み。 以下は実行済みコマンドの記録であり、再実行は不要。
sudo python3 /home/truenas_admin/monthly-deploy-20260927-579e683/start-systemd.py
本番の新しい月案画面:https://hikarinomori.hoikuict.net/plans/monthly-library。
従来の /plans/monthly-plans/new 上部の「原本の帳票で入力・文例検索」からも開ける。
未ログイン時は職員ログインへ遷移し、ログイン後の戻り先が新しい月案画面であることを確認した。
過去に実行した monthly-library-verify-20260927/start_container.py は架空データ用の
検証コンテナの起動であり、今回の本番反映とは別。
完了結果
- 稼働commit:
579e683c77000ad2238be2cdd3fc3df7513bf8b6。 - 稼働イメージ:
sha256:de594c07a5f75c6512a42932ad9578e2a78436f0457196de956827f22e4e2d52。 - 本番ソース:
/mnt/main/open-hoikuict-pilot/releases/579e683c7700-20260927T020316Z。 - deployment.json SHA256:
92cc5a31cec887ff9ed56904bfe5db4a09bc956a1705fada5af9bb43f12c799d。 - Compose SHA256:
f3cddda31ac5c20b7b7633fa6427e3cce28e21de02d0cb87c7d3d6812a611817。 - 実機の100テストと復元演習が成功。既存バックアップ10件の互換性検査も成功。
- 本番DBコピーで移行を確認し、切り替え後は6クラス・36条件の月案画面を読み取り専用で確認。
- 本番アプリと同じDockerネットワークから原文候補50件、食育40件の検索と、
qwen3:8bによる実生成2件・署名検証が成功。AIには架空の年齢・月・欄条件だけを送信。 - 本番の文例・AI設定が有効であること、既存機能・記録・添付13ファイルを保持したことを確認。
- アプリ・gateway・backup-worker・restore-workerが正常。毎日02:00 JSTのバックアップ設定を保持。
- 公開
/healthzが正常応答。月案CSS/JSと既存出欠CSSが配備アーカイブとバイト単位で一致。 - ブラウザーでも従来画面の新しい入口と職員ログインへの遷移を確認。実データの試験登録は0件。
退避先:/mnt/main/open-hoikuict-pilot/backups/before-monthly27-20260927T020316Z。
スナップショット:main/open-hoikuict-pilot/runtime@before-monthly27-20260927T020316Z。
証跡は .local-dev/truenas-monthly-deploy-20260927-r2/bundle/ の completed-status.json、
live-after.json、verified-completion.json、public-health-after.json。
画面確認画像は同作業フォルダーの monthly-production-entry.png。
固定した本番基準と更新内容
- 配備前の本番commit:
51ddae0ad1ff641310fdd4edb22f369385d0f45b。 - 配備前のイメージ:
sha256:e5d1ab380bc69383803655b02f348ad921a039f5b654eca29a38fd886b060dcb。 - 配備前のdeployment.json SHA256:
73ea5d5cd18a750271eb53f8680771ccc4b44596cc4195af421635b8dfcdfb15。 - 配備前のCompose SHA256:
a15583b8d1edf8b23827986068b6e95af2eba17992ef91c6ab212cf128a2db3b。 - 配備commit:
579e683c77000ad2238be2cdd3fc3df7513bf8b6。 - ブランチ:
codex/monthly-library-20260927-production。 - 既存の本番用作業コピー
.local-dev/truenas-notice-order-20260927/sourceを再利用。 - 配備ファイル:
.local-dev/truenas-monthly-deploy-20260927-r2/bundle。 - 実機専用フォルダー:
/home/truenas_admin/monthly-deploy-20260927-579e683。 - systemdサービス:
hoikuict-monthly-20260927-579e683。
本番基準に、実機検証済みの月案関連23ファイルと復元互換処理・回帰テストの計25ファイルを反映する。 既存の保護者お知らせ順、出欠画面、記録、バックアップ・復元などのコードを保持する。 Dockerイメージは現在の本番イメージを継承し、ネットワークを使わずコードだけを更新する。 Pythonと依存パッケージを同時更新しない。
従来の /plans/monthly-plans/new 上部に「原本の帳票で入力・文例検索」の入口を追加する。
新しい帳票のURLは /plans/monthly-library。従来の月案入力と保存済み文書も保持する。
新しい帳票は職員ログインが必要。0〜2歳の個人別、3〜5歳の集団様式、明示保存、出典、
過去3か月の表示とOllamaの仕様は各実装記録を参照。
文例とAIの接続
ユーザーは、指定DBから文例128,008件と出典を本番実機へ転送することを明示許可した。
元の C:/python/getsuan-rag/getsuan.sqlite は読み取り専用で参照し、検索に必要な
source、cell、phrase の列だけを抽出。ID・本文・出典は全件照合し、元DBは変更していない。
- 圧縮データ:6,643,903 bytes。展開後:38,670,336 bytes。
- 展開後SHA256:
684fdf7e344202b252b4c05aa2a6562d5a021d60edaa3ddd0595cea009e2e29b。 - 配置先:
/mnt/main/open-hoikuict-pilot/library/getsuan-20260927.sqlite。 - アプリ内:
/monthly-library/getsuan.sqlite、読み取り専用マウント。 - ソースID:
getsuan-20260927。 - Ollama:実機の
http://host.docker.internal:11434、qwen3:8b。
アプリに園別の HOIKU_MONTHLY_LIBRARY_SOURCES と HOIKU_MONTHLY_OLLAMA_SOURCES を追加する。
Dockerのhost-gateway名を解決し、現在のネットワーク構成を保持する。
Ollamaに送るのは年齢・月・区分・領域・欄の条件のみで、文例本文、氏名、記入本文、過去記録は送らない。
原文データはGitとソースアーカイブに含めず、配備入力として別に保管する。
再試行時は文例データを再転送せず、初回の専用フォルダーにある圧縮データをハッシュ確認して利用する。
修正版のフォルダーへ転送するのはコード・依存テストツール・配備設定のみ。
配備前の確認と実行時の手順
- アプリの月案・AI・既存機能77テストは、現在の本番イメージによる隔離実機検証と初回配備前検査で成功済み。
- 修正版は月案の復元11件と既存の復元12件を追加し、計100テストが本番基準のWindows作業コピーで成功。 開発側でも新しい月案復元11テストが成功。旧バックアップ・稼働DBを変更せず隔離コピーのみを移行する。
- 配備手順10テストはWindowsと実機Linuxで成功。途中失敗時のコード復帰、既存データを 古いコピーで置き換えないこと、許可外の設定変更拒否、文例ハッシュ不一致時の停止を含む。
- 新しい読み取り専用画面検査を架空DBで試し、前後のDB dumpが一致することを確認。
- 実データ由来の文例検索は本文をログ出力せず確認。Ollama送信条件の固定応答検査も成功。
- 実機Composeに架空の設定値を渡して比較し、月案の接続設定以外が保持されることを確認。
- 転送した配備ファイルのハッシュを照合し、本番基準を再確認してから更新を開始した。
実行した手順は、更新ロックと本番基準の照合、新イメージ構築、復元演習、100テスト。 本番DBのコピーで追加列と索引の移行を試し、既存機能・月案画面・バックアップ互換性を検査する。 文例データを読み取り専用で配置し、本番と同じDockerネットワークから、架空条件で Ollamaの実生成と署名付き候補の検証を行う。失敗時は本番切り替え前に停止する。
すべて通った後だけ短時間の公開停止、直前DB退避、ZFSスナップショットを取り、 アプリとバックアップ・復元ワーカーを切り替える。既存データ、添付、設定、定期バックアップを 照合してから公開を再開する。本番へ試験用月案や架空園児を登録する処理はない。
変更するDBスキーマは plan_documents.monthly_sheet(JSON)、monthly_sheet_key(VARCHAR)と
その一意索引だけ。新しい月案が保存済みなら古いコードへの自動復帰を拒否し、データを保全する。
初回の停止結果
初回commit be358f696e6e133f28f3f18f79a72ec3e49cd1a5 は2026-09-27 10:48 JSTに配備処理を開始。
77テスト・復元演習・本番DBコピーでの移行・既存画面・6クラス36条件の月案画面の検査が成功した。
10:50 JSTごろ、既存バックアップのデータ構造不一致で停止。文例配置と本番切り替えの前だったため、
本番のcommit・イメージ・deployment.json・Composeはすべて開始前と同じことを独立照合した。
修正は追加する2列と承認済みの一意索引の形式に限る。異なる型・既定値・NOT NULL・ 一意でない索引・別の条件式・無関係の列追加・旧コードへのダウングレードは引き続き拒否する。 初回の専用フォルダー、診断結果、DBの検査用コピーは証跡として保持している。