akira
8de27de335
第2版
2026-04-07 10:33:29 +09:00
akira
71b8258281
メニューの整理案
2026-04-07 10:01:02 +09:00
Akira
4516a74772
Fix sync_db.sh to run migrate after DB restore
...
サーバーより新しいマイグレーションがローカルに存在する場合、
リストア後にmigrateを実行しないと500エラーになるバグを修正。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 17:32:23 +09:00
Akira
a42ccb5cda
Add local production test environment setup
...
- docker-compose.local.yml: 本番Dockerfile使用・Traefikなし・ポート直接公開
- deploy_local.sh: ローカル環境のビルド・起動スクリプト
- sync_db.sh: サーバーDBダンプをローカルに取り込むスクリプト
- document/20_ローカルテスト環境.md: 手順ドキュメント
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 17:32:23 +09:00
akira
4a1db5ef27
#12 対応を入れました。
...
畔塗記録 API に total_area_tan を追加して、一覧の各記録に「圃場数 / 面積合計」が出るようにしました。あわせて、作成・編集フォームの「対象圃場一覧」にも、選択中の合計面積を表示しています。主な変更は serializers.py、tests.py、page.tsx、index.ts です。
確認できたこと:
docker compose -f docker-compose.develop.yml exec backend python manage.py test apps.levee_work OK
docker exec keinasystem_frontend npm run build OK
まだコミットはしていません。必要ならこのままコミットして push します。
2026-04-06 17:23:06 +09:00
akira
c90c6210e1
Add fertilization plan merge workflow
2026-04-06 16:49:44 +09:00
akira
c675b7b7ae
Move all fertilization entries on variety change
2026-04-05 18:42:09 +09:00
akira
ae0249be69
Add allocation variety change history UI
2026-04-05 16:55:44 +09:00
akira
1d5bcc9dd6
Move rice transplant entries on variety change
2026-04-05 16:49:03 +09:00
akira
98814299cf
Move unspread fertilization entries on variety change
2026-04-05 16:43:26 +09:00
akira
21fb2323eb
Add plan variety change tracking
2026-04-05 16:32:57 +09:00
akira
5a9b6a053b
改善案/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 を未散布扱いとするかどうか」を明示した方が安全です。
2026-04-05 14:09:48 +09:00
akira
429a98decb
改善案/issue_3_計画始動後の作付け変更_調査.md#L442 (line 442)
...
旧 plan の当該エントリに対応する RESERVE を削除 という書き方は、現行実装とずれています。RESERVE はエントリ単位ではなく fertilization_plan 単位で全置換管理です。backend/apps/materials/stock_service.py (line 10) の通り、実装上は「旧 plan 全体の RESERVE を再生成」「新 plan 全体の RESERVE を再生成」と書かないと誤実装されやすいです。
改善案/issue_3_計画始動後の作付け変更_調査.md#L437 (line 437)
未散布判定を actual_bags is NULL にしているのは危険です。actual_bags は散布実績再集計の結果で、将来のロジック変更や部分散布時に 0 や端数が入る可能性がありますし、「未散布」と「部分散布」を同一扱いできません。backend/apps/fertilizer/models.py (line 72) を踏まえると、少なくとも「actual_bags is null または 0」「一部散布済みは移動不可 or 分割対象」と明文化した方が安全です。
改善案/issue_3_計画始動後の作付け変更_調査.md#L367 (line 367) と 改善案/issue_3_計画始動後の作付け変更_調査.md#L449 (line 449)
田植え計画を「施肥と同様」とまとめていますが、田植え計画には actual_bags に相当する実績概念がまだありません。backend/apps/plans/serializers.py (line 177) 現状では「全 Entry 移動」なのか「将来の実績連携を見越して未実施分のみ移動」なのかを切り分けて書く必要があります。今の書き方だと、施肥と同じ判定軸があるように読めます。
改善案/issue_3_計画始動後の作付け変更_調査.md#L461 (line 461)
actual_bags 集計ロジックは「影響なし」と言い切らない方がいいです。今回の方針なら大きな改修は不要ですが、前提は「同一年・同圃場・同肥料の行が複数計画にまたがって共存しないこと」です。これは仕様上の制約なので、「影響なし」ではなく「現方針では再利用可能。ただし重複行を作らないことが前提」と書くのが正確です。
2026-04-05 14:07:59 +09:00
akira
4299c6eb4b
改善案No2
2026-04-05 14:00:50 +09:00
akira
8dd680e28a
Update rice transplant plan spec document
2026-04-05 13:18:51 +09:00
akira
3eb2852b78
修正しました。
...
原因は RiceTransplantEditPage.tsx の初期値セット用 useEffect で、新規作成時に isNew を条件にしていたため、反当苗箱枚数 を入力しても毎回デフォルト値で上書きされていたことです。これを seedlingBoxesPerTan === '' のときだけ初期値を入れるように直したので、今は手入力できるはずです。
あわせて、同じファイルで 面積(反) は toFixed(2) 表示に変更しました。反当苗箱枚数 は入力欄のまま 1 桁運用に寄せる前提で、表示系はご要望に近づけています。再読み込みしてもう一度画面操作してみてください。
2026-04-05 12:23:22 +09:00
akira
5c2d17fe0a
大丈夫ではあるのですが、1本 migration が足りていませんでした。原因はこれです。
...
0006 で seedling_boxes_per_tan を installed_seedling_boxes にリネーム
その結果、DB 上の field メタ情報には元の表示名が残る
モデル側では今 verbose_name='設置苗箱枚数'
Django がその差分を AlterField として検出
なので、出ていた 0009_alter_ricetransplantentry_installed_seedling_boxes.py は正当です。こちらで 0009_alter_ricetransplantentry_installed_seedling_boxes.py を追加しました。
次はこれで進めれば大丈夫です。
git pull でこの migration を server 側へ反映
docker compose exec backend python manage.py migrate
必要なら docker compose exec backend python manage.py makemigrations plans --dry-run --verbosity 3 で警告が消えたか確認
これで plans の未反映 migration 警告は消えるはずです。
2026-04-05 12:17:04 +09:00
akira
182ef5d83d
該当エラーは直しました。
...
frontend/src/app/rice-transplant/_components/RiceTransplantEditPage.tsx に Variety 型の import を追加して、find のコールバック引数に明示型を付けています。今回の Parameter 'variety' implicitly has an 'any' type はこれで解消するはずです。
そのままもう一度 npm run build を回してみてください。もし次の型エラーが出たら、続けて直します。
2026-04-05 12:08:24 +09:00
akira
0131982c34
種子資材ベースへの切り替えを反映しました。
...
frontend/src/app/rice-transplant/_components/RiceTransplantEditPage.tsx では、田植え計画の主選択を 品種 から 種子資材 に変更し、画面上は種子資材名だけで進めるようにしました。保存時だけ内部的に、その種子資材に紐づく Variety を解決して既存 API に送っています。候補圃場取得もその内部参照で動く形です。frontend/src/app/rice-transplant/page.tsx の一覧表示も 作物 / 品種 ではなく 種子資材 列に変更しました。
仕様書 document/16_マスタードキュメント_田植え計画編.md も 年度 × 種子資材 を軸にした説明へ更新済みです。確認できたのは Python 側の py_compile までで、フロントのビルド確認はまだしていません。Issue #2 にも今回の変更内容をコメント済みです。
2026-04-05 12:04:36 +09:00
akira
491f05eee8
その判断で進めました。在庫管理を先に固めるように切り替えて、手元の実装もそちらを優先して直しています。
...
今回入れたのは、在庫履歴の編集・削除対応と、種子資材を資材マスタ側で品種に直接結び付ける流れです。backend/apps/materials/views.py と backend/apps/materials/serializers.py で stock-transactions の更新を許可しつつ、計画や実績に紐づく履歴はロック扱いにしました。画面側は frontend/src/app/materials/page.tsx、frontend/src/app/materials/_components/StockOverview.tsx、frontend/src/app/materials/_components/StockTransactionForm.tsx を更新して、手動登録の入出庫履歴をあとから編集・削除できるようにしています。
あわせて frontend/src/app/materials/masters/page.tsx と frontend/src/app/materials/_components/MaterialForm.tsx で、種子 タブから品種を直接選んで紐付ける形にしました。重複を避けるため、作付け計画側の品種管理モーダル frontend/src/app/allocation/page.tsx から種子資材の紐付け UI は外しています。Issue #2 にもこの方針でコメント追記済みです。
確認できたのは python3 -m py_compile までで、フロントのビルドは frontend/node_modules が無いためまだ回していません。次はブラウザで在庫管理の操作感を確認してから、田植え計画側の細部を詰めるのがよさそうです。
2026-04-05 11:43:03 +09:00
akira
a38472e4a0
品種ごとの種子在庫前提まで実装を進めました。
...
主な変更は、seed 資材種別の追加と Variety.seed_material の導入です。backend/apps/materials/models.py、backend/apps/plans/models.py、backend/apps/plans/serializers.py で、田植え計画が作物在庫ではなく品種に紐づく種子資材の現在庫を参照するように切り替えました。マイグレーションは backend/apps/materials/migrations/0005_material_seed_type.py と backend/apps/plans/migrations/0008_variety_seed_material.py を追加しています。
画面側は、frontend/src/app/materials/page.tsx と frontend/src/app/materials/masters/page.tsx に「種子」タブを追加し、frontend/src/app/allocation/page.tsx の品種管理モーダルで品種ごとに種子在庫資材を設定できるようにしました。田植え計画画面 frontend/src/app/rice-transplant/_components/RiceTransplantEditPage.tsx も、苗箱数 列中心に整理し、種もみkg 列を削除、反当苗箱枚数 の列反映と ≈ / ↩ の四捨五入トグルを施肥計画寄りの操作感に寄せています。仕様書 document/16_マスタードキュメント_田植え計画編.md も更新済みです。
確認できたのは python3 -m py_compile backend/apps/materials/models.py backend/apps/materials/serializers.py backend/apps/plans/models.py backend/apps/plans/serializers.py backend/apps/plans/views.py までです。frontend/node_modules が無いためフロントのビルド確認はまだできていません。Issue #2 にも反映内容をコメント済みです。必要なら次にコミットします。
2026-04-05 11:22:07 +09:00
akira
11b36b28a5
Issue #2 に最新の理解を記録し、その内容で仕様書と実装を修正しました。
...
document/16_マスタードキュメント_田植え計画編.md は、「行ごとに保持するのは圃場の苗箱数」「列側に反当苗箱枚数を持つ」「種もみg/箱 は全体共通値」という前提に更新しています。コード側は backend/apps/plans/models.py と backend/apps/plans/serializers.py で計画ヘッダに seedling_boxes_per_tan を追加し、backend/apps/plans/migrations/0007_ricetransplantplan_seedling_boxes_per_tan.py も作成しました。画面は frontend/src/app/rice-transplant/_components/RiceTransplantEditPage.tsx を施肥計画寄りに組み直し、列単位のデフォルト反映と四捨五入、行ごとの苗箱数入力に寄せています。frontend/src/types/index.ts も合わせて更新済みです。
確認できたのはバックエンドの構文チェックまでで、python3 -m py_compile backend/apps/plans/models.py backend/apps/plans/serializers.py backend/apps/plans/views.py は通過しています。フロントのビルド確認まではこの環境では回していません。Issue #2 にも今回の反映内容をコメント済みです。
2026-04-05 10:53:24 +09:00
akira
95c90dd699
Adjust rice transplant plan to store installed box counts
2026-04-05 10:26:14 +09:00
akira
9bcc5e5e21
butler2 と同じ issue テンプレートを設定しました。
...
追加したのは bug.md、design.md、feature.md の 3 つで、内容とラベル指定も butler2 に揃えています。
2026-04-05 08:16:37 +09:00
akira
0c57dd7886
Add rice transplant planning feature
2026-04-04 17:26:55 +09:00
akira
f236fe2f90
ソートできるようにしました。page.tsx
...
畔塗画面の対象圃場一覧で、圃場 / 面積 / グループ / 品種 の各ヘッダーを押すと昇順・降順を切り替えられます。初期状態は 圃場名昇順 です。選択状態はそのまま維持されるので、並べ替えてもチェックが外れることはありません。
必要なら次に、ソートだけでなく検索欄も足せます。圃場数が多いなら検索もかなり効きます。
2026-04-04 12:07:41 +09:00
akira
b7b9818855
feat: add levee work records
2026-04-04 11:32:26 +09:00
akira
c773c7d3b8
docs: add levee work master document
2026-04-04 11:13:11 +09:00
Akira
edd2f2a274
現状でコミット
2026-03-27 14:59:25 +09:00
Akira
00fd4a8cba
削除: データモデル詳細(145行)→ 「document/03_データ仕様書.md を参照」に集約
...
移動: 実装状況・既知の課題・次のマイルストーン → TASK_CONTEXT.md へ
削除: 更新履歴(git log で追える)
圧縮: ディレクトリ構造、トラブルシューティング、作業パターンを要約
維持: 絶対制約、コーディング規約、デプロイコマンド、マスタードキュメントへのリンク
2026-03-18 09:25:44 +09:00
Akira
13c21ed7de
ローカル更新済み:
...
13_マスタードキュメント_施肥計画編.md — 散布実績セクション整備、在庫連携・集計ルール・WorkRecord自動生成・前年度コピーのセクション追加、旧「散布確定モーダル」記述削除、型定義・ファイル構成・将来の拡張を更新
14_マスタードキュメント_分配計画編.md — 散布実績との連携・WorkRecord自動生成のセクション追加
CLAUDE.md — データモデル(SpreadingSession/Item, WorkRecord, actual_bags)追加、プロジェクト構造にfertilizer/workrecordsアプリ追加、実装状況に散布実績・作業記録索引を追記、更新履歴に2026-03-17エントリ追加
2026-03-17 20:31:22 +09:00
Akira
daae1a42e5
散布実績: 名称未入力時のバリデーションエラーを追加
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-17 20:05:36 +09:00
Akira
4e06318985
散布実績ページ: useSearchParamsをSuspense boundaryでラップ(本番ビルドエラー修正)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-17 20:03:16 +09:00
Akira
9f96d1f820
散布実績レビュー修正: バグ修正・仕様適合・デッドコード削除
...
- 候補API: 運搬済みフィルタ(date IS NOT NULL)を追加。
delivery_plan_id指定時は全明細表示、年度全体時のみ日付フィルタ適用
- StockTransaction.spreading_item: CASCADE→SET_NULL に修正(仕様7.3準拠)
- perform_destroy: SET_NULL対応でUSEを明示削除してからsession削除
- ConfirmSpreadingModal.tsx: 未使用のため削除
- FertilizerEditPage.tsx: 旧散布確定関連デッドコード全除去
(isConfirmed/confirmedAt state, handleUnconfirm, 確定取消ボタン, 確定済みバナー)
- services.py: 未使用のto_decimal_or_zero削除
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-17 19:56:13 +09:00
Akira
140d5e5a4d
施肥散布実績機能を実装し運搬・作業記録・在庫連携を追加
2026-03-17 19:28:52 +09:00
Akira
865d53ed9a
仕様書に追記しました。更新先は 施肥散布実績連携変更実装仕様.md です。
...
今回追加した内容は主にこの5点です。
FertilizationEntry.actual_bags の追加
SpreadingSessionItem 保存・更新・削除時の actual_bags 再集計ルール
copy_from_previous_year で actual_bags があれば次年度 bags 初期値に使う方針
施肥計画一覧・編集画面での 計画値 / 実績値 併記
RESERVE = bags、USE = actual_bags の併存整理
受け入れ条件にも、
actual_bags が再集計されること
計画値と実績値の両方が見えること
前年度コピーで actual_bags を使えること
を追加しています。
今回は仕様書更新のみで、コード変更やテストはしていません。必要なら次に、この内容をマスタードキュメント側へ反映します
2026-03-17 17:24:25 +09:00
Akira
c9ae99ebc8
CODEX版
...
昨日運んだ肥料を散布してきました。
それで、今は施肥計画に「散布確定」ボタンがあるのですが、それだと実態に合わない事がわかりました。
実際には運搬計画を元に、運んだ肥料を散布します。
順序は、運搬計画の1回目2回目などの順序には関係がなく
運搬計画のすべての中から、全部または一部の圃場に対して散布します。
散布中に、運搬計画から実際の散布袋数が変更になる場合があるので、変更に対処できなければなりません。。散布は日付単位で行い、その日付を元に作業記録が自動的に作成されるようにしたいです。
運搬計画にも日付をつけたので、それも作業記録が自動的に作成されるようにしたいです。
以上のような感じで、変更実装仕様を作成してもらえますか?
2026-03-17 16:26:41 +09:00
Akira
9dbbb48ee0
運搬計画PDF: 袋数を整数 or 小数1桁で表示(4桁表示を修正)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 17:15:14 +09:00
Akira
1f26d5001b
ドキュメント更新: 運搬計画の実装状況を本番稼働中に、グループ操作機能を追記
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 17:09:55 +09:00
Akira
722ac4efd0
運搬計画: グループ単位の回間移動・未割当戻し機能を追加
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 17:04:06 +09:00
Akira
bba04f24c2
運搬計画: グループ一括割り当て機能を追加
...
各回の追加ドロップダウンに「+ グループを追加...」を追加。
グループ内の全圃場の未割り当て分を一括で回に追加できるようにした。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 16:53:32 +09:00
Akira
287a1ebb59
Set イテレーションを Array.from() に修正: 本番ビルドの TypeScript エラーを解消
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 16:40:06 +09:00
Akira
1c27a66691
分配計画を運搬計画に再設計: 軽トラ1回分を基本単位とする運搬回モデルを導入
...
実運用のワークフロー(複数施肥計画混在・軽トラ複数回・肥料指定)に合わせ、
旧 DistributionPlan/Group/GroupField を DeliveryPlan/Group/GroupField/Trip/TripItem に置き換え。
施肥計画への直接FK廃止→年度ベースで全施肥計画を横断。
回ごとの日付記録、圃場の回間移動、対象肥料フィルタ、回ごとPDF出力に対応。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 16:29:01 +09:00
Akira
eba6267495
変更したドキュメント
...
ファイル 変更内容
14_マスタードキュメント_分配計画編.md 全面改訂: 旧「分配計画」→ 新「運搬計画」。データモデル5テーブル、API仕様、画面UI操作、PDFフォーマットを記載
CLAUDE.md データモデル概要(Distribution* → Delivery* に差し替え)、実装状況セクション、更新履歴を更新
13_マスタードキュメント_施肥計画編.md OUT スコープの「圃場への配置計画」を「運搬計画」への参照に修正
内容を確認して、問題なければ実装に進みます。
2026-03-16 16:05:46 +09:00
Akira
d9a4bd19eb
施肥計画の「利用可能」表示を修正: 在庫の実残数を正しく表示
...
- getPlanAvailableStock: 自計画の引当を足し戻す計算を廃止し、
サーバー側available_stock + 初期引当 - 現在計画量でリアルタイム算出
- getPlanShortage: available_stockベースの不足判定に変更
- 編集中の計画変更が即座に利用可能数に反映されるように
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 10:13:41 +09:00
Akira
89ab9b7b83
これで:
...
利用可能 = available_stock = 在庫 - 全計画の引当合計(マイナスならマイナス表示)
不足 = available_stock がマイナスのとき、その絶対値を赤字表示
どの計画画面でも同じ「利用可能」の値が表示される
例(仁井田米有機 55袋、計画A 47袋 + 計画B 5袋):
利用可能: 3.00袋(どちらの計画でも同じ)
不足: 表示なし(まだ余裕あり)
2026-03-16 09:57:43 +09:00
Akira
d5d78a2b14
deploy.sh にマイグレーション自動実行を追加
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-15 15:59:53 +09:00
Akira
391b0b265e
for serena
2026-03-15 15:44:58 +09:00
Akira
736b9c824e
Docker Compose 構成をシンプル化: 本番=docker-compose.yml、開発=docker-compose.develop.yml
...
- docker-compose.yml を本番用に変更(旧 docker-compose.prod.yml の内容)
- docker-compose.develop.yml を新規追加(開発用)
- deploy.sh を追加(本番デプロイスクリプト)
- develop.bat を追加(ローカル開発起動スクリプト)
- docker-compose.prod.yml を削除
- 本番サーバーに .env → .env.production シンボリックリンク設置済み
- CLAUDE.md のデプロイコマンドを更新
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-15 15:43:50 +09:00
Akira
e3c21d6e81
ConfirmSpreadingModal の改善点:
...
groupedEntries(肥料別リスト表示)→ layout(圃場×肥料のマトリクス表)に変更 ✅
施肥計画編集画面と同じ「圃場名 / 面積(反) / 肥料列... / 合計」のテーブル構造に統一 ✅
各セルに計画値ラベル + 実績入力欄を縦並び ✅
列合計(肥料別)・行合計(圃場別)・総合計を追加 ✅
計画情報サマリーカード(年度・品種・圃場数・肥料数)を追加 ✅
操作ガイド(sky色バナー)を追加 ✅
モーダル幅を max-w-4xl → max-w-[95vw] に拡大(マトリクス表に合わせて) ✅
ドキュメント更新:
document/13_マスタードキュメント_施肥計画編.md — 在庫引当・散布確定・確定取消 API を追記 ✅
改善案/在庫管理機能実装案.md — 微修正 ✅
2026-03-15 13:48:48 +09:00