docs: TODO管理機能のマスタードキュメントを作成し仕様書案を更新

- 論点1-5の決定を仕様書案に反映
- document/19_マスタードキュメント_TODO管理編.md を新規作成
- CLAUDE.md のマスタードキュメント一覧に TODO管理を追加
This commit is contained in:
akira
2026-04-10 13:14:07 +09:00
parent 8de1ae70aa
commit b7b5ce3943
3 changed files with 398 additions and 24 deletions

View File

@@ -186,20 +186,22 @@ TODO 本体。
作業種別は「計画に対応するもの」と「計画に対応しないもの」の両方を含める。
初期:
初期採用MVP:
- `general`: 一般
- `fertilization`: 施肥
- `rice_transplant`: 田植え
- `delivery`: 運搬
- `levee_work`: 畔塗
- `pesticide`: 防除
- `other_recorded`: 計画非紐づき実績系
将来追加(アプリ実装時):
- `pesticide`: 防除(農薬散布管理アプリ実装時に追加)
補足:
- 実装時点で将来の全計画種別を確定できない場合は、MVP では現行アプリに対応する種別を先行定義する
- `general` はどれにも当てはまらない作業用に必須
- 現行アプリに対応する種別のみで始め、新しい計画機能追加時に `work_type` を拡張する
### 7.2 TodoTargetField
@@ -386,7 +388,7 @@ TODO と既存計画との紐づけ。
- タイトル
- 説明
- ステータス
- ステータス`todo` / `doing` / `canceled` のみ。`done` への変更は不可)
- 期日
- 作業種別
- 実績連携フラグ
@@ -394,14 +396,18 @@ TODO と既存計画との紐づけ。
- 分類
- 計画リンク
**注意**: `status=done` への変更は `PATCH` では受け付けない。完了は必ず `POST /api/todos/{id}/complete/` を使うこと。理由は、完了時に実績連携導線の生成が必要なため、入口を一本化して実装のブレを防ぐ。
### 8.5 削除
- `DELETE /api/todos/{id}/`
ルール:
ルール:
- 連携済み実績がある TODO は物理削除ではなく制限をかける案を優先
- MVP ではまず `done` かつ実績連携済み TODO の削除可否を要確認とする
- `TodoCompletionLink` が存在する TODO を削除しようとした場合、警告と各実績レコードへの直リンクを返す
- ユーザーが確認した上で削除を実行した場合は物理削除を許可する
- `TodoCompletionLink` は TODO と一緒に削除するCASCADE
- 実績レコード自体は削除しない(各実績アプリ側の責務)
### 8.6 並び替え
@@ -581,6 +587,8 @@ MVP では少なくとも以下の 2 導線を持つ。
- `canceled` に遷移したら `canceled_at` を自動設定する
- `done` から `todo` または `doing` への差し戻しは MVP では許可する
- 差し戻し時も `completed_at` はクリアせず履歴値として保持する
- 差し戻し時に `TodoCompletionLink` が存在する場合は、差し戻し自体は許可しつつ、API レスポンスに警告と各実績レコードへの直リンクを返す
- フロントはその警告を表示し、ユーザーが実績を削除したい場合は直リンクから遷移できるようにする(実績レコード自体の削除は TODO 側では行わない)
- `plan_links` に紐づく計画の年度と TODO の利用年度が必要なら将来追加する
- `field_ids` が計画外圃場を含む場合は、`plan_links` が 1 件以上ある場合のみエラーにする
- 複数 `plan_links` がある場合は、それぞれの計画に対して対象圃場整合性を検証する
@@ -645,27 +653,25 @@ MVP では少なくとも以下の 2 導線を持つ。
## 14. 未確定事項
### 14.1 work_type enum の最終一覧
### 14.1 work_type enum の初回実装範囲(確定)
今回の回答で方針は見えたが、初回実装でどこまで列挙するかは確定していない
MVP は現行アプリ対応の5種別のみで開始する
候補:
- `general`: 一般
- `fertilization`: 施肥
- `rice_transplant`: 田植え
- `delivery`: 運搬
- `levee_work`: 畔塗
- 一般
- 施肥
- 田植え
- 運搬
- 畔塗
- 防除
- 計画非紐づき実績系
`pesticide`(防除)は農薬散布管理アプリ実装時に追加する。
### 14.2 完了時の自動生成レベル
### 14.2 完了時の実績連携レベル(確定)
MVP で以下のどこまでやるかは実装前に決める。
MVP **B. 実績入力画面への導線生成** を採用する。
- A. 完了ステータス変更のみ
- B. 実績入力画面への導線生成
- C. TODO 情報を使った実績レコード仮生成
- A. 完了ステータス変更のみ → 採用しない
- **B. 実績入力画面への導線生成 → 採用**
- C. TODO 情報を使った実績レコード仮生成 → 後続検討
### 14.3 削除ポリシー
@@ -700,7 +706,7 @@ MVP では以下を前提とする。
- TODO は `year` を持つ
- 対象管理は `TodoTargetField` を正とする
- `work_type``general / fertilization / rice_transplant / delivery / levee_work / pesticide` を初期採用する
- `work_type``general / fertilization / rice_transplant / delivery / levee_work` を初期採用する`pesticide` は農薬散布管理アプリ実装時に追加)
- 計画リンクは明示 FK 方式で開始する
- 実績連携フラグ名は `should_link_record` を採用する
- 完了時はまず「実績入力画面への導線生成」を採用し、自動実績作成は後続検討とする