

1-3.更新ファイル
app/Models/Regulation.php ← $fillable 新カラム追加
app/Http/Controllers/ChecklistController.php ← 全面再構築
app/Http/Controllers/AdminController.php ← CSV新フォーマット対応
resources/views/components/eval_modal.php ← deleteEvidence URL修正
resources/views/layouts/footer.blade.php ← z-50 → z-10(モーダル被り解消)
routes/web.php ← conditionMatchルート追加・deleteEvidenceルート修正
法規制特定のコードの問題点が洗い出せたので、Excelシートをもう一度、見直しと再構築をして、いよいよコードを作成する

1.法規制特定機能 再構築(Step 1〜8)
1-1.概要
edit_Laws_Regulations.blade.phpとindex.blade.phpを指示書に従い全面再構築した
1-2.新規作成ファイル
database/migrations/
2026_06_05_095137_add_select_columns_to_regulations_table.php
2026_06_05_095150_add_source_to_checklist_results_table.php
2026_06_05_112359_add_unique_index_to_checklist_results_table.php
app/Services/
RegulationMatcherService.php
resources/views/
components/laws_condition_modal.blade.php
Laws_Regulations/edit_Laws_Regulations.blade.php ← 新設計版
Laws_Regulations/index.blade.php ← 新設計版
Laws_Regulations/_tab_bar.blade.php ← 共通パーシャル
1-4.テーブル変更(マイグレーション)
| テーブル | 追加カラム | 内容 |
|---|---|---|
| regulations | subgroup_code | A1/A2=メイン、ch=子 |
| regulations | select_mode | 必須/選択/保留/AI |
| regulations | select_or | OR条件キーワード(改行区切り) |
| regulations | select_and | AND条件キーワード(改行区切り) |
| regulations | ai_keywords | AI判定参考キーワード |
| checklist_results | source | manual/condition/ai |
| checklist_results | ユニーク制約 | (project_id, regulation_id) |
1-5.主な機能変更
- AI判定ボタン → 「🔍 条件で特定」ボタン(65条件のモーダル)に変更
- タブをヘッダースロットからコンテンツ内に移動
- 保存処理を全DELETE→INSERT から upsert + トランザクションに変更
- deleteEvidenceにプロジェクトIDを含めテナント分離を強化
- 全onclick=””をaddEventListenerに統一(CSP方針準拠)
- 親行・子行表示を_regulation_row.blade.phpパーシャルに共通化
4.次回の作業(残課題
4-1.優先度:高
- CSVインポート実施
- 20260605-法規制リストー最終.xlsx を CSV に変換(列順:group_code, subgroup_code, law_name, ref_law, action_content, select_mode, select_OR, select_AND, ai_keywords, full_law_text)
- /admin/regulations/importからインポート実行
- インポート完了後、全タブの表示・条件検索の動作確認
4-2.優先度:中
- 退避ファイルの削除(動作確認後)
- edit_Laws_Regulations-tmp.blade.php
- index-tmp.blade.php
- ChecklistController-tmp.php
- AiRecommendationService-tmp.php
4-3.優先度:低(次ステップ)
- AI判定機能(select_mode=’AI’ の実装)
- エビデンスファイルの private ディスク化
- 作業別法規制リスト化(安全パトロール連携)
2.修正対応(確認・不具合修正)
2-1.修正一覧
| 問題 | 対応 |
|---|---|
| index画面で「法規制編集」ボタンが不要 | showChecklist() を edit ページへ redirect に変更 |
| 条件検索時の通信エラー | checklist_results にユニーク制約追加、conditionMatch の DB upsert を削除(ID返却のみに簡略化) |
| モーダルにフッターが被る | footer z-50→z-10に変更 |
| 条件検索時に AI モーダルが表示される | AI モーダルを削除、ボタンテキスト変化のシンプルなインジケーターに変更 |
| 検索結果がタブに反映されない | 条件特定後、最もマッチ数が多いタブに自動切替 |
| 条件モーダルの選択状態が保持されない | モーダル開閉でクリアしない実装に(既に正常) |
| 親・子の法規制名の濃さ不統一 | 子も `font-bold text-gray-800に統一 |
| action_content の文字が小さく薄い | text-[13px]text-gray-700に変更 |
| チェックボックスが見えにくい | カスタム CSS(薄紫背景・2px 紫枠・白チェック)に変更 |
| 区分タイトルと説明文が接近しすぎ | ml-3(12px)の余白追加、text-gray-700に濃く変更 |
| 「法規制表示:選択のみ/全表示」ボタン追加 | 操作バーに切替ボタン新設(edit・index 両画面) |
| 選択のみ表示で子行が残る | CSS に 3段階の非表示ルール追加(children-list クラス) |
| ページ入場時・検索後の自動切替 | 選択済みあれば「選択のみ」モードで自動開始 |
5.動作確認手順(次回開始時)
- サーバー起動(php artisan serve)
- /admin/regulations/importで CSV インポート実行
- 任意のプロジェクトの法規制ページ(/projects/{id}/checklist)を開く
- 全タブが表示されることを確認
- 「🔍 条件で特定」→ 条件選択 → 「この条件で特定」→ チェックが反映されることを確認
- 「登録/更新」で保存 → 再度開いて「選択のみ」モードで自動起動することを確認

