ローカル更新済み:
13_マスタードキュメント_施肥計画編.md — 散布実績セクション整備、在庫連携・集計ルール・WorkRecord自動生成・前年度コピーのセクション追加、旧「散布確定モーダル」記述削除、型定義・ファイル構成・将来の拡張を更新 14_マスタードキュメント_分配計画編.md — 散布実績との連携・WorkRecord自動生成のセクション追加 CLAUDE.md — データモデル(SpreadingSession/Item, WorkRecord, actual_bags)追加、プロジェクト構造にfertilizer/workrecordsアプリ追加、実装状況に散布実績・作業記録索引を追記、更新履歴に2026-03-17エントリ追加
This commit is contained in:
69
CLAUDE.md
69
CLAUDE.md
@@ -83,9 +83,16 @@ keinasystem_t02/
|
||||
│ │ ├── views.py # sync(APIキー), records, summary, gdd, similarity
|
||||
│ │ ├── urls.py
|
||||
│ │ └── management/commands/fetch_weather.py # 初回一括取得・差分取得
|
||||
│ └── reports/ # 申請書生成アプリ
|
||||
│ ├── views.py # PDF生成API
|
||||
│ └── templates/ # PDF用HTMLテンプレート
|
||||
│ ├── reports/ # 申請書生成アプリ
|
||||
│ │ ├── views.py # PDF生成API
|
||||
│ │ └── templates/ # PDF用HTMLテンプレート
|
||||
│ ├── fertilizer/ # 施肥計画・散布実績アプリ
|
||||
│ │ ├── models.py # Fertilizer, FertilizationPlan, FertilizationEntry, SpreadingSession, SpreadingSessionItem
|
||||
│ │ ├── services.py # actual_bags再集計、在庫USE連携
|
||||
│ │ └── views.py # 施肥計画/散布実績/候補API
|
||||
│ └── workrecords/ # 作業記録索引アプリ
|
||||
│ ├── models.py # WorkRecord
|
||||
│ └── services.py # sync_delivery_work_record, sync_spreading_work_record
|
||||
└── frontend/
|
||||
└── src/app/
|
||||
├── allocation/ # 作付け計画編集画面(メイン)
|
||||
@@ -96,6 +103,9 @@ keinasystem_t02/
|
||||
│ ├── feedback/[token]/ # フィードバックページ(認証不要)
|
||||
│ ├── history/ # メール処理履歴
|
||||
│ └── rules/ # 送信者ルール管理
|
||||
├── fertilizer/ # 施肥計画(一覧・編集・肥料マスタ)
|
||||
│ └── spreading/ # 散布実績画面
|
||||
├── distribution/ # 運搬計画(一覧・編集)
|
||||
├── weather/ # 気象データ画面(年別集計・期間指定・グラフ)
|
||||
└── settings/
|
||||
└── password/ # パスワード変更
|
||||
@@ -188,9 +198,34 @@ FertilizationEntry (施肥エントリ・中間テーブル)
|
||||
├── plan (FK to FertilizationPlan, CASCADE)
|
||||
├── field (FK to fields.Field, CASCADE)
|
||||
├── fertilizer (FK to Fertilizer, PROTECT) ← 使用中の肥料は削除不可
|
||||
├── bags(袋数、Decimal)
|
||||
├── bags(袋数、Decimal・計画値)
|
||||
├── actual_bags(散布実績集計値、Decimal(10,4)、nullable)
|
||||
└── unique_together = ['plan', 'field', 'fertilizer']
|
||||
|
||||
SpreadingSession (散布実績セッション) ← 2026-03-17 追加
|
||||
├── year(年度)
|
||||
├── date(散布日)
|
||||
├── name(セッション名、必須)
|
||||
├── notes(備考)
|
||||
└── year+date の一意制約なし(同日複数記録可能)
|
||||
|
||||
SpreadingSessionItem (散布実績明細)
|
||||
├── session (FK to SpreadingSession, CASCADE)
|
||||
├── field (FK to fields.Field, PROTECT)
|
||||
├── fertilizer (FK to Fertilizer, PROTECT)
|
||||
├── actual_bags(実散布袋数、Decimal(10,4))
|
||||
├── planned_bags_snapshot / delivered_bags_snapshot(表示時点のスナップショット)
|
||||
└── unique_together = ['session', 'field', 'fertilizer']
|
||||
|
||||
WorkRecord (作業記録索引) ← apps/workrecords/ 別アプリ、2026-03-17 追加
|
||||
├── work_date(作業日)
|
||||
├── work_type(fertilizer_delivery / fertilizer_spreading)
|
||||
├── title(一覧表示名)
|
||||
├── year(年度)
|
||||
├── delivery_trip (OneToOne FK to DeliveryTrip, nullable)
|
||||
├── spreading_session (OneToOne FK to SpreadingSession, nullable)
|
||||
└── 詳細は各業務テーブル側に持つ(索引として機能)
|
||||
|
||||
DeliveryPlan (運搬計画) ← 旧 DistributionPlan を置き換え(2026-03-16 再設計)
|
||||
├── year(年度)← 施肥計画へのFK廃止、年度ベースで全施肥計画を横断
|
||||
├── name(計画名)
|
||||
@@ -343,21 +378,29 @@ DeliveryTripItem (運搬明細)
|
||||
- **将来計画**: 開花・収穫予測(品種ごとの目標GDD設定 → 到達日予測)
|
||||
- マスタードキュメント: `document/12_マスタードキュメント_気象データ編.md`
|
||||
10. **施肥計画機能**(本番稼働中):
|
||||
- Django `apps/fertilizer` アプリ(Fertilizer, FertilizationPlan, FertilizationEntry)
|
||||
- Django `apps/fertilizer` アプリ(Fertilizer, FertilizationPlan, FertilizationEntry, SpreadingSession, SpreadingSessionItem)
|
||||
- API: `/api/fertilizer/fertilizers/`, `/api/fertilizer/plans/`, `/api/fertilizer/calculate/`, `/api/fertilizer/candidate_fields/`
|
||||
- PDF出力: `/api/fertilizer/plans/{id}/pdf/`(WeasyPrint、A4横向き)
|
||||
- FertilizationEntry.fertilizer は PROTECT(使用中の肥料は削除不可・migration 0002)
|
||||
- FertilizationEntry.fertilizer は PROTECT(使用中の肥料は削除不可)
|
||||
- 自動計算3方式: per_tan(反当袋数)/ even(均等配分)/ nitrogen(反当チッソ)
|
||||
- 四捨五入トグル: `≈`(丸め)/ `↩`(元の計算値に戻す)
|
||||
- フロントエンド: `/fertilizer`(一覧)、`/fertilizer/masters`(肥料マスタ)、`/fertilizer/new`・`/fertilizer/[id]/edit`(編集)
|
||||
- 施肥機能全体で alert/confirm を廃止し、React インラインバナーでエラー表示
|
||||
- マスタードキュメント: `document/13_マスタードキュメント_施肥計画編.md`
|
||||
10. **施肥計画機能**:
|
||||
- Django `apps/fertilizer` アプリ(Fertilizer, FertilizationPlan, FertilizationEntry)
|
||||
- API(JWT認証): `GET/POST /api/fertilizer/fertilizers/`, `GET/POST /api/fertilizer/plans/?year=`, `GET /api/fertilizer/plans/{id}/pdf/`, `GET /api/fertilizer/candidate_fields/?year=&variety_id=`, `POST /api/fertilizer/calculate/`
|
||||
- 自動計算3方式: 反当袋数(per_tan)、均等配分(even)、反当チッソ(nitrogen)
|
||||
- フロントエンド: `/fertilizer/`(一覧), `/fertilizer/new`・`/fertilizer/[id]/edit`(編集・マトリクス表), `/fertilizer/masters/`(肥料マスタ)
|
||||
- スコープ外(将来): 購入管理
|
||||
- **散布実績機能**(2026-03-17 追加):
|
||||
- 散布実績API: `/api/fertilizer/spreading/`(CRUD + candidates)
|
||||
- 散布日単位の記録(同日複数セッション可能)
|
||||
- 運搬済み肥料ベースで候補を表示、圃場×肥料単位で実績袋数を記録
|
||||
- 保存時に在庫USE連携・FertilizationEntry.actual_bags再集計・WorkRecord自動生成
|
||||
- 施肥計画一覧に進捗表示(未散布/一部散布/完了/計画超過)
|
||||
- 旧「散布確定」ボタン廃止(is_confirmed/confirmed_at はDB残留、UI未使用)
|
||||
- フロントエンド: `/fertilizer/spreading`
|
||||
12. **作業記録索引**(2026-03-17 追加):
|
||||
- Django `apps/workrecords` アプリ(WorkRecord モデル)
|
||||
- 運搬・散布の作業を日付順に一覧する索引テーブル
|
||||
- 明細は各業務テーブル側(DeliveryTrip / SpreadingSession)に持つ
|
||||
- API: `/api/workrecords/?year=`
|
||||
- WorkRecord自動生成: 運搬回の日付保存時・散布実績保存時にupsert
|
||||
11. **運搬計画機能**(旧・分配計画、本番稼働中):
|
||||
- 旧 DistributionPlan/Group/GroupField → 新 DeliveryPlan/Group/GroupField/Trip/TripItem に移行
|
||||
- 施肥計画への直接FK廃止 → 年度ベースで全施肥計画を横断
|
||||
@@ -522,6 +565,8 @@ docker-compose exec backend python manage.py migrate
|
||||
|
||||
## 📝 更新履歴
|
||||
|
||||
- 2026-03-17: 施肥散布実績連携を実装・本番稼働。旧「散布確定」ボタン廃止→日付単位の散布実績記録(SpreadingSession/Item)へ移行。FertilizationEntry.actual_bags追加、散布保存時に在庫USE連携・WorkRecord自動生成。apps/workrecords新設。StockTransaction.spreading_itemをCASCADE→SET_NULLに変更。マスタードキュメント13/14を更新
|
||||
|
||||
- 2026-03-16: 分配計画を「運搬計画」に再設計・本番稼働。実運用のワークフロー(軽トラ複数回・複数施肥計画混在・肥料指定)に合わせ、DeliveryPlan/Trip/TripItem モデルへ移行。施肥計画へのFK廃止→年度ベース。グループ一括割り当て・グループ単位の回間移動機能を追加。マスタードキュメント14を全面改訂
|
||||
|
||||
- 2026-03-05: メール通知機能を更新。MailEmail.account を xserver1〜xserver6 で識別可能に変更。Windmill mail_filter に To ヘッダー宛先補正を追加し、Gmail先行取り込みでも Xserver 宛先ラベルが崩れないよう修正。マスタードキュメント/仕様書を同期。
|
||||
|
||||
Reference in New Issue
Block a user