コンテンツにスキップ

家庭一覧だけを整理するアーカイブ

状態:2026-09-22、合意したモックに従い実装・検証を完了。本書は配備前の実装記録。本番反映の完了は家庭一覧アーカイブの更新記録を参照。配備による実在家庭の整理は行っていない。

基準と合意

ユーザーは、紐づけの解除を前提にするアーカイブでは削除と手間が変わらないと指摘し、「家庭の一覧だけ整理し、園児・保護者の利用はそのまま続ける」を選択した。変更案のモックを試用した後、「これで、いこう」で実装に合意した。

基準は本番配備済み 8ec32083aed01256263dbad4237157ea729abcbc。ブランチは codex/family-archive-list-only-20260922-production。元の開発ブランチとコンバーターの作業は変更していない。

動作

  • 在園児、有効な保護者アカウント、進行中の初回入力依頼は、継続する利用として確認画面に表示する。紐づけを外さず保存できる。
  • アーカイブは家庭一覧の通常表示から外す操作。家族・園児・保護者・紐づけの編集、初回入力、CSVの更新と新規紐づけは継続する。園児・保護者の状態は変えない。
  • 一覧の「使用中」を「通常表示」に変更。アーカイブ済み一覧にも編集ボタンを表示し、編集保存・取消後は同じ一覧に戻る。家庭の選択候補はアーカイブ済みも残して注記する。
  • CSVのID一致はアーカイブ済みでも更新でき、アーカイブ状態を維持する旨を検証結果に表示する。同名家庭が複数ならID指定を求め、アーカイブの有無で別の家庭と判断しない。家庭CSVの24列と明示的な出力範囲を保持する。
  • 復帰は家庭一覧への再表示。個別に退園・停止した園児・保護者を有効化しない。
  • 削除の関連データ保護、アーカイブの権限確認・CSRF・確認期限・操作者の一致・再送防止・履歴を保持する。

実装上の注意

ORMの保護をアーカイブ状態そのものの変更に限定し、通常の関連データ更新を拒否する処理を除去した。各ルーターの転送・拒否、選択候補、同期・初期化、初回入力、各CSVの拒否も一体で見直した。

一覧の整理で進行中の初回入力の照合が失敗しないよう、アーカイブ・復帰では家族情報の updated_at を変更しない。確認トークンには家族情報の指紋に加え、最新の操作履歴IDを含める。保存時にSQLiteの書込ロック下で再確認し、アーカイブ→復帰後に古い確認トークンを再利用できないようにする。実際の家族情報の更新では引き続き既存の入力依頼の変更検知が働く。

DB列・テーブル・バックアップ形式の変更はない。旧アーカイブの操作履歴も保持する。

検証

次の関連113件が成功(75.00秒)。

& C:\python\open-hoikuict\venv\Scripts\python.exe -m pytest -q -p no:cacheprovider test_family_archive_usage.py test_families.py test_data_transfers.py test_spec_changes_20260919.py test_family_archive.py test_family_deletion.py test_family_archive_restore.py test_local_parent_auth.py test_child_change_requests.py test_billing_zengin.py

別途、初回入力・保護者同期の既存テストも成功。追加の結合テストでは以下を確認した。

  • アーカイブ前後の保護者登録・ログイン・プロフィール提出・職員承認・兄弟姉妹への同期。通知はテストDB内で生成し、外部送信しない。
  • 招待前、入力途中、提出後にアーカイブしても、再招待なしで初回入力を承認・反映できる。入力途中でアーカイブ→復帰→再アーカイブしても続行できる。
  • 実際の台帳内容を変更した場合は、従来どおり古い入力の承認を拒否し、上書きを防ぐ。
  • 家庭・保護者・園児の画面編集、家庭・園児・保護者・紐づけのCSV更新、アーカイブ状態の保持。
  • 同時園児登録とアーカイブ、古い確認の再送、権限取消、CSRF、期限切れ、保存失敗、移行と復元。

実装済みルーターを架空DBでループバック起動し、ブラウザーで在園児のいる家庭のアーカイブ、編集、アーカイブ済み一覧への復帰、通常一覧への復帰を確認した。通常幅と幅390pxを確認し、狭い画面でも内容幅375px・表示幅375pxで横はみ出しなし。JavaScriptエラーはなく、既存のTailwind CDN開発利用の警告のみ。検証用タブ・サーバーは終了する。

Ruff検査、差分の空白検査が成功。アプリ全体テストの再実行は行っていない。

次回の配備

今回の追加配備は未実施。配備時は最新の実機更新記録を再確認し、固定コミットから新しい配備一式を作る。前回の完了済み配備ディレクトリと起動コマンドは再利用しない。前回の検証コードには旧アーカイブの拒否条件を前提とするものがあるため、利用継続の検証に更新してから使用する。