初期台帳Excel取り込みの実装(2026-09-22)
ユーザーが「触ってみないとわからないから実際に実装」と依頼したため、確認用モックから実際のアプリへ実装した。その後「実機に反映させてみよう」の依頼を受け、2026-09-22 13:12 JSTに本番反映を完了した。検証結果と配備の詳細は実機反映記録を参照。ローカルの専用DBでも引き続き試用できる。
使い方
「インポート・エクスポート」から「初期台帳をExcelから登録」を開く。園児台帳管理権限が必要。
- 入力用Excelをダウンロードする。3シート・入力200行・38列。園児1人1行、保護者①②を同じ行に入力する。
- 「入力用」の5行目から、値のみ貼り付ける。きょうだいは任意のグループ欄に同じ文字を指定する。空欄は園児ごとに別家庭。
- 読み込んで人数、エラー、家庭のまとまり、自動設定値を確認する。入力38項目は画面で修正でき、行の追加・今回の取り込みからの除外もできる。
- 編集した場合は「編集内容を再確認する」を押す。それまで登録確認を無効化する。
- 最終確認とチェックを経て「台帳に登録する」を押す。取消は一時ファイルだけを削除し、台帳と元Excelを変更しない。
- 完了後は既存の園児台帳・家庭台帳から確認、編集する。
初期登録専用。同じ正規化済み入力内容の再取り込みは、ファイル名や行順が変わっていても追加登録しない。内容が変わり、既存園児と氏名カナ・生年月日が一致する場合は停止し、既存台帳での確認を求める。氏名だけで人物を上書きしない。
自動設定と保存範囲
- 園児番号・家庭番号は現行の台帳IDから自動採番する。家庭は既存形式の
F-00001、画面の園児番号はC-00001のように表示する。確認後に台帳が変わった場合は再確認が必要。 - 家庭名はその家庭の先頭行の園児の姓。同姓の別家庭が入力内・既存台帳にある場合は姓名、表示名がさらに重なる場合は家庭番号を添える。既存の家庭名は変更しない。
- 同じクラス名は登録済みクラスを使用する。新しいクラスだけ追加する。指定した表示順が既存と異なる場合はエラーとし、既存の表示順を書き換えない。
- 家庭の住所・電話・保護者情報は同じグループ内で空欄を補完し、矛盾があれば停止する。園児固有の住所・電話は保持する。
- 家庭の共有保護者情報と各園児の保護者台帳を作成する。保護者アカウント、閲覧権限、通知・招待は作成しない。
- モックの照合用氏名種別にあった
kanjiは現行アプリに対応していなかったため、テンプレート・検証を既存のkana/latinに合わせた。
整合性とアクセス制御
- Excelは入力用シートだけを読み、記入例を登録しない。数式、エラーセル、未知の列、重複セル、暗号化、過大な圧縮展開サイズを拒否する。上限20MB・1000園児。
- 電話番号が数値になっている場合は原本確認を求める。Excelの通常日付・1904年基準の日付を読む。
- プレビューは台帳へ書き込まず、所有者・有効期限・内容ハッシュ・台帳リビジョンを付けた既存の一時保管機構を使用する。
- POSTはCSRF検証。確認トークンは本人だけが使え、一度の確定で消費する。
- 確定はSQLiteの書込みロック内で再検証し、クラス・家庭・園児・保護者台帳・児童票変更履歴・取り込み監査ログを1トランザクションで保存する。途中失敗は全体をロールバックする。
- 取り込みログに正規化入力のハッシュと作成IDを残す。監査メタデータに住所やメールなどの値は入れない。追加DBテーブル・スキーマ変更なし。
検証
初期取り込みの14テストと、既存CSV・保護者保持・クラス・アプリ起動・家庭管理の関連テストを合わせて41件成功。自動採番・同姓別家庭・同姓名・任意グループ、型と日付、保護者情報、同一内容の再取り込み、同時確定、確認後の台帳変更、途中失敗、CSRF・権限・トークン所有者・再実行・取消を検証した。既存の明示的な98件の保護者・園児リンクも維持される。
ブラウザーでは実装した画面から架空の3人を読み込み、姓の編集、再確認での家庭名変更、確認チェック、実DB保存、完了画面、既存園児一覧への表示まで確認した。試用用DBは .local-dev/initial-import-20260922/app-trials/ 内で、通常DB・旧CSV・本番DBとは独立している。
利用者の試用URLは http://127.0.0.1:48629/initial-ledger/。検査用DBと分け、空の専用DBから開始する。画面の「架空の3人で取り込みを試す」は試用専用ランチャーだけに表示し、実装したExcel解析・確認・登録処理を使用する。通常アプリには架空データの登録ボタンを追加しない。試用台帳はページを閉じても保持される。
ファイル
initial_ledger_import.py:Excel解析・検証・保存routers/initial_ledger.py:画面、テンプレート、確認、確定、取消templates/data_transfers/initial_ledger.html:画面static/initial-ledger-fields.json:入力項目static/js/initial-ledger.js、static/css/initial-ledger.css:編集と表示templates/data_transfers/initial-ledger-template.xlsx:配布用Exceltest_initial_ledger_import.py:機能・整合性・アクセス制御テスト
旧PCからの5種類のCSV移行は別作業として継続する。配信確認用98人の明示的な紐づけを維持する方針は変えない。