2026-09-24 承認済みモックの実装
ユーザーの「これで実装して」を受け、tools/spec-20260924-preview/ の合意内容を実装した。追加の「実機に反映して」の依頼を受け、2026-09-24 20:23 JSTに本番反映済み。配備・データ保持・公開確認の記録は docs/deployment-spec-2026-09-24.md に記載した。
対象機能の実装前コードは、最新の配備記録 docs/deployment-parent-lifecycle-2026-09-23.md の 06951a6eed379536e1791d4abdcf775ecd799a99 と一致していた。作業開始時から存在した Windows セットアップ・復元関連の変更には手を加えていない。
表示・操作
- トップの6種類の人数表示・集計は維持し、「子どもの名前一覧」へのリンクを追加した。
/attendance-checks/rosterに全在籍児の名前をクラス別・在園/降園/お休み/未登園にまとめた。状態は降園打刻、欠席の目視確認、登園打刻または出席の目視確認、未登園の順で判定する。名前から詳細ダイアログを開き、出欠確認・保護者連絡に移動できる。- 出欠確認は全クラス・全状態が初期表示。PCでは1人1行に圧縮し、既存の保護者連絡・電話/口頭受付・操作履歴・アラーム理由は詳細内に保持した。
- 登録済みの目視確認を変更する場合、またはアラームのある状態から確認する場合、訂正理由を必須にした。初回の目視確認は理由を任意とし、いずれも実際の操作職員名・日時を保存する。変更前の状態・職員ID・理由を履歴に追加した。過去の未記録項目は推測で埋めない。
- 誤打刻の取消は既存の料金取消・監査履歴処理を維持し、出欠確認から入った場合は同じ日付・絞り込みへ戻る。
- 園の連絡入力は既存の全項目を残し、体温・排便・食欲の選択ボタンを追加した。同じ子どもの前日・翌日・指定日・履歴一覧に移動できる。移動前には下書き保存/保存せず移動/入力継続を選べる。公開前に内容を確認する。
- 未公開の園連絡は「未送信」、公開後の下書き変更は「未送信の変更あり」と表示する。既に公開した内容は再公開まで維持する。失敗時は入力を保持し、更新時刻による競合チェックと条件付きUPDATEで古い画面からの上書きを防ぐ。
/settings/guardian-hoursは管理者専用。閉園時刻の初期値は19:00。変更者・変更前後・日時を保存する。閉園時刻ちょうど以降のお迎え予定は非表示・受付不可とし、現在時刻が閉園に達した後のキオスクからの登降園・予定変更も拒否する。職員画面での訂正は従来どおり。保護者の家庭入力で保存済みの予定が閉園以降なら、キオスクでは修正入力に戻す。- キオスクの名前選択も全状態を表示し、全画面ボタンは下部に小さく配置した。
データ移行
起動時のSQLiteマイグレーションで、既存行を変更せず次の列を追加する。繰り返し適用できる。
attendance_verification_histories:reason,previous_status,actor_user_iddaily_contact_replies:pending_draft
閉園設定・変更履歴は guardian_hours_settings / guardian_hours_audits を追加する。公開済み返信は従来の field_values / message / published_at を保持し、未送信の変更だけを pending_draft に保存する。
旧バックアップを復元する場合は、復元用コピーだけに承認済みの4列・2テーブルを追加する。元のバックアップは変更せず、未知の構造変更やダウングレードを拒否する。家庭アーカイブ追加前のバックアップからの同時移行も検証した。
検証
関連する246テストが成功。新規24テストには、全状態の名簿、理由と本人の監査記録、取消後の戻り先、公開中の内容を保つ下書き、未送信の日付移動、競合、閉園境界・全更新経路、管理者権限・CSRF、既存データを残す移行を含む。
配備時には旧バックアップの復元に関する5テストを追加し、実機の隔離環境で既存機能も含む530テストがすべて成功した。
venv/Scripts/python.exe -m pytest test_attendance_checks.py tests/test_attendance_report.py test_guardian_kiosk.py test_guardian_terminal.py test_guardian_preservation.py test_parent_portal.py test_settings_sessions.py test_staff_portal.py test_spec_changes.py test_spec_changes_20260917.py test_spec_changes_20260919.py test_spec_changes_20260924.py test_database_runtime.py test_extended_care_fees.py test_security_controls.py -q
変更したPythonのRuff、JavaScriptの構文チェック、diffの空白チェックも成功。
実ブラウザーでは架空100人を使用して、PCの出欠確認が約43px/人、390px幅では約79px/人で横はみ出しがないことを確認。理由付き訂正、日付の引継ぎ、下書き保存して移動・復元、公開前確認、公開後の未送信変更、履歴、閉園19:30の時刻選択(19:00〜19:29まで)、閉園後のボタン非表示、名前の詳細ダイアログを操作確認した。
実装確認用アプリはDBをメモリ内にのみ作成する。通常のアプリや実データには接続せず、通知送信のワーカーも起動しない。対象画面のみを含み、サイドメニューの対象外画面は利用できない。起動する場合は必ずループバックを指定する。
venv/Scripts/python.exe -m uvicorn tools.spec_20260924_browser_fixture:app --host 127.0.0.1 --port 8885
確認URL: http://127.0.0.1:8885/attendance-checks/roster。このfixtureモジュールは本番で起動しない。