---
generated_at: 2026-02-25 10:50:00
metrics:
  claims_total: 16
  claims_with_evidence: 16
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：5-イベント通知（コメント作成）

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：16 / 16、根拠なし：0
- 優先レビュー（高）
  - 特になし（全ての主張に根拠あり）

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

- E-01: `app/models/notifier/comment_event_notifier.rb` 1-12行目
- E-02: `app/models/notifier.rb` 4-48行目
- E-03: `app/models/notification.rb` 1-69行目
- E-04: `app/models/concerns/notifiable.rb` 1-22行目
- E-05: `app/models/notification_pusher.rb` 48-53行目, 109-111行目, 117-123行目
- E-06: `db/schema.rb` 252-260行目（comments）
- E-07: `app/models/event.rb` 1-44行目

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | comment_createdアクションでCommentEventNotifierが使用される | E-02（8行目: `"Notifier::#{source.eventable.class}EventNotifier"`で動的生成） | ○ |
| C-02 | 受信者はcard.watchersからcreatorとmentionees除外 | E-01（6行目: `card.watchers.without(creator, *source.eventable.mentionees)`） | ○ |
| C-03 | cardはsource.eventable.card経由で取得 | E-01（9-11行目: `def card; source.eventable.card; end`） | ○ |
| C-04 | 通知は非同期（Active Job）で送信される | E-04（19-21行目: `NotifyRecipientsJob.perform_later self`） | ○ |
| C-05 | システムユーザーの場合は通知しない | E-02（45-47行目: `!creator.system?`） | ○ |
| C-06 | プッシュ通知タイトルは"RE: {カードタイトル}" | E-05（50行目: `title: "RE: #{base_payload[:title]}"`） | ○ |
| C-07 | プッシュ通知本文はコメント抜粋（200文字） | E-05（51行目: `body: comment_notification_body(event)`, 109-111行目: `format_excerpt(event.eventable.body, length: 200)`） | ○ |
| C-08 | プッシュ通知パスはコメントアンカー付き | E-05（52行目: `path: card_path_with_comment_anchor(event.eventable)`, 117-123行目: `anchor: ActionView::RecordIdentifier.dom_id(comment)`） | ○ |
| C-09 | EventモデルはNotifiableをincludeしている | E-07（2行目: `include Notifiable`） | ○ |
| C-10 | 通知作成後にbundle処理が実行される | E-03（22行目: `after_create :bundle`） | ○ |
| C-11 | Turbo Streamでリアルタイム配信される | E-03（25-27行目: `broadcast_prepend_later_to`） | ○ |
| C-12 | creatorはsource経由で取得される | E-01（2行目: `delegate :creator, to: :source`） | ○ |
| C-13 | commentsテーブルにcard_idカラムがある | E-06（258行目: `t.uuid "card_id"`） | ○ |
| C-14 | 通知はcreate_or_find_byで作成/更新される | E-02（19行目: `Notification.create_or_find_by`） | ○ |
| C-15 | mentionees除外によりメンション通知との重複を防ぐ | E-01（6行目: `*source.eventable.mentionees`で除外） | ○ |
| C-16 | CommentEventNotifierはNotifierを継承している | E-01（1行目: `class Notifier::CommentEventNotifier < Notifier`） | ○ |

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

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全ての主張がコードから明確に読み取れる

## 6) レビュアーチェックリスト（最小）
- [ ] CommentEventNotifierが正しく選択されることを確認（eventable.classがComment）
- [ ] mentionees除外によりメンション通知との重複がないことを確認
- [ ] コメント抜粋（200文字）の挙動をテストで確認
- [ ] コメントアンカーが正しく生成されることを確認
