改善案/issue_3_計画始動後の作付け変更_調査.md#L428 (line 428)

田植え計画 | 施肥と同様に対応 という決定表現が、下の詳細仕様と少しズレています。詳細では #L463 (line 463) 以降で「現時点では全件移動」と明記されているので、表も「現時点では全件移動、将来実績連携後に再設計」くらいに合わせた方が誤読されません。

改善案/issue_3_計画始動後の作付け変更_調査.md#L444 (line 444)
actual_bags = 0 は現行 services.py では null に丸められる は少し断定が強いです。現行の再集計ロジックでは未該当なら NULL になりやすい、という理解は良いのですが、将来だけでなくデータ補正や手動更新でも 0 が入り得ます。仕様書上は「未散布判定は NULL または 0 を未散布扱いとするかどうか」を明示した方が安全です。
This commit is contained in:
akira
2026-04-05 14:09:48 +09:00
parent 429a98decb
commit 5a9b6a053b

View File

@@ -425,7 +425,7 @@ RESERVE 付け替えもこの方針と整合する。
| 移動先計画の命名 | `{year}年度 {品種名} 施肥計画(品種変更移動)` |
| 変更履歴 | **PlanVarietyChange モデルを新設** |
| 圃場グループ | **対応不要**(現在値扱いのまま) |
| 田植え計画 | **施肥と同様に対応**(実装は施肥の後) |
| 田植え計画 | **現時点では全件移動**(実績概念なし)。将来の実績連携実装後に再設計(実装は施肥の後) |
### 9-2. 品種変更時の自動処理フロー
@@ -441,8 +441,11 @@ RESERVE 付け替えもこの方針と整合する。
- actual_bags IS NULL → 未散布(移動対象)
- actual_bags IS NOT NULL かつ actual_bags < bags → 一部散布済み(移動不可・旧計画に残す)
- actual_bags >= bags → 散布完了(移動不可・旧計画に残す)
※ actual_bags = 0 は現行 services.py では null に丸められるため実運用上は出ないが、
将来のロジック変更に備えて「is NULL」単独ではなく上記3区分で判定する
※ actual_bags = 0 の扱いは明示的に決定しておく必要がある。
現行 services.py では SUM = 0 のとき NULL に丸めるが、
データ補正や手動更新で 0 が直接セットされる可能性は排除できない。
本仕様では actual_bags IS NULL を未散布と判定し、0 は一部散布済みと同様に扱う
(移動不可・旧計画に残す)とする。
対象: FertilizationPlan.variety=A かつ year=変更年度 かつ
FertilizationEntry.field=変更圃場 かつ actual_bags IS NULL未散布