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:
@@ -1,7 +1,7 @@
|
||||
# マスタードキュメント:TODO管理機能
|
||||
|
||||
> **作成**: 2026-04-10
|
||||
> **最終更新**: 2026-04-10
|
||||
> **最終更新**: 2026-04-10(tractor_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 ではなく FK(1 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 では:
|
||||
|
||||
Reference in New Issue
Block a user