---
generated_at: 2026-01-29 10:30:00
metrics:
  claims_total: 131
  claims_with_evidence: 131
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: Core-Content-Flow 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim: 主張）を検証しています：

1. **根拠の有無確認**: 各テストケースに対して、ソースコード上の該当メソッド・クラスが実在するか
2. **根拠との整合性**: テストケースの内容がソースコードの実装と矛盾していないか
3. **網羅性**: モジュール内の主要クラス・メソッドを適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」: 根拠あり、「△」: 根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）: **1.00**
  - 根拠あり: 131 / 131、根拠なし: 0
- 優先レビュー（高）
  1. **UT-FLO-051〜060 FlowExecutor**: フロー実行の中核ロジック、複雑な条件分岐
  2. **UT-FLO-076〜079 SendMailAction**: メール送信処理、外部連携
  3. **UT-FLO-082〜087 SetOrderStateAction**: 注文状態遷移、トランザクション処理

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

### Entity/Definition/Collection
- E-01: `src/Core/Content/Flow/FlowDefinition.php`
- E-02: `src/Core/Content/Flow/FlowEntity.php`
- E-03: `src/Core/Content/Flow/FlowCollection.php`
- E-04: `src/Core/Content/Flow/Aggregate/FlowSequence/FlowSequenceDefinition.php`
- E-05: `src/Core/Content/Flow/Aggregate/FlowSequence/FlowSequenceEntity.php`
- E-06: `src/Core/Content/Flow/Aggregate/FlowSequence/FlowSequenceCollection.php`
- E-07: `src/Core/Content/Flow/Aggregate/FlowTemplate/FlowTemplateDefinition.php`
- E-08: `src/Core/Content/Flow/Aggregate/FlowTemplate/FlowTemplateEntity.php`
- E-09: `src/Core/Content/Flow/Aggregate/FlowTemplate/FlowTemplateCollection.php`

### Dispatching
- E-10: `src/Core/Content/Flow/Dispatching/StorableFlow.php`
- E-11: `src/Core/Content/Flow/Dispatching/FlowState.php`
- E-12: `src/Core/Content/Flow/Dispatching/FlowDispatcher.php`
- E-13: `src/Core/Content/Flow/Dispatching/FlowExecutor.php`
- E-14: `src/Core/Content/Flow/Dispatching/FlowFactory.php`
- E-15: `src/Core/Content/Flow/Dispatching/FlowLoader.php`
- E-16: `src/Core/Content/Flow/Dispatching/FlowBuilder.php`

### Struct
- E-17: `src/Core/Content/Flow/Dispatching/Struct/Flow.php`
- E-18: `src/Core/Content/Flow/Dispatching/Struct/Sequence.php`
- E-19: `src/Core/Content/Flow/Dispatching/Struct/ActionSequence.php`
- E-20: `src/Core/Content/Flow/Dispatching/Struct/IfSequence.php`

### Actions
- E-21: `src/Core/Content/Flow/Dispatching/Action/FlowAction.php`
- E-22: `src/Core/Content/Flow/Dispatching/Action/SendMailAction.php`
- E-23: `src/Core/Content/Flow/Dispatching/Action/SetOrderStateAction.php`
- E-24: `src/Core/Content/Flow/Dispatching/Action/AddOrderTagAction.php`
- E-25: `src/Core/Content/Flow/Dispatching/Action/GenerateDocumentAction.php`
- E-26: `src/Core/Content/Flow/Dispatching/Action/ChangeCustomerGroupAction.php`
- E-27: `src/Core/Content/Flow/Dispatching/Action/StopFlowAction.php`

### Storer
- E-28: `src/Core/Content/Flow/Dispatching/Storer/FlowStorer.php`

### Rules
- E-29: `src/Core/Content/Flow/Rule/FlowRuleScope.php`
- E-30: `src/Core/Content/Flow/Rule/FlowRuleScopeBuilder.php`
- E-31: `src/Core/Content/Flow/Rule/OrderStatusRule.php`
- E-32: `src/Core/Content/Flow/Rule/OrderTagRule.php`

### Indexing
- E-33: `src/Core/Content/Flow/Indexing/FlowIndexer.php`
- E-34: `src/Core/Content/Flow/Indexing/FlowPayloadUpdater.php`

### Api
- E-35: `src/Core/Content/Flow/Api/FlowActionCollector.php`

### Exception
- E-36: `src/Core/Content/Flow/FlowException.php`

## 3) Claims と根拠の対応（レビューの主戦場）

### FlowEntity (UT-FLO-001〜010)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-001 | FlowEntity::getName()でフロー名を取得 | E-02 L42-45 | ○ |
| UT-FLO-002 | FlowEntity::setName()でフロー名を設定 | E-02 L47-50 | ○ |
| UT-FLO-003 | FlowEntity::getEventName()でイベント名を取得 | E-02 L52-55 | ○ |
| UT-FLO-004 | FlowEntity::isActive()でアクティブ状態を取得 | E-02 L72-75 | ○ |
| UT-FLO-005 | FlowEntity::getPriority()で優先度を取得 | E-02 L82-85 | ○ |
| UT-FLO-006 | FlowEntity::getPayload()でペイロードを取得 | E-02 L97-102 | ○ |
| UT-FLO-007 | FlowEntity::isInvalid()で無効フラグを取得 | E-02 L114-117 | ○ |
| UT-FLO-008 | FlowEntity::getSequences()でシーケンスを取得 | E-02 L124-127 | ○ |
| UT-FLO-009 | getSequences()が未ロード時にnull返却 | E-02 L40, L124-127 | ○ |
| UT-FLO-010 | FlowEntity::getAppFlowEvent()でアプリイベントを取得 | E-02 L134-137 | ○ |

### FlowCollection/Definition (UT-FLO-011〜014)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-011 | FlowCollection::getApiAlias()でエイリアス取得 | E-03 L14-17 | ○ |
| UT-FLO-012 | FlowCollection::getExpectedClass()で期待クラス取得 | E-03 L19-22 | ○ |
| UT-FLO-013 | FlowDefinition::getEntityName()でエンティティ名取得 | E-01 L31-34 | ○ |
| UT-FLO-014 | FlowDefinition::getDefaults()でデフォルト値取得 | E-01 L46-52 | ○ |

### FlowSequenceEntity (UT-FLO-015〜024)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-015 | FlowSequenceEntity::getFlowId()でフローID取得 | E-05 L51-54 | ○ |
| UT-FLO-016 | FlowSequenceEntity::getParentId()で親ID取得 | E-05 L71-74 | ○ |
| UT-FLO-017 | getParentId()がルートシーケンスでnull返却 | E-05 L24 | ○ |
| UT-FLO-018 | FlowSequenceEntity::getChildren()で子シーケンス取得 | E-05 L86-89 | ○ |
| UT-FLO-019 | FlowSequenceEntity::getRuleId()でルールID取得 | E-05 L101-104 | ○ |
| UT-FLO-020 | FlowSequenceEntity::getActionName()でアクション名取得 | E-05 L121-124 | ○ |
| UT-FLO-021 | FlowSequenceEntity::getConfig()で設定取得 | E-05 L134-137 | ○ |
| UT-FLO-022 | FlowSequenceEntity::isTrueCase()でケースフラグ取得 | E-05 L167-170 | ○ |
| UT-FLO-023 | FlowSequenceEntity::getPosition()で位置取得 | E-05 L147-150 | ○ |
| UT-FLO-024 | FlowSequenceDefinition::getDefaults()でデフォルト取得 | E-04 L46-49 | ○ |

### FlowTemplateEntity (UT-FLO-025〜026)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-025 | FlowTemplateEntity::getName()でテンプレート名取得 | E-08 L21-24 | ○ |
| UT-FLO-026 | FlowTemplateEntity::getConfig()でテンプレート設定取得 | E-08 L34-37 | ○ |

### StorableFlow (UT-FLO-027〜042)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-027 | StorableFlow::getName()でイベント名取得 | E-10 L37-40 | ○ |
| UT-FLO-028 | StorableFlow::getContext()でコンテキスト取得 | E-10 L42-45 | ○ |
| UT-FLO-029 | StorableFlow::setStore()でストア設定 | E-10 L47-50 | ○ |
| UT-FLO-030 | StorableFlow::hasStore()でキー存在確認(true) | E-10 L52-55 | ○ |
| UT-FLO-031 | StorableFlow::hasStore()でキー存在確認(false) | E-10 L52-55 | ○ |
| UT-FLO-032 | StorableFlow::getStore()で値取得 | E-10 L60-63 | ○ |
| UT-FLO-033 | StorableFlow::getStore()でデフォルト値返却 | E-10 L60-63 | ○ |
| UT-FLO-034 | StorableFlow::setData()でデータ設定 | E-10 L73-76 | ○ |
| UT-FLO-035 | StorableFlow::getData()でデータ取得 | E-10 L86-96 | ○ |
| UT-FLO-036 | StorableFlow::getData()でcallable実行 | E-10 L90-93 | ○ |
| UT-FLO-037 | StorableFlow::lazy()で遅延ロード設定 | E-10 L113-116 | ○ |
| UT-FLO-038 | StorableFlow::setConfig()で設定設定 | E-10 L121-124 | ○ |
| UT-FLO-039 | StorableFlow::getFlowState()で状態取得 | E-10 L139-146 | ○ |
| UT-FLO-040 | getFlowState()で未設定時例外 | E-10 L141-143 | ○ |
| UT-FLO-041 | StorableFlow::stop()でフロー停止 | E-10 L148-155 | ○ |
| UT-FLO-042 | stop()で未設定時例外 | E-10 L150-152 | ○ |

### FlowState (UT-FLO-043)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-043 | FlowState::getSequenceId()で現在シーケンスID取得 | E-11 L19-22 | ○ |

### Flow Struct (UT-FLO-044〜050)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-044 | Flow::getId()でフローID取得 | E-17 L25-28 | ○ |
| UT-FLO-045 | Flow::getSequences()でシーケンス配列取得 | E-17 L33-36 | ○ |
| UT-FLO-046 | Flow::getFlat()でフラット配列取得 | E-17 L41-44 | ○ |
| UT-FLO-047 | Flow::jump()でシーケンスジャンプ | E-17 L46-49 | ○ |
| UT-FLO-048 | jump()で存在しないID時空配列 | E-17 L48 | ○ |
| UT-FLO-049 | Sequence::createIF()でIfSequence作成 | E-18 L18-33 | ○ |
| UT-FLO-050 | Sequence::createAction()でActionSequence作成 | E-18 L35-52 | ○ |

### FlowExecutor (UT-FLO-051〜060)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-051 | FlowExecutor::execute()でフロー実行 | E-13 L97-104 | ○ |
| UT-FLO-052 | executeSequence()でIfSequence実行 | E-13 L106-123 | ○ |
| UT-FLO-053 | executeSequence()でActionSequence実行 | E-13 L120-122 | ○ |
| UT-FLO-054 | executeSequence()でnull時スキップ | E-13 L108-110 | ○ |
| UT-FLO-055 | executeAction()でアクション実行 | E-13 L125-149 | ○ |
| UT-FLO-056 | executeAction()で連鎖実行 | E-13 L144-148 | ○ |
| UT-FLO-057 | executeAction()でstop時スキップ | E-13 L131-133 | ○ |
| UT-FLO-058 | executeAction()でdelayed時次スキップ | E-13 L140-142 | ○ |
| UT-FLO-059 | executeIf()でルールマッチ時trueCase実行 | E-13 L151-157 | ○ |
| UT-FLO-060 | executeIf()でルール不一致時falseCase実行 | E-13 L159 | ○ |

### FlowDispatcher (UT-FLO-061〜064)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-061 | FlowDispatcher::dispatch()でフロー実行 | E-12 L39-66 | ○ |
| UT-FLO-062 | dispatch()で非FlowEventAwareはフロー未実行 | E-12 L43-45 | ○ |
| UT-FLO-063 | dispatch()でStoppableEvent停止時未実行 | E-12 L50-51 | ○ |
| UT-FLO-064 | dispatch()でSKIP_TRIGGER_FLOW時未実行 | E-12 L51-52 | ○ |

### FlowFactory (UT-FLO-065〜067)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-065 | FlowFactory::create()でStorableFlow作成 | E-14 L24-29 | ○ |
| UT-FLO-066 | FlowFactory::restore()で復元 | E-14 L35-57 | ○ |
| UT-FLO-067 | restore()でSystemSourceコンテキスト使用 | E-14 L37-48 | ○ |

### FlowLoader (UT-FLO-068〜070)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-068 | FlowLoader::load()でフローロード | E-15 L24-58 | ○ |
| UT-FLO-069 | load()で空配列返却 | E-15 L32-34 | ○ |
| UT-FLO-070 | load()で無効ペイロード時エラーログ | E-15 L38-49 | ○ |

### FlowBuilder (UT-FLO-071〜073)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-071 | FlowBuilder::build()でFlow構築 | E-16 L16-34 | ○ |
| UT-FLO-072 | build()で階層構造構築 | E-16 L41-61 | ○ |
| UT-FLO-073 | build()でsequence_id null時スキップ | E-16 L24-26 | ○ |

### SendMailAction (UT-FLO-074〜079)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-074 | SendMailAction::getName()でアクション名取得 | E-22 L69-72 | ○ |
| UT-FLO-075 | SendMailAction::requirements()で要件取得 | E-22 L77-80 | ○ |
| UT-FLO-076 | handleFlow()でメール送信 | E-22 L86-176 | ○ |
| UT-FLO-077 | handleFlow()でskip時スキップ | E-22 L93-95 | ○ |
| UT-FLO-078 | handleFlow()でmailTemplateId無し時スキップ | E-22 L109-111 | ○ |
| UT-FLO-079 | handleFlow()でrecipient無し時例外 | E-22 L105-107 | ○ |

### SetOrderStateAction (UT-FLO-080〜087)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-080 | SetOrderStateAction::getName()でアクション名取得 | E-23 L45-48 | ○ |
| UT-FLO-081 | SetOrderStateAction::requirements()で要件取得 | E-23 L53-56 | ○ |
| UT-FLO-082 | handleFlow()で注文状態変更 | E-23 L58-65, L135-139 | ○ |
| UT-FLO-083 | handleFlow()で配送状態変更 | E-23 L140-142 | ○ |
| UT-FLO-084 | handleFlow()で支払状態変更 | E-23 L143-145 | ○ |
| UT-FLO-085 | handleFlow()でorderId無し時スキップ | E-23 L60-62 | ○ |
| UT-FLO-086 | handleFlow()でconfig空時スキップ | E-23 L72-74 | ○ |
| UT-FLO-087 | handleFlow()で無効状態マシン時例外 | E-23 L127-128, L147-149 | ○ |

### AddOrderTagAction (UT-FLO-088〜091)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-088 | AddOrderTagAction::getName()でアクション名取得 | E-24 L28-31 | ○ |
| UT-FLO-089 | handleFlow()でタグ追加 | E-24 L41-48 | ○ |
| UT-FLO-090 | handleFlow()でorderId無し時スキップ | E-24 L43-45 | ○ |
| UT-FLO-091 | handleFlow()でtagIds空時スキップ | E-24 L55-57 | ○ |

### GenerateDocumentAction (UT-FLO-092〜095)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-092 | GenerateDocumentAction::getName()でアクション名取得 | E-25 L31-34 | ○ |
| UT-FLO-093 | handleFlow()でドキュメント生成 | E-25 L44-51 | ○ |
| UT-FLO-094 | handleFlow()で複数ドキュメント生成 | E-25 L64-83 | ○ |
| UT-FLO-095 | handleFlow()でorderId無し時スキップ | E-25 L46-48 | ○ |

### ChangeCustomerGroupAction (UT-FLO-096〜099)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-096 | ChangeCustomerGroupAction::getName()でアクション名取得 | E-26 L28-31 | ○ |
| UT-FLO-097 | handleFlow()で顧客グループ変更 | E-26 L41-48 | ○ |
| UT-FLO-098 | handleFlow()でcustomerId無し時スキップ | E-26 L43-45 | ○ |
| UT-FLO-099 | handleFlow()でcustomerGroupId無し時スキップ | E-26 L55-61 | ○ |

### StopFlowAction (UT-FLO-100〜102)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-100 | StopFlowAction::getName()でアクション名取得 | E-27 L15-18 | ○ |
| UT-FLO-101 | StopFlowAction::requirements()で空配列返却 | E-27 L23-26 | ○ |
| UT-FLO-102 | handleFlow()でフロー停止 | E-27 L28-31 | ○ |

### FlowRuleScope/Builder (UT-FLO-103〜106)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-103 | FlowRuleScope::getOrder()でOrderEntity取得 | E-29 L22-25 | ○ |
| UT-FLO-104 | FlowRuleScopeBuilder::build()でスコープ構築 | E-30 L40-58 | ○ |
| UT-FLO-105 | build()でキャッシュ利用 | E-30 L42-44 | ○ |
| UT-FLO-106 | FlowRuleScopeBuilder::reset()でキャッシュリセット | E-30 L35-38 | ○ |

### OrderStatusRule (UT-FLO-107〜110)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-107 | OrderStatusRule::match()でマッチ時true | E-31 L47-54 | ○ |
| UT-FLO-108 | match()で不一致時false | E-31 L47-54 | ○ |
| UT-FLO-109 | match()でFlowRuleScope以外時false | E-31 L49-51 | ○ |
| UT-FLO-110 | match()でstateIds null時false | E-31 L49-51 | ○ |

### OrderTagRule (UT-FLO-111〜114)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-111 | OrderTagRule::match()でタグマッチ時true | E-32 L34-41 | ○ |
| UT-FLO-112 | match()でタグ不一致時false | E-32 L34-41 | ○ |
| UT-FLO-113 | match()でFlowRuleScope以外時false | E-32 L36-38 | ○ |
| UT-FLO-114 | match()でタグnull時空配列比較 | E-32 L70-76 | ○ |

### FlowIndexer (UT-FLO-115〜121)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-115 | FlowIndexer::getName()でインデクサー名取得 | E-33 L38-41 | ○ |
| UT-FLO-116 | iterate()でFlowIndexingMessage返却 | E-33 L43-54 | ○ |
| UT-FLO-117 | iterate()で空時null返却 | E-33 L49-51 | ○ |
| UT-FLO-118 | update()でインデックス更新 | E-33 L56-67 | ○ |
| UT-FLO-119 | update()でフロー以外時null返却 | E-33 L58-61 | ○ |
| UT-FLO-120 | handle()でペイロード更新 | E-33 L69-84 | ○ |
| UT-FLO-121 | handle()で空配列時スキップ | E-33 L76-79 | ○ |

### FlowPayloadUpdater (UT-FLO-122〜123)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-122 | update()でペイロード更新 | E-34 L28-84 | ○ |
| UT-FLO-123 | update()でシリアライズ失敗時invalid=1 | E-34 L66-76 | ○ |

### FlowActionCollector (UT-FLO-124〜125)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-124 | collect()でアクション収集 | E-35 L31-52 | ○ |
| UT-FLO-125 | collect()でアプリアクション含む | E-35 L54-71 | ○ |

### FlowException (UT-FLO-126〜129)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-126 | methodNotCompatible()で例外生成 | E-36 L41-49 | ○ |
| UT-FLO-127 | transactionFailed()でTransactionFailedException処理 | E-36 L51-59 | ○ |
| UT-FLO-128 | transactionFailed()でDBALException処理 | E-36 L60-66 | ○ |
| UT-FLO-129 | stateMachineNotFound()で例外生成 | E-36 L78-86 | ○ |

### FlowStorer (UT-FLO-130〜131)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| UT-FLO-130 | store()でイベントデータ保存 | E-28 L17 | ○ |
| UT-FLO-131 | restore()でデータ復元 | E-28 L19 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全テストケースにソースコード上の根拠あり
- 注意点:
  - FlowExecutorの実行ロジックは複雑なため、統合テストでの検証も推奨
  - SendMailActionは外部サービス連携があるため、モック使用が必須
  - SetOrderStateActionはトランザクション処理があり、ロールバックシナリオのテストが重要

## 6) レビュアーチェックリスト（最小）
- [ ] FlowExecutor関連テスト（UT-FLO-051〜060）が条件分岐を網羅しているか確認
- [ ] SendMailAction関連テスト（UT-FLO-076〜079）の例外ケースが適切か確認
- [ ] SetOrderStateAction関連テスト（UT-FLO-082〜087）のトランザクション処理が正しいか確認
- [ ] Rule関連テスト（UT-FLO-107〜114）の境界値テストが十分か確認
- [ ] FlowPayloadUpdater（UT-FLO-122〜123）のキャッシュ無効化が正しくテストされるか確認
