From 103331f761faef069f75446cfb75c4b61429b58f Mon Sep 17 00:00:00 2001 From: Akira Date: Wed, 18 Feb 2026 13:44:40 +0900 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=86=85=E5=AE=B9=E3=81=AE?= =?UTF-8?q?=E3=82=B5=E3=83=9E=E3=83=AA=E3=83=BC=201.=2004=5F=E7=94=BB?= =?UTF-8?q?=E9=9D=A2=E8=A8=AD=E8=A8=88=E6=9B=B8.md=20=E2=80=94=20=E7=94=BB?= =?UTF-8?q?=E9=9D=A25=20=E6=8B=A1=E5=BC=B5=20=E5=9C=83=E5=A0=B4=E8=A9=B3?= =?UTF-8?q?=E7=B4=B0=E7=94=BB=E9=9D=A2=E3=81=AB=E8=BF=BD=E5=8A=A0=E3=81=97?= =?UTF-8?q?=E3=81=9F=E4=BB=95=E6=A7=98=EF=BC=88E-2=EF=BC=89:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 共済/中山間セクションに [+追加]ボタン → モーダルで全マスタから検索・複数選択して紐づけ 各行に [×]ボタン → 確認ダイアログ付きで紐づけ解除 面積整合性チェック: 圃場面積 vs 紐づけ区画の合計面積を比較し、✅一致 / ⚠️差異ありを表示 PC/スマホ両方のレイアウト定義 必要なAPI 6本の定義(紐づけ追加・解除の CRUD) 圃場一覧画面にも追加: 「共済」「中山間」の紐づけ件数列 未紐づけ・面積不一致の ⚠️ 警告表示 2. 06_差異レポート.md — E-2 追加 新タスク E-2: 対応付け可視化・紐づけ管理機能 をサマリーテーブルに追加 3. CLAUDE.md — 次タスク更新 完了済みタスク(A-8, D-1〜D-4, E-1)を既知の課題から除外 E-2を最優先タスクに設定 --- .claude/settings.local.json | 7 +- CLAUDE.md | 26 ++-- document/04_画面設計書.md | 146 ++++++++++++++---- .../06_ドキュメントvs実装_差異レポート.md | 30 ++++ 4 files changed, 165 insertions(+), 44 deletions(-) diff --git a/.claude/settings.local.json b/.claude/settings.local.json index e7909f2..df4cb21 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -17,7 +17,12 @@ "Bash(docker ps:*)", "Bash(docker exec:*)", "Bash(npx playwright test:*)", - "Bash(docker restart:*)" + "Bash(docker restart:*)", + "Bash(python3 -c:*)", + "Bash(py:*)", + "Bash(py -3:*)", + "Bash(/c/Users/akira/Develop/keinasystem_t02/.venv/Scripts/python:*)", + "Bash(PYTHONIOENCODING=utf-8 /c/Users/akira/Develop/keinasystem_t02/.venv/Scripts/python:*)" ] } } diff --git a/CLAUDE.md b/CLAUDE.md index 3d2921c..63c4a9c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -209,25 +209,18 @@ Variety (品種マスタ) 2. **エラーハンドリング**: フロントエンドでの統一的なエラー表示が未実装 3. **テスト**: 自動テストが未実装(Phase 2で追加予定) 4. **パフォーマンス**: N+1問題が一部存在(現状は問題ないが、データ増加時に対応必要) -5. **セキュリティ**: DEFAULT_PERMISSION_CLASSES が AllowAny → IsAuthenticated に変更必要 -6. **settings.py**: LANGUAGE_CODE と TIME_ZONE が二重定義されている(前の定義を削除) -7. **PDF生成バグ**: reports/views.py で variety が null 時にクラッシュ(null チェック未実装) -8. **init_crops.py**: 不正データを含むため削除予定 -9. **PDF帳票**: 現在のテンプレートは仕様と不一致(中国語混入、セクション形式、@page未設定)→ 再設計必要 -10. **中山間モデル**: 現在6フィールド → 17フィールドに拡張必要(E-1c) +5. **対応付け可視化**: 圃場と共済/中山間マスタのM:N紐づけを管理する画面がない(E-2で対応予定) ### 🔜 次の実装タスク(優先順) -1. **A-8**: 圃場詳細に共済/中山間情報表示(最優先) -2. **D-1〜D-4**: バグ修正(null crash, settings二重定義, AllowAny→IsAuthenticated, init_crops削除) -3. **E-1**: PDF帳票フォーマット再設計(中山間モデル拡張含む) -4. **A-3**: 前年度コピーボタン(Frontend) -5. **A-4**: 品種のインライン追加・削除 -6. **A-5**: PDFプレビュー機能 -7. **A-6**: エクスポート機能(サーバー移行時のデータ移動用) -8. **A-2**: チェックボックス・一括操作 -9. **A-1**: ダッシュボード画面 -10. **A-7**: 検索・フィルタ +1. **E-2**: 対応付け可視化・紐づけ管理(圃場詳細画面の拡張、面積整合性チェック) +2. **A-3**: 前年度コピーボタン(Frontend) +3. **A-4**: 品種のインライン追加・削除 +4. **A-5**: PDFプレビュー機能 +5. **A-6**: エクスポート機能(サーバー移行時のデータ移動用) +6. **A-2**: チェックボックス・一括操作 +7. **A-1**: ダッシュボード画面 +8. **A-7**: 検索・フィルタ 詳細は `document/06_ドキュメントvs実装_差異レポート.md` を参照 @@ -318,5 +311,6 @@ docker-compose exec backend python manage.py migrate ## 📝 更新履歴 +- 2026-02-18: E-2(対応付け可視化・紐づけ管理)仕様追加。画面設計書・差異レポート・次タスク一覧を更新。完了済みタスク(A-8, D-1〜D-4, E-1)を既知の課題から除外 - 2026-02-17: ドキュメント一斉更新(差異レポートA〜E反映、CSV→PDF統一、M:N関係、中山間モデル17列化、インライン編集方式、Navbar追加、既知の課題・次タスク一覧追加) - 2026-02-16: 初版作成(ハイブリッドアプローチの方針決定) diff --git a/document/04_画面設計書.md b/document/04_画面設計書.md index 23a2289..5c09377 100644 --- a/document/04_画面設計書.md +++ b/document/04_画面設計書.md @@ -319,15 +319,77 @@ - [x] [新規作成]ボタン → 画面6へ遷移 - [x] [✏️ 編集]ボタン → 画面5(圃場詳細)へ遷移 - [x] [🗑 削除]ボタン → 確認ダイアログ後に削除 +- [ ] **紐づけ状況列(E-2)** — **未実装** + - [ ] 「共済」列: 紐づけ件数表示(例: 「2件」)。0件の場合は「⚠️ 未紐づけ」と警告表示 + - [ ] 「中山間」列: 紐づけ件数表示。0件の場合は「⚠️ 未紐づけ」と警告表示 + - [ ] 面積不一致がある場合は件数の横に ⚠️ を表示 --- ## 画面5: 圃場詳細・編集 ### 目的 -個別の圃場情報を確認・編集。田んぼにいるときにスマホで確認する用途も想定。 +個別の圃場情報を確認・編集。共済/中山間マスタとの紐づけ管理。田んぼにいるときにスマホで確認する用途も想定。 -### レイアウト(PC/スマホ共通) +### レイアウト(PC) + +``` +┌────────────────────────────────────────────────────────────┐ +│ ← 一覧に戻る │ +├────────────────────────────────────────────────────────────┤ +│ │ +│ 圃場名 住所 │ +│ [口神 北中___________] [口神ノ川198(笹ヶ谷374-1)___] │ +│ │ +│ 面積(反) 面積(m2) 所有者 グループ名 │ +│ [0.4___] [400___] [吉田___] [口神___] │ +│ │ +│ [保存] │ +│ │ +├────────────────────────────────────────────────────────────┤ +│ │ +│ 📋 共済情報 (2件) 合計面積: 800m2 [+追加] │ +│ ⚠️ 面積差異: 圃場400m2 ≠ 共済合計800m2 │ +│ ─────────────────────────────────────────────────────── │ +│ 耕地-分筆 漢字地名 住所 面積(m2) 操作│ +│ ─────────────────────────────────────────────────────── │ +│ 2-1 四万十町 笹ヶ谷 374-1 笹ヶ谷... 400 [×]│ +│ 2-2 四万十町 笹ヶ谷 374-2 笹ヶ谷... 400 [×]│ +│ │ +├────────────────────────────────────────────────────────────┤ +│ │ +│ 📋 中山間情報 (1件) 合計面積: 400m2 [+追加] │ +│ ✅ 面積一致 │ +│ ─────────────────────────────────────────────────────── │ +│ ID 所在地 面積(m2) 支払金額 操作 │ +│ ─────────────────────────────────────────────────────── │ +│ 50 口神ノ川 壱町切 1694 400 ¥8,000 [×] │ +│ │ +└────────────────────────────────────────────────────────────┘ +``` + +**[+追加]ボタン押下時 — 紐づけ追加モーダル:** +``` +┌────────────────────────────────────────────┐ +│ 共済区画を追加 [×] │ +├────────────────────────────────────────────┤ +│ │ +│ 🔍 [検索: 地番・漢字地名で絞り込み____] │ +│ │ +│ ─────────────────────────────────────── │ +│ □ 3-1 四万十町 笹ヶ谷 375 300m2 │ +│ □ 4-1 四万十町 笹ヶ谷 376 250m2 │ +│ □ 5-1 四万十町 口神ノ川 198 500m2 │ +│ ─────────────────────────────────────── │ +│ ※ 既に他の圃場に紐づいている区画は │ +│ (🔗 圃場名) で表示 │ +│ │ +│ [選択した区画を追加] │ +│ │ +└────────────────────────────────────────────┘ +``` + +### レイアウト(スマホ) ``` ┌────────────────────────────────────┐ @@ -336,33 +398,35 @@ │ │ │ 圃場名 │ │ [口神 北中________________] │ -│ │ │ 住所 │ │ [口神ノ川198(笹ヶ谷374-1)__] │ -│ │ -│ 面積(反) │ -│ [0.4___] │ -│ │ -│ 面積(m2) │ -│ [400___] │ -│ │ -│ 所有者 │ -│ [吉田___] │ -│ │ -│ グループ名 │ -│ [口神___] │ -│ │ -│ 📋 共済情報(Phase 1 予定) │ -│ 紐づき共済区画: 2件 │ -│ • 耕地2-1: 四万十町 笹ヶ谷 374-1 │ -│ • 耕地2-2: 四万十町 笹ヶ谷 374-2 │ -│ │ -│ 📋 中山間情報(Phase 1 予定) │ -│ 紐づき中山間区画: 1件 │ -│ • ID50: 口神ノ川 壱町切 1694 │ +│ 面積(反) 面積(m2) │ +│ [0.4___] [400___] │ +│ 所有者 グループ名 │ +│ [吉田___] [口神___] │ │ │ │ [保存] │ │ │ +├────────────────────────────────────┤ +│ 📋 共済情報 (2件) [+追加] │ +│ ⚠️ 面積差異: 400m2≠800m2 │ +│ ┌──────────────────────────────┐│ +│ │ 2-1 四万十町笹ヶ谷374-1 ││ +│ │ 400m2 [×] ││ +│ └──────────────────────────────┘│ +│ ┌──────────────────────────────┐│ +│ │ 2-2 四万十町笹ヶ谷374-2 ││ +│ │ 400m2 [×] ││ +│ └──────────────────────────────┘│ +│ │ +├────────────────────────────────────┤ +│ 📋 中山間情報 (1件) [+追加] │ +│ ✅ 面積一致 │ +│ ┌──────────────────────────────┐│ +│ │ ID50 口神ノ川壱町切1694 ││ +│ │ 400m2 ¥8,000 [×] ││ +│ └──────────────────────────────┘│ +│ │ └────────────────────────────────────┘ ``` @@ -372,11 +436,39 @@ - [x] [保存]ボタン → PATCH API で更新 - [x] [← 一覧に戻る] → `/fields` へ遷移 - [x] エラーメッセージ表示 -- [ ] **共済/中山間情報の表示** — **未実装(A-8: 最優先で実装予定)** - - 紐づいている共済区画の一覧(耕地番号-分筆、漢字地名) - - 紐づいている中山間区画の一覧(ID、所在地) +- [x] 共済情報の読み取り専用テーブル表示(A-8 完了) +- [x] 中山間情報の読み取り専用テーブル表示(A-8 完了) +- [ ] **紐づけ管理機能(E-2: 対応付け可視化・編集)** — **未実装** + - [ ] 共済/中山間セクションに [+追加] ボタン + - [ ] 追加モーダル: 未紐づけの区画一覧から選択して追加 + - [ ] 検索フィルタ(地番、漢字地名、IDで絞り込み) + - [ ] 既に他の圃場に紐づいている区画は紐づけ先を表示(M:N のため追加は可能) + - [ ] 各行に [×] ボタンで紐づけ解除(区画自体は削除しない) + - [ ] 確認ダイアログ: 「この紐づけを解除しますか?」 +- [ ] **面積整合性チェック(E-2)** — **未実装** + - [ ] 圃場面積 vs 紐づけ区画合計面積を比較表示 + - [ ] 一致: ✅ アイコン表示 + - [ ] 不一致: ⚠️ アイコン + 差異を表示(例: 「圃場400m2 ≠ 共済合計800m2」) + - [ ] ※ M:N のため必ずしも一致しなくてよい場合もある。あくまで参考情報 - [ ] 将来的に栽培履歴も表示(Phase 2) +### 必要なAPI(E-2 用) + +| メソッド | エンドポイント | 説明 | +|---------|---------------|------| +| GET | `/api/kyosai-fields/` | 共済マスタ全件取得(紐づけ追加モーダル用) | +| GET | `/api/chusankan-fields/` | 中山間マスタ全件取得(紐づけ追加モーダル用) | +| POST | `/api/fields/{id}/kyosai-links/` | 共済紐づけ追加 `{ kyosai_field_ids: [1,2,3] }` | +| DELETE | `/api/fields/{id}/kyosai-links/{kyosai_id}/` | 共済紐づけ解除 | +| POST | `/api/fields/{id}/chusankan-links/` | 中山間紐づけ追加 `{ chusankan_field_ids: [1,2,3] }` | +| DELETE | `/api/fields/{id}/chusankan-links/{chusankan_id}/` | 中山間紐づけ解除 | + +### デザインノート +- [+追加] ボタンはセクション見出しの右端に配置 +- [×] ボタンは各行の右端、テキストリンクスタイル(赤系) +- 面積チェックは情報表示のみ(警告であり、保存をブロックしない) +- モーダルの区画一覧はチェックボックス選択式(複数同時追加可能) + --- ## 画面6: 圃場新規作成 diff --git a/document/06_ドキュメントvs実装_差異レポート.md b/document/06_ドキュメントvs実装_差異レポート.md index 522fbaa..8d1861d 100644 --- a/document/06_ドキュメントvs実装_差異レポート.md +++ b/document/06_ドキュメントvs実装_差異レポート.md @@ -221,6 +221,35 @@ --- +### E-2: 対応付け可視化・紐づけ管理機能 + +- **背景**: 3つのODSデータファイル(吉田農地台帳 → Field、水稲共済細目用 → OfficialKyosaiField、中山間 → OfficialChusankanField)間のM:N対応関係を確認・編集する手段がない +- **現状**: 圃場詳細画面に共済/中山間の読み取り専用テーブルはある(A-8完了)が、紐づけの追加・解除ができない。面積の整合性チェックもない +- **状態**: 🔜 未着手 + +**対応方針(仕様は画面設計書 画面5 に記載済み):** + +1. **圃場詳細画面(/fields/[id])の拡張**: + - 共済/中山間セクションに [+追加] ボタンを追加 + - 追加モーダル: 全マスタ一覧から検索・選択して紐づけ追加(チェックボックス複数選択) + - 各行に [×] ボタンで紐づけ解除(確認ダイアログ付き) + - 面積整合性チェック: 圃場面積 vs 紐づけ区画合計面積の比較表示(✅ 一致 / ⚠️ 差異あり) + +2. **圃場一覧画面(/fields)の拡張**: + - 「共済」「中山間」列を追加し、紐づけ件数を表示 + - 未紐づけ圃場は ⚠️ 警告表示 + - 面積不一致がある場合も ⚠️ 表示 + +3. **必要なバックエンドAPI**: + - `GET /api/kyosai-fields/` — 共済マスタ全件取得 + - `GET /api/chusankan-fields/` — 中山間マスタ全件取得 + - `POST /api/fields/{id}/kyosai-links/` — 共済紐づけ追加 + - `DELETE /api/fields/{id}/kyosai-links/{kyosai_id}/` — 共済紐づけ解除 + - `POST /api/fields/{id}/chusankan-links/` — 中山間紐づけ追加 + - `DELETE /api/fields/{id}/chusankan-links/{chusankan_id}/` — 中山間紐づけ解除 + +--- + ## 対応状況サマリー | カテゴリ | 項目 | 状態 | @@ -237,3 +266,4 @@ | C-1〜C-8 | ドキュメント/実装の食い違い修正 | ✅ 全件完了 | | D-1〜D-4 | 不具合修正 | ✅ 全件完了 | | E-1 | PDF帳票再設計 | ✅ 完了 | +| E-2 | 対応付け可視化・紐づけ管理 | 🔜 未着手 |