Commit Graph

131 Commits

Author SHA1 Message Date
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
Akira
72b4d670fe 完璧に動作しています。
テスト	結果
確定取消 API	 is_confirmed: false, confirmed_at: null
USE トランザクション削除	 current_stock が 27.5→32 に復帰
引当再作成	 reserved_stock = 5.000 に復帰
追加した変更:

stock_service.py:81-93 — unconfirm_spreading(): USE削除→確定フラグリセット→引当再作成
fertilizer/views.py — unconfirm アクション(POST /api/fertilizer/plans/{id}/unconfirm/)
fertilizer/page.tsx — 一覧に「確定取消」ボタン(確定済み計画のみ表示)
FertilizerEditPage.tsx — 編集画面ヘッダーに「確定取消」ボタン + 在庫情報再取得
2026-03-15 13:28:02 +09:00
Akira
42b11a5df8 在庫管理 Phase 1.5(引当・散布確定)の設計を追記し、CODEX指示書を更新
- 在庫管理機能実装案.md: セクション23(引当・散布確定ワークフロー)を追加
- CODEX.md: Phase 1完了を受け、Phase 1.5実装指示に全面書き換え

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 17:29:05 +09:00
Akira
497bc87c24 在庫管理機能 Phase 1 実装(apps/materials + フロントエンド)
Backend:
- apps/materials 新規作成(Material, FertilizerProfile, PesticideProfile, StockTransaction)
- 資材マスタ CRUD API(/api/materials/materials/)
- 入出庫履歴 API(/api/materials/stock-transactions/)
- 在庫集計 API(/api/materials/stock-summary/)
- 既存 Fertilizer に material OneToOneField 追加(0005マイグレーション、データ移行込み)

Frontend:
- /materials: 在庫一覧画面(タブフィルタ、履歴展開、入出庫モーダル)
- /materials/masters: 資材マスタ管理(肥料/農薬/その他タブ、インライン編集)
- Navbar に「在庫管理」メニュー追加
- Material/StockTransaction/StockSummary 型定義追加

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 15:42:47 +09:00
Akira
67d4197b7f 在庫管理機能実装案をレビュー反映し、CODEX実装指示書を追加
- StockTransaction から冗長フィールド除外(unit, reference_type/id, created_by, inventory_count)
- フロントエンド画面構成を変更(入出庫登録をモーダル化、マスタ管理をタブ統合)
- レビュー記録セクション22を追加
- CODEX.md: Phase 1 実装指示書を作成(モデル・API・画面の詳細仕様)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 15:03:09 +09:00
Akira
1b619c44a0 在庫管理機能実装案.md に ## 21. 補足: 外部サブスクLLM活用案 を追記しました。
内容は、恵菜システム自身は LLM API を呼ばず、調査用プロンプトを提供する 調査手順を表示する LLM回答を貼り付けてフォームへ反映する という実装案です。肥料用・農薬用のプロンプト例、画面イメージ、貼り付け結果の取り込み方式、メリットと注意点まで入れています。

今回は文書更新のみで、コード変更やテストはしていません。必要なら次に、この 貼り付け結果をフォームへ反映 するための入力フォーマット仕様や、画面ワイヤー案まで具体化できます。
2026-03-13 18:29:03 +09:00
Akira
f1512febde 在庫管理機能実装案.md に、電気炉さい ミネラルホウ素 リン酸グアノ も追記しました。
追加した内容は、各資材についての袋表示・保証票ベースの情報、実装上の扱い、alias の例です。あわせて最後のまとめも更新して、5件を次の3パターンに整理しました。

現場名と保証票名が違う: 仁井田米有機, 土佐勤農党, 電気炉さい
現場名と表示名がほぼ一致する: リン酸グアノ
公式マスタよりローカル資材管理向き: ミネラルホウ素
今回は文書更新のみで、コード変更やテストはしていません。必要なら次に、この5件を前提にした MaterialAlias の Django モデル案まで具体化します。
2026-03-13 13:50:24 +09:00
Akira
776a269d6d 在庫管理機能実装案.md に ## 18. 補足: 肥料公式データ同期・あいまい検索案 を追記しました。
内容は、普通肥料を主対象に公式データをローカルDB化し、検索時はローカル検索、24時間超過時だけ裏で差分同期する という方針です。FertilizerOfficialMaster のテーブル案、既存 Fertilizer との紐づけ、検索API、同期ジョブ、特殊肥料は手入力併用にする考え方まで入れています。

今回は文書更新のみで、コード変更やテスト実行はしていません。必要なら次は、この18章をもとに models.py レベルの実装草案まで起こせます。
2026-03-13 13:26:18 +09:00
Akira
1425094107 在庫管理機能実装案.md に、## 17. 補足: 農薬公式データ同期・あいまい検索案 を追記しました。
今回追加したのは、ローカルDBで即検索しつつ、24時間以上経過時だけ裏で差分同期する 方式の具体化です。PesticideOfficialMaster と OfficialDataSyncStatus のテーブル案、検索API、同期ジョブ、差分更新ルール、フロントの再読込挙動、失敗時フォールバックまで入れてあります。

文書更新のみで、コード変更やテスト実行はしていません。必要なら次に、この章をそのまま実装に落として、Django モデル案と API 仕様書を作れます。
2026-03-13 13:22:05 +09:00
Akira
f74dc4c4b7 在庫管理機能実装案 2026-03-13 13:13:40 +09:00
Akira
7825f0eb30 docs: sync mail notification account mapping updates 2026-03-05 15:16:12 +09:00
Akira
422a6781c5 mail: distinguish xserver mailboxes in account labels 2026-03-05 14:17:25 +09:00
Akira
0e809ebb99 施肥計画編集: ページ開時に自動計算・≈を入力値にも適用
- 編集画面を開いた際、保存済みcalc_settingsで自動計算しcalcMatrixを生成
  → 計算ボタンを押さなくてもラベルが表示されるようになる
- roundColumn(≈)がcalcMatrixにない場合はadjusted値を丸めるよう修正
  → 計算ボタンを押さなくても≈で整数丸めが効くようになる

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 11:34:59 +09:00
Akira
ff67a6bf26 施肥計画: 計算設定の復元とラベル表示バグを修正
- calcNewOnly フィルターを hasAdjusted/hasCalc チェックから inputValue === '' ベースに変更
  (既存プランを開いた際に全フィールドが「計算済み」と判定されて計算が動かないバグを修正)
- runCalc で adjusted をクリアしないよう変更
  (計算ボタン押下後にラベル=計算結果、テキストボックス=DB/確定値が同時表示されるよう修正)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 11:23:38 +09:00
Akira
5145217481 施肥計画の計算設定を保存・復元し、未入力圃場のみ計算オプションを追加
- FertilizationPlanにcalc_settings JSONFieldを追加(migration 0004)
- 編集画面を開くと前回の計算方式・パラメータが復元される
- 「未入力圃場のみ」チェックで既存値を保持したまま新規圃場だけ計算可能

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 10:50:56 +09:00
Akira
21d1dc355d 施肥計画一覧のボタンを分配計画に合わせて統一
アイコンのみ→アイコン+テキスト+ボーダー付きボタンに変更。
PDF(グレー)/ 編集(青)/ 削除(赤)のスタイルを両ページで統一。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 10:00:51 +09:00
Akira
8c47217003 未割り当て圃場に交互背景色を追加
行の対応が分かりにくい問題を解消するため、
偶数行/奇数行で白/グレーの交互背景色を適用。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 09:54:04 +09:00
Akira
a331f8b30a 未割り当て圃場の圃場名が切れる問題を修正
w-32 truncate(128px固定)を flex-1 min-w-0 truncate に変更し、
利用可能な幅いっぱいに伸びるようにした。
ホバーで全文確認できるよう title 属性も追加。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 09:50:42 +09:00
Akira
466eef128c 分配計画機能を実装
施肥計画の圃場を配置場所単位でグループ化し、グループ×肥料の集計表を
表示・PDF出力できる機能を追加。

- Backend: DistributionPlan/Group/GroupField モデル (migration 0003)
- API: GET/POST/PUT/DELETE/PDF (/api/fertilizer/distribution/)
- Frontend: 一覧・新規作成・編集画面 (/distribution)
- Navbar に分配計画メニューを追加
- 集計プレビューはクライアントサイド計算(API不要)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 09:43:20 +09:00
Akira
0d321df1c4 ブラウザテスト後のクリーンアップ 2026-03-01 18:25:58 +09:00