田植え計画のEntry移動対応を実装する #7

Closed
opened 2026-04-05 05:14:27 +00:00 by akira · 2 comments
Owner

概要

作付け計画の品種変更時に、対象圃場の田植え計画Entryを新品種側の新規田植え計画へ移動する。

決定仕様

  • 現時点の田植え計画には施肥計画の actual_bags に相当する実績概念がない
  • そのため、対象圃場の RiceTransplantEntry は全件移動する
  • 移動先田植え計画は常に新規作成する
  • 新 plan 名: {year}年度 {品種名} 田植え計画(品種変更移動)
  • 将来、田植え実績連携を実装した場合は再設計する

実装内容

  • 品種変更サービスから田植え計画移動処理を呼び出す
  • RiceTransplantPlan.variety=旧品種 and year=対象年 and field=対象圃場 の Entry を抽出する
  • 対象 Entry の plan FK を新品種側新規 plan へ付け替える

受け入れ条件

  • 対象圃場の田植え計画Entryが新品種側新規 plan へ移動する
  • 旧品種側の候補圃場整合が崩れない
  • 新品種側の田植え計画から対象圃場を扱える

関連

## 概要 作付け計画の品種変更時に、対象圃場の田植え計画Entryを新品種側の新規田植え計画へ移動する。 ## 決定仕様 - 現時点の田植え計画には施肥計画の `actual_bags` に相当する実績概念がない - そのため、対象圃場の `RiceTransplantEntry` は全件移動する - 移動先田植え計画は常に新規作成する - 新 plan 名: `{year}年度 {品種名} 田植え計画(品種変更移動)` - 将来、田植え実績連携を実装した場合は再設計する ## 実装内容 - 品種変更サービスから田植え計画移動処理を呼び出す - `RiceTransplantPlan.variety=旧品種 and year=対象年 and field=対象圃場` の Entry を抽出する - 対象 Entry の `plan` FK を新品種側新規 plan へ付け替える ## 受け入れ条件 - [ ] 対象圃場の田植え計画Entryが新品種側新規 plan へ移動する - [ ] 旧品種側の候補圃場整合が崩れない - [ ] 新品種側の田植え計画から対象圃場を扱える ## 関連 - 親: #3 - 実装全体: #4
Author
Owner
<html>

#7 レビュー結果

総合: 問題なし、承認

実装の評価

services_rice_transplant.py の設計

仕様書との照合:

仕様 | 実装 | 判定 -- | -- | -- 現時点では全件移動(実績概念なし) | actual_bags フィルタなし、field_id 一致で全件 | 移動先は常に新規作成 | RiceTransplantPlan.objects.create(...) | 計画名 {year}年度 {品種名} 田植え計画(品種変更移動) | 実装通り | old_variety / new_variety が NULL なら 0 を返す | 冒頭でガード | 施肥計画と対称的な構造 | move_unspread_entries_for_variety_change と同パターン |

default_seed_grams_per_box / seedling_boxes_per_tan / notes の引き継ぎ

新計画に旧計画の計算パラメータを引き継いでいる点は施肥計画の calc_settings 引き継ぎと対称的で自然です。

ファイル分離(services_rice_transplant.py

施肥計画の移動は fertilizer/services.py、田植えは plans/services_rice_transplant.py と分けた設計は、循環インポートを避けつつ責務も明確で良い判断です。


テストの妥当性評価

テストが検証していること

  • 対象圃場(self.field)のエントリが新計画へ移動する
  • 別圃場(self.other_field)のエントリが旧計画に残る
  • 新計画の名前が仕様通り
  • default_seed_grams_per_box / seedling_boxes_per_tan / notes が引き継がれる

不足している観点(#6と同様、軽微)

田植え計画が存在しないケース — 施肥計画と同様、田植え計画が0件でも moved_count = 0 で正常終了することのテストがない

old_variety / new_variety が NULL のケース — ガードの動作テストがない

moved_count への田植え計画分の加算がないことprocess_plan_variety_change では施肥計画の moved_count だけを change.moved_entry_count に記録し、田植え計画の件数は含まれていない。これは仕様上の意図通りですか?(moved_entry_count の定義が「施肥エントリ移動数」なら問題なし)


1点確認

moved_entry_count は施肥計画の未散布エントリ数のみカウントしており、田植え計画の移動件数は含まれていません。PlanVarietyChangeverbose_name が「移動エントリ数」のままなので、将来混乱する可能性があります。

fertilizer_moved_entry_count に改名するか、コメントで「施肥エントリ数のみ」と明示するかのどちらかがあると明確になります。今の段階で直しますか?

</html>
<html> <body> <!--StartFragment--><h2 style="color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">#7 レビュー結果</h2><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong>総合: 問題なし、承認</strong></p><h3 style="color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">実装の評価</h3><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">services_rice_transplant.py</code> の設計</strong></p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">仕様書との照合:</p> 仕様 | 実装 | 判定 -- | -- | -- 現時点では全件移動(実績概念なし) | actual_bags フィルタなし、field_id 一致で全件 | ✅ 移動先は常に新規作成 | RiceTransplantPlan.objects.create(...) | ✅ 計画名 {year}年度 {品種名} 田植え計画(品種変更移動) | 実装通り | ✅ old_variety / new_variety が NULL なら 0 を返す | 冒頭でガード | ✅ 施肥計画と対称的な構造 | move_unspread_entries_for_variety_change と同パターン | ✅ <p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">default_seed_grams_per_box</code> / <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">seedling_boxes_per_tan</code> / <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">notes</code> の引き継ぎ</strong></p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">新計画に旧計画の計算パラメータを引き継いでいる点は施肥計画の <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">calc_settings</code> 引き継ぎと対称的で自然です。</p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong>ファイル分離(<code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">services_rice_transplant.py</code>)</strong></p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">施肥計画の移動は <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">fertilizer/services.py</code>、田植えは <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">plans/services_rice_transplant.py</code> と分けた設計は、循環インポートを避けつつ責務も明確で良い判断です。</p><hr style="font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><h3 style="color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">テストの妥当性評価</h3><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong>テストが検証していること ✅</strong></p><ul style="padding-inline-start: 2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><li>対象圃場(<code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">self.field</code>)のエントリが新計画へ移動する</li><li>別圃場(<code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">self.other_field</code>)のエントリが旧計画に残る</li><li>新計画の名前が仕様通り</li><li><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">default_seed_grams_per_box</code><span> </span>/<span> </span><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">seedling_boxes_per_tan</code><span> </span>/<span> </span><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">notes</code><span> </span>が引き継がれる</li></ul><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><strong>不足している観点(#6と同様、軽微)</strong></p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">① <strong>田植え計画が存在しないケース</strong> — 施肥計画と同様、田植え計画が0件でも <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">moved_count = 0</code> で正常終了することのテストがない</p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">② <strong><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">old_variety / new_variety</code> が NULL のケース</strong> — ガードの動作テストがない</p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">③ <strong><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">moved_count</code> への田植え計画分の加算がないこと</strong> — <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">process_plan_variety_change</code> では施肥計画の <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">moved_count</code> だけを <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">change.moved_entry_count</code> に記録し、田植え計画の件数は含まれていない。これは仕様上の意図通りですか?(<code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">moved_entry_count</code> の定義が「施肥エントリ移動数」なら問題なし)</p><hr style="font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><h3 style="color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">1点確認</h3><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">moved_entry_count</code> は施肥計画の未散布エントリ数のみカウントしており、田植え計画の移動件数は含まれていません。<code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">PlanVarietyChange</code> の <code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">verbose_name</code> が「移動エントリ数」のままなので、将来混乱する可能性があります。</p><p style="white-space: pre-wrap; margin-top: 0.1em; margin-bottom: 0.2em; color: rgb(41, 41, 41); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><code style="font-family: monospace; color: rgb(255, 255, 255); background-color: rgb(9, 52, 95); padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size: 0.9em;">fertilizer_moved_entry_count</code> に改名するか、コメントで「施肥エントリ数のみ」と明示するかのどちらかがあると明確になります。今の段階で直しますか?</p><!--EndFragment--> </body> </html>
Collaborator

2026-04-07 時点で実装済みを確認したためクローズします。

確認内容:

  • 品種変更時に move_rice_transplant_entries_for_variety_change() が呼ばれる構成になっている
  • 対象圃場の RiceTransplantEntry を新品種側の新規田植え計画へ移動する処理が実装済み
  • 移動先 plan 名、デフォルト値、備考の引き継ぎもコード上で確認済み
  • apps.plans.tests の関連テストが 2026-04-07 に Docker 内で通過

関連ファイル:

  • backend/apps/plans/services.py
  • backend/apps/plans/services_rice_transplant.py
  • backend/apps/plans/tests.py
2026-04-07 時点で実装済みを確認したためクローズします。 確認内容: - 品種変更時に `move_rice_transplant_entries_for_variety_change()` が呼ばれる構成になっている - 対象圃場の `RiceTransplantEntry` を新品種側の新規田植え計画へ移動する処理が実装済み - 移動先 plan 名、デフォルト値、備考の引き継ぎもコード上で確認済み - `apps.plans.tests` の関連テストが 2026-04-07 に Docker 内で通過 関連ファイル: - `backend/apps/plans/services.py` - `backend/apps/plans/services_rice_transplant.py` - `backend/apps/plans/tests.py`
ai closed this issue 2026-04-07 00:59:24 +00:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: akira/keinasystem#7