# 状態遷移表・更新ルールひな形（記入例）

架空企業「みらい業務サービス」の社内依頼・承認管理アプリの例。実在する会社・案件・人物は含まない。
記事「状態遷移表を作り、二重処理と失敗時の扱いを決める」（05-02）の本文で使った内容をまとめたもの。空欄版は `05-02-state-rules_template.md`。

## 1. 状態遷移表・更新ルール

| 現在の状態 | 操作 | 実行者 | 条件 | 次の状態 | 履歴 | 失敗時の扱い |
|---|---|---|---|---|---|---|
| 下書き | 提出 | 依頼者本人 | 必須項目と有効な承認者がそろっている | 提出済み | 操作＝提出、操作者＝依頼者、時刻を記録 | 状態変更と履歴追加のどちらかだけが完了した場合、正常完了として扱わず、両方とも行われなかった状態に戻す |
| 差戻し | 再提出 | 依頼者本人 | 修正し、提出条件を満たしている | 提出済み | 操作＝再提出、操作者＝依頼者、時刻を記録 | 同上 |
| 提出済み | 承認 | 割り当てられた承認者 | 本人確認済み、自己承認でない、対象の状態が操作時にも有効 | 承認済み | 操作＝承認、操作者＝承認者、時刻を記録 | 同上。対象の状態が操作時にすでに変わっていた場合は拒否し、状態・履歴のどちらも変更しない |
| 提出済み | 差戻し | 割り当てられた承認者 | 差戻し理由がある、自己承認ではない | 差戻し | 操作＝差戻し、操作者＝承認者、時刻、備考＝差戻し理由 | 承認と同様 |

## 2. 同時更新・重複操作の扱い

| 状況 | 扱い |
|---|---|
| 承認者がボタンを2回連続で押す、または通信の再送で同じ承認操作が2回届く | 1回目で状態が変わった後、2回目は「対象の状態が操作時にも有効」という条件を満たさないため拒否する。履歴は1件のまま増えない |
| 割当外の承認者が同じ依頼に操作しようとする | 権限により拒否する |

## 3. 完了条件の確認

- [x] 遷移表が前提となる設計と一致している
- [x] 各遷移に履歴の内容と失敗時の扱いがある
- [x] 同時更新と重複操作の扱いが書かれている

## 4. 次工程へ渡すもの

- [x] 状態遷移表・更新ルール（第1〜2節）
- [ ] 承認者：総務課長（架空）— 記入例のため未承認の扱い
