家庭アーカイブの実装記録
追記:初版は本番反映済み。この文書は初版時点の記録。2026-09-22に合意した一覧だけを整理する仕様への変更は family-archive-list-only-implementation-2026-09-22.md を参照する。
2026-09-21、画面確認モックへの「とりあえずこれでいこう、これならあとからでも直しやすい」という合意に基づき実装。配備、本番DBの変更、実在家庭の整理は行っていない。
基準と作業場所
- 本番基準コミット:
4b7f9be3069b5d46330824d5a4270c8a6a2028b4(家庭削除対応版)。 - 実装ブランチ:
codex/family-archive-20260921-production。 - 作業ツリー:
C:/python/open-hoikuict/.local-dev/family-archive-implementation/source。 - 元の開発ブランチ
codex/spec-20260919とコンバーターの変更は保持。開発ブランチ全体を本番へ上書きしない。 - 合意したモックと仕様は元の作業場所の
docs/family-archive-ui-proposal-2026-09-21.md、tools/family-archive-review/。
利用方法と保存動作
家族一覧は「使用中/アーカイブ済み/すべて」で切り替える。初期表示は使用中。検索でも表示範囲を維持する。
「アーカイブ」で家族番号、連絡先、関連記録の件数を確認する。理由・メモは任意。「アーカイブする」で保存し、取消では変更しない。保存失敗時にはメモを残して再試行できる。
在園児、有効な保護者アカウント、進行中の初回入力依頼がある家庭は理由を表示して止める。アンケート回答や反映済みの初回入力履歴は保持したまま整理できる。
アーカイブ済み家庭では「内容・記録を見る」「元に戻す」を利用できる。家族・園児・保護者の台帳編集、新しい紐づけは先に復帰する。復帰しても園児の卒退園状態や保護者アカウントの停止状態は変えない。
アーカイブ・復帰の日時、操作者、理由、メモを履歴に残す。履歴のある家庭は従来の関連データ削除制限の対象になる。
CSVと既存業務
- 家庭CSVの形式は24列を維持。通常出力は使用中のみ。「アーカイブ済みを含む/のみ」も選択可能。
- アーカイブ日時・状態は家庭CSVには含めない。CSVの再取込ではアーカイブを再現・解除しない。状態と履歴の保存・移行には全体バックアップを使う。
- アーカイブ済みID、またはIDなしで同名のアーカイブ済み家庭がある場合は取込を止める。誤った同名新規作成や自動復帰をしない。
- CSVから復帰確認へ進み、戻った後は「対象行を再検証」を押す。残るエラーがある間は取込を止める。
- 「今回の取込から外す行」は元ファイルを変えない。除外内容は確認データに保存し、対象・件数・差分を再計算。選択変更後は再検証するまで実行できない。所有者、期限、ファイル整合性、単回使用、台帳更新検知も維持する。
- 園児・保護者・紐づけCSVもアーカイブ済み家庭への変更を拒否する。
- 請求設定・請求履歴・過去の帳票集計は消さず、既存の請求処理からも除外しない。アーカイブは請求の停止操作ではない。
- テストデータの一括削除、重複家庭の統合、検証環境の初期化は今回の対象外。
データ移行と復元
families.archived_at(NULL許可)と索引、family_archive_logs を追加する。既存家庭は全て使用中として残す。移行は起動時に実行し、繰り返し可能。
全体バックアップは追加項目と履歴を含む。復元では、従来の園識別・許可コミット・管理者・ファイル整合性の検査を維持した上で、今回の既知の追加差分だけを許可する。旧バックアップの原本は変更せず、隔離した復元準備用コピーに追加項目を作る。無関係なスキーマ差分や旧構造への逆戻りは拒否する。
アーカイブ・復帰と園児等の台帳保存には同じSQLite書込みロックを使い、確認後に変わった利用状況を保存直前に検証する。状態変更と履歴追加は一つのトランザクションで確定する。権限は実行時に再確認し、確認情報を操作者・セッション・対象・操作・版・期限に結びつける。
配備するときは最新の配備記録と本番コミットを再確認し、バックアップを取得してから本番基準の差分として適用する。復元対応コミットの許可設定も実際の配備版に合わせる。この作業では配備設定を変更していない。
検証
- アーカイブ/削除/CSV/連絡先保持/家庭/初回入力/園児編集/起動の関連12ファイル: 116件成功。並行した園児登録とアーカイブも含む。
- 全体復元およびアーカイブ追加前バックアップの互換検証: 15件成功。
- 検証用の架空DB・実際のルーターとテンプレートを用いて、回答を保持したアーカイブ、取消、保存履歴、CSVからの復帰、再検証、行選択変更時の実行停止、1行除外での取込、在園児による拒否をブラウザーで確認。
- 通常幅と390px設定(本文375px)で一覧・確認画面を確認。横はみ出しなし。狭い画面の操作ボタンは折り返す。ブラウザーのエラーログなし。
- 新規Pythonファイルの静的検査と差分の空白検査に成功。
自動テストは架空DBのみ、ブラウザー確認もループバック上の使い捨て環境。本番での配備後確認は未実施。