docs: levee_work をトラクター作業(tractor_work)に再設計

- doc/15 を畔塗作業編からトラクター作業編に改訂
  荒代掻き・植代掻き・耕耘を追加、TractorWorkSession モデル導入
- doc/19 TODO管理編: work_type の levee_work → tractor_work 置換、
  work_subtype フィールド追加、TodoCompletionLink に tractor_work 追記
- Issue #21(代掻き実績登録)の仕様策定に対応
This commit is contained in:
akira
2026-04-10 13:39:47 +09:00
parent b7b5ce3943
commit cc6823b071
3 changed files with 439 additions and 560 deletions

View File

@@ -1,7 +1,7 @@
# マスタードキュメントTODO管理機能
> **作成**: 2026-04-10
> **最終更新**: 2026-04-10
> **最終更新**: 2026-04-10tractor_work 対応追記)
> **対象機能**: TODO管理作業指示・優先順位管理・実績連携導線
> **実装状況**: 設計完了・実装前
> **対象 Issue**: `akira/keinasystem#17`
@@ -52,6 +52,7 @@ TODO実際に動く作業単位
| priority | integer | ✓ | 小さいほど上位1000刻み |
| due_date | date | | 期日 |
| work_type | enum | ✓ | 作業種別(下記参照) |
| work_subtype | varchar(30) | | トラクター作業の細別。`work_type=tractor_work` のときのみ必須(下記参照) |
| should_link_record | boolean | ✓ | 完了時に実績連携導線を有効にするか |
| completed_at | datetime | | 完了日時(差し戻し後も保持) |
| canceled_at | datetime | | キャンセル日時 |
@@ -74,7 +75,7 @@ MVP で採用する種別:
| `fertilization` | 施肥 |
| `rice_transplant` | 田植え |
| `delivery` | 運搬 |
| `levee_work` | 畔塗 |
| `tractor_work` | トラクター作業(畔塗・荒代掻き・植代掻き・耕耘) |
将来追加(農薬散布管理アプリ実装時):
@@ -82,6 +83,21 @@ MVP で採用する種別:
|---|---|
| `pesticide` | 防除 |
#### work_subtypeトラクター作業の細別
`work_type = tractor_work` のときのみ使用する。それ以外は `null`
| 値 | 意味 |
|---|---|
| `levee_work` | 畔塗 |
| `rough_harrowing` | 荒代掻き |
| `transplant_harrowing` | 植代掻き |
| `cultivation` | 耕耘 |
バリデーションルール:
- `work_type = tractor_work``work_subtype` 必須
- `work_type ≠ tractor_work``work_subtype` は null のみ許可
#### 並び順
- 基本は FILO新規作成時は最上位へ
@@ -151,9 +167,10 @@ MVP で採用する種別:
|---|---|---|---|
| id | bigint | ✓ | PK |
| todo | FK(Todo) | ✓ | |
| record_type | enum | ✓ | 実績種別 |
| record_type | enum | ✓ | 実績種別`fertilization` / `tractor_work` など) |
| work_record | FK(workrecords.WorkRecord) | | 共通索引 |
| spreading_session | FK(fertilizer.SpreadingSession) | | 施肥実績 |
| tractor_work_session | FK(tractor_work.TractorWorkSession) | | トラクター作業実績 |
| created_at | datetime | ✓ | |
- `todo` は OneToOne ではなく FK1 TODO から複数実績への分割を許容)
@@ -272,6 +289,8 @@ MVP で採用する種別:
- `field_ids` が計画外圃場を含む場合は `plan_links` が 1 件以上あるときのみエラーにする
- `should_link_record=true` でも対応実績アプリが無い場合は保存を許可する
- `TodoTargetField.field``PROTECT`(過去 TODO の対象圃場履歴を保全するため)
- `work_type = tractor_work` の場合は `work_subtype` が必須(未指定時は 400 エラー)
- `work_type ≠ tractor_work` の場合は `work_subtype` に値を指定した場合は 400 エラー
---
@@ -343,6 +362,12 @@ frontend/src/app/todos/
`施肥計画 → 施肥TODO → 施肥実績`SpreadingSessionの流れ。
完了時は `SpreadingSession` 作成画面への導線を返す。対象圃場は `TodoTargetField` を初期値として渡す。
### トラクター作業
`tractor_work` 種別の TODO 完了時は `TractorWorkSession` 作成画面への導線を返す。
`work_subtype` をクエリパラメータで渡し、作業種別セレクタの初期値として使う。
対象圃場は `TodoTargetField` を初期値として渡す。
### 田植え
田植え実績アプリは今後実装予定。MVP では: