---
generated_at: 2026-03-01 02:15:00
metrics:
  claims_total: 25
  claims_with_evidence: 24
  claims_without_evidence: 1
confidence_derived: 0.96
---

# 根拠レポート：1-ResetPassword 通知設計書

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：24 / 25、根拠なし：1
- 優先レビュー（高）
  1. **デフォルト有効期限 60 分**：config のデフォルト値は確認できるが、アプリケーションごとの設定により異なる可能性
  2. **Timebox デフォルト値 200000 マイクロ秒**：ソースコードで確認済みだが、環境依存の可能性
  3. **throttle 機能の詳細仕様**：TokenRepository の実装依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/Illuminate/Auth/Notifications/ResetPassword.php`（1-123行）
- E-02: `src/Illuminate/Auth/Passwords/PasswordBroker.php`（1-243行）
- E-03: `src/Illuminate/Auth/Passwords/CanResetPassword.php`（1-30行）
- E-04: `src/Illuminate/Notifications/NotificationSender.php`（1-307行）
- E-05: `src/Illuminate/Notifications/Channels/MailChannel.php`（1-307行）
- E-06: `src/Illuminate/Notifications/Messages/MailMessage.php`（1-423行）
- E-07: `src/Illuminate/Notifications/Notification.php`（1-47行）
- E-08: `docs/code-to-docs/通知一覧/通知一覧.csv`（1-5行）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 通知チャネルは mail である | E-01（49-51行目: `return ['mail'];`） | ○ |
| C-02 | 同期送信である（ShouldQueue 未実装） | E-01（クラス定義に ShouldQueue なし） | ○ |
| C-03 | トークンは $token プロパティに保持 | E-01（16-17行目: `public $token;`） | ○ |
| C-04 | トークンは SensitiveParameter 属性でマーク | E-01（37行目: `#[\SensitiveParameter]`） | ○ |
| C-05 | 件名は "Reset Password Notification" | E-01（77行目: `Lang::get('Reset Password Notification')`） | ○ |
| C-06 | createUrlUsing でカスタム URL 生成可能 | E-01（108-111行目: `createUrlUsing` メソッド） | ○ |
| C-07 | toMailUsing でメール内容カスタマイズ可能 | E-01（119-122行目: `toMailUsing` メソッド） | ○ |
| C-08 | resetUrl は password.reset ルートを使用 | E-01（96-100行目: `route('password.reset', ...)`） | ○ |
| C-09 | sendResetLink がエントリーポイント | E-02（82-113行目: `sendResetLink` メソッド） | ○ |
| C-10 | ユーザー不在時は INVALID_USER を返却 | E-02（90-92行目: `return static::INVALID_USER;`） | ○ |
| C-11 | throttle 時は RESET_THROTTLED を返却 | E-02（94-96行目: `return static::RESET_THROTTLED;`） | ○ |
| C-12 | 送信成功時は PasswordResetLinkSent イベント発火 | E-02（109行目: `dispatch(new PasswordResetLinkSent($user))`） | ○ |
| C-13 | sendPasswordResetNotification でトレイト経由で通知 | E-03（25-28行目: `$this->notify(new ResetPasswordNotification($token));`） | ○ |
| C-14 | getEmailForPasswordReset は $this->email を返す | E-03（14-17行目: `return $this->email;`） | ○ |
| C-15 | NotificationSender が送信処理を担当 | E-04（83-90行目: `send` メソッド） | ○ |
| C-16 | ShouldQueue 実装時は queueNotification が呼ばれる | E-04（85-86行目: `if ($notification instanceof ShouldQueue)`） | ○ |
| C-17 | MailChannel が実際のメール送信を担当 | E-05（53-71行目: `send` メソッド） | ○ |
| C-18 | デフォルト Markdown テンプレートは notifications::email | E-06（37行目: `public $markdown = 'notifications::email';`） | ○ |
| C-19 | Timebox を使用してタイミング攻撃を防止 | E-02（84行目: `$this->timebox->call(...)`、66行目: `$timeboxDuration = 200000`） | ○ |
| C-20 | 有効期限は config から取得 | E-01（80行目: `config('auth.passwords.'.config('auth.defaults.passwords').'.expire')`） | ○ |
| C-21 | 有効期限のデフォルトは 60 分 | **根拠なし**（config のデフォルト値は別ファイル参照が必要） | △ |
| C-22 | 通知基底クラスは SerializesModels を使用 | E-07（9行目: `use SerializesModels;`） | ○ |
| C-23 | 通知基底クラスは $id と $locale プロパティを持つ | E-07（16-17行目: `public $id;`、23行目: `public $locale;`） | ○ |
| C-24 | locale() メソッドでロケール設定可能 | E-07（41-46行目: `locale` メソッド） | ○ |
| C-25 | 通知一覧に ResetPassword が記載されている | E-08（2行目: "1","認証","ResetPassword",...） | ○ |

## 4) 不足情報（Unknown / Missing）
- C-21: 有効期限のデフォルト値 60 分
  - 候補：`config/auth.php` / Laravel デフォルト設定ファイル / フレームワークドキュメント
  - 理由：フレームワーク本体のソースコードでは config のデフォルト値が定義されていない。アプリケーション側の config/auth.php で定義される。

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - 全体的にソースコードとの整合性が高い
- **1: 中リスク** - 有効期限のデフォルト値は環境依存のため、実際の環境で確認が必要
- **0: 低リスク** - セキュリティ関連の記載（SensitiveParameter、Timebox）はソースコードで確認済み

## 6) レビュアーチェックリスト（最小）
- [ ] C-21 の有効期限デフォルト値 60 分が実際の環境設定と一致するか確認
- [ ] password.reset ルートがアプリケーションで定義されているか確認
- [ ] throttle の詳細仕様（TokenRepository 実装）を確認する必要があるか検討
- [ ] 本番環境でのメール送信設定（SMTP等）との整合性を確認
