Files
keinasystem/document/圃場管理/06_ドキュメントvs実装_差異レポート.md
2026-02-21 16:44:36 +09:00

244 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ドキュメント vs 実装 差異レポート
> **作成日**: 2026-02-16
> **最終更新**: 2026-02-17
> **目的**: ドキュメントと実装の差異を洗い出し、対応方針を決定する
---
## A. ドキュメントに書かれているが実装されていないもの
### ~~A-1: ダッシュボード画面~~ ✅ 対応済み
- **対応内容**:
- `/dashboard` にダッシュボード画面を新設。`/` はログイン済みなら `/dashboard` にリダイレクト
- 概要サマリー: 全圃場数、作付け済み筆数、未割当筆数(警告アイコン付き)
- 作物別集計テーブル: 作物名、筆数、面積(反)、合計行
- クイックアクセス: 作付け計画・圃場管理・帳票出力・データ取込への4ボタン
- 年度セレクタで年度切替可能
- Navbarに「ホーム」ボタン追加、KeinaSystemロゴクリックでダッシュボードに遷移
- バックエンド: summary APIに `total_fields`, `assigned_fields`, `unassigned_fields` を追加
- **対応日**: 2026-02-19
---
### ~~A-2: チェックボックスによる一括操作~~ ✅ 対応済み
- **対応内容**:
- バックエンド: `POST /api/plans/bulk_update/` API追加field_ids, year, crop, variety を受けて一括 update_or_create
- フロントエンド: 作付け計画画面(/allocationにチェックボックス列追加、全選択/個別選択
- 一括操作バー: 選択件数表示、作物・品種セレクタ、「一括設定」ボタン、確認ダイアログ付き
- **対応日**: 2026-02-19
---
### ~~A-3: 前年度コピー機能(フロントエンド)~~ ✅ 対応済み
- **対応内容**: 作付け計画画面(/allocationの年度セレクタ横に[前年度コピー]ボタンを追加。確認ダイアログ付き、既存プランはスキップignore_conflicts
- **対応日**: 2026-02-18
---
### ~~A-4: 品種のインライン追加・削除~~ ✅ 対応済み
- **対応内容**:
- 品種セレクトに「+ 新しい品種を追加...」オプション追加。選択するとインライン入力に切り替わり、Enter/追加ボタンでAPI経由で即登録&自動選択
- ヘッダーに「品種管理」ボタン追加。モーダルで作物別の品種一覧表示、追加・削除が可能
- Plan.variety の on_delete を CASCADE → SET_NULL に変更品種削除時に計画が消えない安全策、マイグレーション0003
- **対応日**: 2026-02-19
---
### ~~A-5: PDFプレビュー機能~~ ✅ 対応済み
- **対応内容**: 帳票出力画面(/reportsをカード形式にリニューアル。各帳票にプレビュー新タブでPDF表示とダウンロードのボタンを配置。プレビューからブラウザの印刷機能で直接印刷可能
- **対応日**: 2026-02-19
---
### ~~A-6: エクスポート機能CSV/ZIP~~ ✅ 対応済み
- **対応内容**: データ取込画面(/import下部に「データエクスポート」セクション追加。全データ圃場・共済・中山間・作付け計画・品種・M:N紐づけを6つのCSVファイルとしてZIPアーカイブでダウンロード。バックエンドAPI `GET /api/fields/export/zip/`
- **対応日**: 2026-02-19
---
### ~~A-7: 作付け計画画面の検索・フィルタ~~ ✅ 対応済み
- **対応内容**:
- テキスト検索: 圃場名・住所で部分一致検索(リアルタイムフィルタリング)
- 作物フィルタ: ドロップダウンで特定の作物に絞り込み
- 未割当トグル: チェックボックスで未割当の圃場のみ表示
- フィルタ結果件数表示(例: 5/39件
- クライアントサイドフィルタ39筆のためAPI不要
- **対応日**: 2026-02-19
---
### ~~A-8: 圃場詳細画面の共済/中山間情報表示~~ ✅ 対応済み
- **対応内容**: 圃場詳細画面 (`/fields/[id]`) に共済情報テーブルと中山間情報テーブルを追加
- **対応日**: 2026-02-17
- **確認**: Playwright E2E テストで検証済み
---
## B. 実装されているがドキュメントに記載がないもの
### B-1〜B-5: ドキュメント追記対応 ✅ 対応済み
以下の項目は 2026-02-17 のドキュメント一斉更新で対応済み:
- **B-1**: グループ機能 → データ仕様書・CLAUDE.md に記載済み
- **B-2**: 圃場管理画面(/fields → 画面設計書に追記済み
- **B-3**: 圃場新規作成画面(/fields/new → 画面設計書に追記済み
- **B-4**: インライン編集方式(作付け計画) → 画面設計書をモーダル→インラインに更新済み
- **B-5**: Navbar → 画面設計書に追記済み
---
## C. ドキュメントと実装で食い違っているもの
### C-1: Field と共済/中山間の関係M:1 vs M:N ✅ 対応済み
- **対応内容**: データ仕様書を M:N に更新
- **対応日**: 2026-02-17
---
### ~~C-2: 共済マスタのフィールド型~~ ✅ 対応済み
- **対応内容**: `k_num` = CharField, `s_num` = CharField に統一。`unique_together = [['k_num', 's_num']]` を設定マイグレーション0005
- **対応日**: 2026-02-17
- **確認**: Playwright E2E テストで重複拒否を検証済み
---
### C-3: 中山間マスタのフィールド型 ✅ 対応済み
- **対応内容**: `c_id` = CharField, `chiban` = CharField で実装。データ仕様書も CharField に更新済み
- **理由**: 地番に「イ」「ロ」等の非数値データが入るため
---
### ~~C-4: 面積フィールドの単位~~ ✅ 対応済み
- **対応内容**:
- 共済マスタ・中山間マスタの `area` は IntegerFieldm2に統一
- 共済インポート時に ODS のアール値を m2 に変換 (×100)
- PDF テンプレートの面積表示を m2 に修正
- **対応日**: 2026-02-17
- **発見したバグ**: ODS カラム名 `本地面積 (m2)` のスペース有無でインポートが失敗し全件 area=0 になっていた → 修正済み
---
### C-5: 作物マスタの初期データ ✅ 対応済み
- **対応内容**: `init_crops.py` を削除。作物・品種は管理画面やUIから登録する運用
- **対応日**: 2026-02-17D-2 と同時対応)
---
### C-6: 申請書の出力形式CSV vs PDF ✅ 対応済み
- **対応内容**: 全ドキュメントを PDF に統一
- **対応日**: 2026-02-17
---
### C-7: Django バージョン ✅ 対応済み
- **対応内容**: ドキュメントを Django 5.2 に更新
- **対応日**: 2026-02-17
---
### ~~C-8: DEFAULT_PERMISSION_CLASSES~~ ✅ 対応済み
- **対応内容**: `AllowAny``IsAuthenticated` に変更
- **対応日**: 2026-02-17D-4 と同時対応)
- **確認**: Playwright E2E テストで未認証時 401 を検証済み
---
## D. 潜在的な不具合
### ~~D-1: PDF生成時の variety/crop が null でクラッシュ~~ ✅ 修正済み
- **修正内容**: `plan.crop.name if plan.crop else '未設定'` / `plan.variety.name if plan.variety else ''` の null チェック追加
- **修正日**: 2026-02-17
- **確認**: Playwright E2E テストで PDF 生成200 応答)を検証済み
---
### ~~D-2: init_crops.py の不正データ~~ ✅ 修正済み
- **修正内容**: `init_crops.py` 自体を削除
- **修正日**: 2026-02-17
---
### ~~D-3: settings.py の二重定義~~ ✅ 修正済み
- **修正内容**: 前の `LANGUAGE_CODE = 'en-us'` / `TIME_ZONE = 'UTC'` を削除。`LANGUAGE_CODE = 'ja'` / `TIME_ZONE = 'Asia/Tokyo'` のみ残す
- **修正日**: 2026-02-17
---
### ~~D-4: AllowAny で全API公開~~ ✅ 修正済み
- **修正内容**: `DEFAULT_PERMISSION_CLASSES``IsAuthenticated` に変更
- **修正日**: 2026-02-17
- **確認**: Playwright E2E テストで検証済み
---
## E. 追加で修正の要望
### ~~E-1: PDF帳票フォーマットの再設計~~ ✅ 対応済み
**対応日**: 2026-02-17
**対応内容:**
- E-1a: 水稲共済細目書 PDF — A4 縦、表形式1行1区画@page 設定、ページ番号、日本語タイトルに修正
- E-1b: 中山間交付金 PDF — A4 横、表形式1行1区画@page 設定、ページ番号、日本語タイトルに修正
- E-1c: OfficialChusankanField モデル拡張 — 6→17 フィールドに拡張マイグレーション0006
- 中山間インポート修正 — ODS 17 列すべて読み込み対応
- 共済インポートバグ修正 — 面積カラム名スペース不一致 + アール→m2 変換(×100)
- reports/views.py — ロジック全面書き直しフラットテーブル、null 安全、prefetch_related
- シリアライザ — OfficialChusankanFieldSerializer に 11 フィールド追加
**確認**: Playwright E2E テストPDF 200 応答、中山間 17 フィールド返却、共済面積 > 0で検証済み
---
### ~~E-2: 対応付け可視化・紐づけ管理機能~~ ✅ 対応済み
**対応日**: 2026-02-18
**対応内容:**
- バックエンドAPI 6本共済/中山間マスタ一覧、紐づけ追加・解除)
- 圃場詳細画面(/fields/[id]: +追加ボタン、×解除ボタン、検索付きモーダル、面積参考表示
- 圃場一覧 通常モード: 「共済」「中山間」件数列
- 圃場一覧「対応表」モード: [通常]/[対応表]トグルで切替、圃場名・住所・面積・共済漢字地名・中山間所在地を一覧表示、直接紐づけ追加・解除可能
- 共通コンポーネント: LinkModal検索付き複数選択モーダルを抽出
---
## 対応状況サマリー
| カテゴリ | 項目 | 状態 |
|---------|------|------|
| A-1 | ダッシュボード画面 | ✅ 完了 |
| A-2 | チェックボックス一括操作 | ✅ 完了 |
| A-3 | 前年度コピーボタン | ✅ 完了 |
| A-4 | 品種インライン追加・削除 | ✅ 完了 |
| A-5 | PDFプレビュー | ✅ 完了 |
| A-6 | エクスポート機能 | ✅ 完了 |
| A-7 | 検索・フィルタ | ✅ 完了 |
| A-8 | 圃場詳細 共済/中山間表示 | ✅ 完了 |
| B-1〜B-5 | ドキュメント追記 | ✅ 完了 |
| C-1〜C-8 | ドキュメント/実装の食い違い修正 | ✅ 全件完了 |
| D-1〜D-4 | 不具合修正 | ✅ 全件完了 |
| E-1 | PDF帳票再設計 | ✅ 完了 |
| E-2 | 対応付け可視化・紐づけ管理 | ✅ 完了 |