実機検証の仕様変更
変更した動作
- 保護者による初回入力と、既存台帳を引き継ぐ登録を併用。家族・園児編集時に、表示していない保護者と追加属性を保持する。
- 家族台帳が存在する環境では、起動時の旧台帳用家族移行を繰り返さない。未紐付けの取り込み園児に家族を自動作成したり、既存の住所・保護者情報を起動時に書き換えたりしない。家族との紐付けは園児編集や確認付きCSV取り込みで明示する。家族台帳がまだない旧版のデータは、初回の家族移行を引き続き利用できる。
- 家庭CSVを24列に拡張。保護者①②を番号・氏名で確認して部分更新し、園児へ反映する。確認後の競合、別職員の確認データ利用、再確定、途中失敗から保護する。
- オフラインの家庭・園児CSV変換ツールを追加。詳しくは 取り込み手順 を参照する。
- 職員管理に「一覧から削除」を追加。利用を停止し、認証とセッションを無効化する。過去の記録は残す。「停止済みの職員も表示」から確認できる。自分自身・最後の管理者は削除できない。
- 職員一覧の登録元ラベルを非表示にし、通常表示では登録元によらず有効な職員を表示する。職員のCSV・Excel取り込みは管理者専用。列はID・表示名・メールアドレス・表示順。新規は閲覧のみで、認証やメールは発行しない。
- 繰り返し予定のリンクで日時の「+」が空白に変わる問題を修正。毎月の第1~第5・最終の曜日指定に対応。第5曜日のない月は飛ばす。
- 議事録のJSON保存でCSRFトークンを送信する。
- タイムライン投稿を投稿者本人・管理者が削除できる。本人の識別は職員IDを使い、同姓同名の別職員には削除を許可しない。既存の投稿者IDがない投稿は管理者が操作する。削除は非表示として記録し、返信と履歴を残す。削除した投稿の添付ファイルへのアクセスも停止する。
- ホームのタイムラインから投稿横のクラス名表示を外す。クラス・所属情報自体は保持する。
- キオスクのメニューから職員向け準備画面へ案内する。無効時は設定状況を説明し、tokenモードでは端末登録へ進める。未登録端末への園児情報は従来どおり非公開。
TrueNASへ反映する前に
- 取り込み・承認などの更新操作を止め、データベースと実行設定のバックアップを取得する。
- 検証済みのコードで新しいイメージを作成し、既存の永続データと秘密情報を引き継ぐ。
- アプリを更新して起動する。投稿の職員ID列とデータ入出力の監査列は起動時に追加される。
- ヘルスチェックとログインを確認する。
- 架空データで、家庭CSV→園児CSV→園児詳細→エクスポートを照合する。別途、初回入力→承認→利用開始の従来ルートも確認する。
- 職員CSVは招待を送らないため、職員管理で対象者の権限・認証を設定する。
キオスクは設定変更を行うまで無効のまま。利用する場合はサーバーでランダムな登録トークンを作成して HOIKUICT_KIOSK_TOKEN に保存し、HOIKUICT_KIOSK_ACCESS_MODE=token でアプリを再作成する。園内の共用端末で「保護者キオスク」→「この端末を登録する」へ進む。登録後は共用端末の職員ログインを終了して使用する。
この変更だけでは本番反映・メール送信・外部公開を実行しない。
ローカルでの検証結果
- 実機更新用に最終差分を含めて全体テストを再実行:599件すべて成功(217.17秒)。
- 起動時の家族移行を制限する修正後:起動・保護者情報保持・初回入力の関連24件が成功。既存家族台帳を変えないことと、家族のない旧台帳を初回移行できることを追加確認した。
- 基本変更後の全体テスト:596件成功。
- 住所・保護者情報の保持などを補強した後の関連テスト:79件成功。毎月の曜日指定の編集テストは、画面が送る対象日時をテストにも含めて修正し、既存CSVテストと合わせた15件が成功。
- 最終差分の確認:仕様変更の24件と毎月の曜日指定の編集1件、計25件成功。
- Ruffのコード検査とGitの空白検査:成功。
- Edgeで変換ツールを検証:圧縮Excelの読み込み、24列出力、兄弟姉妹、②のみの保護者、既存IDの引き継ぎ、電話・未計算数式の確認、CSV引用符・改行、旧テンプレートの拒否、家庭・園児CSVのダウンロードが成功。外部への通信は発生しなかった。
これらは架空データを使ったローカル検証。TrueNASでの起動・データ移行・運用確認は上の手順に従って別途行う。
Pythonのテストは python -m pytest --ignore=.local-dev --ignore=.pytest_cache -p no:cacheprovider、変換ツールのブラウザーテストはPlaywrightを利用できるNode環境で node tools/test-family-child-csv-converter.cjs を実行する。