---
generated_at: 2026-03-01 20:45:00
metrics:
  claims_total: 110
  claims_with_evidence: 110
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：plugin-search.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：110 / 110、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全てのテストケースにソースコード根拠あり

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

- E-01: `packages/plugin-search/src/index.ts` - プラグインのエントリポイント、searchPlugin関数
- E-02: `packages/plugin-search/src/types.ts` - 型定義（SearchPluginConfig, SanitizedSearchPluginConfig等）
- E-03: `packages/plugin-search/src/Search/index.ts` - generateSearchCollection関数
- E-04: `packages/plugin-search/src/Search/hooks/syncWithSearch.ts` - syncWithSearchフック
- E-05: `packages/plugin-search/src/Search/hooks/deleteFromSearch.ts` - deleteFromSearchフック
- E-06: `packages/plugin-search/src/utilities/syncDocAsSearchIndex.ts` - syncDocAsSearchIndex関数
- E-07: `packages/plugin-search/src/utilities/generateReindexHandler.ts` - generateReindexHandler関数
- E-08: `packages/plugin-search/src/Search/ui/ReindexButton/index.tsx` - ReindexButtonサーバーコンポーネント
- E-09: `packages/plugin-search/src/Search/ui/ReindexButton/index.client.tsx` - ReindexButtonClientコンポーネント
- E-10: `packages/plugin-search/src/Search/ui/LinkToDoc/index.tsx` - LinkToDocサーバーコンポーネント
- E-11: `packages/plugin-search/src/Search/ui/LinkToDoc/index.client.tsx` - LinkToDocClientコンポーネント
- E-12: `packages/plugin-search/src/Search/ui/ReindexButton/ReindexButtonLabel/index.tsx` - ReindexButtonLabelコンポーネント
- E-13: `packages/plugin-search/src/Search/ui/ReindexButton/types.ts` - ReindexButton型定義
- E-14: `packages/plugin-search/src/exports/types.ts` - 公開型定義
- E-15: `packages/plugin-search/src/exports/client.ts` - クライアントエクスポート

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

### searchPlugin関数（UT-SRC-001〜015）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | プラグイン設定が正しく適用される | E-01 (L11-84) | ○ |
| C-02 | localizeがtrueの場合にローカライズ設定が有効になる | E-01 (L18-22) | ○ |
| C-03 | localizeがfalseの場合にローカライズ設定が無効になる | E-01 (L18-22) | ○ |
| C-04 | localize未指定時にconfig.localizationに基づいて設定される | E-01 (L18-22) | ○ |
| C-05 | deleteDraftsのデフォルト値がtrue | E-01 (L33) | ○ |
| C-06 | syncDraftsのデフォルト値がfalse | E-01 (L36) | ○ |
| C-07 | reindexBatchSizeのデフォルト値が50 | E-01 (L35) | ○ |
| C-08 | reindexBatchSizeがカスタム値で設定できる | E-01 (L35) | ○ |
| C-09 | 対象コレクションにafterChangeフックが追加される | E-01 (L52-60) | ○ |
| C-10 | 対象コレクションにbeforeDeleteフックが追加される | E-01 (L62-65) | ○ |
| C-11 | searchコレクションが生成される | E-01 (L78) | ○ |
| C-12 | 既存のフックが保持される | E-01 (L53, L63) | ○ |
| C-13 | collectionsが空配列の場合の処理 | E-01 (L46) | ○ |
| C-14 | collections未指定の場合の処理 | E-01 (L45) | ○ |
| C-15 | config.collectionsがundefinedの場合 | E-01 (L24, L83) | ○ |

### generateSearchCollection関数（UT-SRC-016〜031）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | デフォルトのslugがsearch | E-03 (L12) | ○ |
| C-17 | カスタムslugが設定できる | E-03 (L12) | ○ |
| C-18 | titleフィールドが生成される | E-03 (L17-24) | ○ |
| C-19 | priorityフィールドが生成される | E-03 (L25-31) | ○ |
| C-20 | docフィールドが生成される | E-03 (L32-43) | ○ |
| C-21 | docUrlフィールドが生成される | E-03 (L44-55) | ○ |
| C-22 | localize設定がtitleフィールドに適用される | E-03 (L23) | ○ |
| C-23 | create権限がfalse | E-03 (L66) | ○ |
| C-24 | read権限がtrue | E-03 (L67) | ○ |
| C-25 | カスタムアクセス設定が適用される | E-03 (L68) | ○ |
| C-26 | reindexエンドポイントが生成される | E-03 (L96-100) | ○ |
| C-27 | カスタムフィールドが適用される | E-03 (L102-106) | ○ |
| C-28 | デフォルトラベルが設定される | E-03 (L107-112) | ○ |
| C-29 | カスタムラベルが適用される | E-03 (L107-112) | ○ |
| C-30 | ReindexButtonコンポーネントが設定される | E-03 (L73-82) | ○ |
| C-31 | collectionLabelsがundefinedの場合エラーがスローされる | E-03 (L58-60) | ○ |

### syncWithSearch関数（UT-SRC-032）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | syncDocAsSearchIndexが呼び出される | E-04 (L5-7) | ○ |

### deleteFromSearch関数（UT-SRC-033〜036）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | 検索インデックスからドキュメントが削除される | E-05 (L9-21) | ○ |
| C-34 | カスタムsearchSlugで削除が実行される | E-05 (L6) | ○ |
| C-35 | 正しいwhereクエリで削除が実行される | E-05 (L13-20) | ○ |
| C-36 | 削除エラー時にログが出力される | E-05 (L22-27) | ○ |

### syncDocAsSearchIndex関数（UT-SRC-037〜057）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | createオペレーションでドキュメントが作成される | E-06 (L110-121) | ○ |
| C-38 | updateオペレーションでドキュメントが更新される | E-06 (L123-206) | ○ |
| C-39 | beforeSync関数が呼び出される | E-06 (L66-87) | ○ |
| C-40 | beforeSyncの戻り値がdataToSaveに適用される | E-06 (L81-86) | ○ |
| C-41 | defaultPrioritiesが数値の場合に適用される | E-06 (L102-104) | ○ |
| C-42 | defaultPrioritiesが関数の場合に実行される | E-06 (L93-101) | ○ |
| C-43 | syncDrafts=falseでdraft以外が同期される | E-06 (L107) | ○ |
| C-44 | syncDrafts=falseでdraftが同期されない | E-06 (L107) | ○ |
| C-45 | syncDrafts=trueでdraftも同期される | E-06 (L107) | ○ |
| C-46 | deleteDrafts=trueでdraftが削除される | E-06 (L207-248) | ○ |
| C-47 | deleteDrafts=trueで公開版がある場合は削除されない | E-06 (L210-236) | ○ |
| C-48 | skipSync関数がtrueを返す場合に同期がスキップされる | E-06 (L22-40) | ○ |
| C-49 | skipSync関数がfalseを返す場合に同期が実行される | E-06 (L22-40) | ○ |
| C-50 | skipSync関数でエラー時に同期が続行される | E-06 (L34-39) | ○ |
| C-51 | 同一リクエスト内で重複同期が防止される | E-06 (L51-64) | ○ |
| C-52 | ローカライズ環境でlocaleが正しく設定される | E-06 (L20, L50) | ○ |
| C-53 | 重複する検索ドキュメントが削除される | E-06 (L146-165) | ○ |
| C-54 | update時に検索ドキュメントが存在しない場合は作成される | E-06 (L251-266) | ○ |
| C-55 | トラッシュされたドキュメントが検索から削除される | E-06 (L171-186) | ○ |
| C-56 | 同期エラー時にonSyncErrorが呼び出される | E-06 (L276-279) | ○ |
| C-57 | defaultPriorities関数でエラー時にログが出力される | E-06 (L96-101) | ○ |

### generateReindexHandler関数（UT-SRC-058〜085）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-58 | PayloadHandlerが返却される | E-07 (L21-23) | ○ |
| C-59 | 正常なリクエストで200レスポンスが返却される | E-07 (L228) | ○ |
| C-60 | 成功メッセージが返却される | E-07 (L217-222) | ○ |
| C-61 | req.jsonがundefinedの場合400エラーが返却される | E-07 (L25-27) | ○ |
| C-62 | 権限がない場合401エラーが返却される | E-07 (L70-72) | ○ |
| C-63 | 無効なコレクションの場合400エラーが返却される | E-07 (L74-77) | ○ |
| C-64 | collectionsが空配列の場合400エラーが返却される | E-07 (L59) | ○ |
| C-65 | delete権限とupdate権限が確認される | E-07 (L41) | ○ |
| C-66 | カスタムcreate権限がある場合にチェックされる | E-07 (L43-46) | ○ |
| C-67 | カスタムread権限がある場合にチェックされる | E-07 (L48-51) | ○ |
| C-68 | 有効なコレクションがtrueを返す | E-07 (L57-61) | ○ |
| C-69 | 無効なコレクションがfalseを返す | E-07 (L57-61) | ○ |
| C-70 | ドキュメント数が正しくカウントされる | E-07 (L96-104) | ○ |
| C-71 | drafts=trueで全ドキュメントがカウントされる | E-07 (L101) | ○ |
| C-72 | drafts=falseでpublishedのみカウントされる | E-07 (L101) | ○ |
| C-73 | 既存のインデックスが削除される | E-07 (L106-114) | ○ |
| C-74 | バッチ処理でドキュメントが再インデックスされる | E-07 (L116-194) | ○ |
| C-75 | 各ロケールでsyncDocAsSearchIndexが呼び出される | E-07 (L147-191) | ○ |
| C-76 | skipSyncがtrueの場合にロケールがスキップされる | E-07 (L156-175) | ○ |
| C-77 | 最初の許可されたロケールでcreate、以降はupdateが使用される | E-07 (L153, L178-179) | ○ |
| C-78 | トランザクションが開始される | E-07 (L196) | ○ |
| C-79 | 成功時にトランザクションがコミットされる | E-07 (L224-226) | ○ |
| C-80 | エラー時にトランザクションがキルされる | E-07 (L211-213) | ○ |
| C-81 | 処理エラー時に500レスポンスが返却される | E-07 (L214) | ○ |
| C-82 | skipSyncエラー時にログが出力され処理が続行される | E-07 (L165-170) | ○ |
| C-83 | CORSヘッダーが設定される | E-07 (L64-68) | ○ |
| C-84 | 複数コレクションが並列で処理される | E-07 (L199-209) | ○ |
| C-85 | syncDrafts=falseでskips数が正しく計算される | E-07 (L220) | ○ |

### UIコンポーネント（UT-SRC-086〜110）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-86 | ReindexButtonClientが描画される | E-08 (L27-33) | ○ |
| C-87 | コレクションラベルが解決される | E-08 (L9-25) | ○ |
| C-88 | pluralLabelが関数の場合に実行される | E-08 (L14-17) | ○ |
| C-89 | pluralLabelがない場合にslugが使用される | E-08 (L22-23) | ○ |
| C-90 | Popupコンポーネントが描画される | E-09 (L127-147) | ○ |
| C-91 | reindex APIが呼び出される | E-09 (L48-60) | ○ |
| C-92 | 成功時にtoast.successが表示される | E-09 (L66-67) | ○ |
| C-93 | 成功時にrouter.refreshが呼び出される | E-09 (L68) | ○ |
| C-94 | 失敗時にtoast.errorが表示される | E-09 (L64-65) | ○ |
| C-95 | reindexCollectionsが空の場合に早期リターン | E-09 (L44-46) | ○ |
| C-96 | 単一コレクションが配列に変換される | E-09 (L79) | ○ |
| C-97 | 配列がそのまま設定される | E-09 (L79) | ○ |
| C-98 | 文字列ラベルがそのまま返却される | E-09 (L96-97) | ○ |
| C-99 | ローカライズラベルが現在のロケールで返却される | E-09 (L98-99) | ○ |
| C-100 | ラベルがない場合にslugが返却される | E-09 (L99) | ○ |
| C-101 | 全コレクション選択時に正しいモーダルタイトルが表示される | E-09 (L115-119) | ○ |
| C-102 | 一部コレクション選択時に正しいモーダルタイトルが表示される | E-09 (L118-121) | ○ |
| C-103 | LinkToDocClientが描画される | E-10 (L7-9) | ○ |
| C-104 | docフィールドの値からURLが生成される | E-11 (L23-27) | ○ |
| C-105 | relationToがない場合にnullが返却される | E-11 (L19-21) | ○ |
| C-106 | valueがない場合にnullが返却される | E-11 (L19-21) | ○ |
| C-107 | Linkコンポーネントが正しいhrefで描画される | E-11 (L49-51) | ○ |
| C-108 | CopyToClipboardコンポーネントが描画される | E-11 (L40) | ○ |
| C-109 | Pillコンポーネントが描画される | E-12 (L8-10) | ○ |
| C-110 | 翻訳されたreindexテキストが表示される | E-12 (L9) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースに対してソースコード内に根拠を確認済み

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコードに基づいて生成されており、根拠が明確

### 考慮事項
- UIコンポーネント（ReindexButtonClient, LinkToDocClient等）はReactコンポーネントであり、テスト実行にはReact Testing Libraryが必要
- generateReindexHandler関数は複雑なロジックを含み、モックの設定が重要
- トランザクション処理（initTransaction, commitTransaction, killTransaction）のテストには特別な設定が必要な場合がある

## 6) レビュアーチェックリスト（最小）
- [ ] UT-SRC-031: collectionLabelsがundefinedの場合のエラーハンドリングが実際のコードと一致しているか確認
- [ ] UT-SRC-046〜047: ドラフト削除ロジックの条件分岐が正確にテストされているか確認
- [ ] UT-SRC-058〜085: generateReindexHandlerの権限検証ロジックが網羅的にテストされているか確認
- [ ] UT-SRC-074〜077: バッチ処理とロケール処理の組み合わせテストが適切か確認
- [ ] UIコンポーネントのテストケースがReactコンポーネントのテストパターンに従っているか確認
