---
generated_at: 2026-03-01 10:00:00
metrics:
  claims_total: 140
  claims_with_evidence: 138
  claims_without_evidence: 2
confidence_derived: 0.99
---

# 根拠レポート：plugin-import-export単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.99**
  - 根拠あり：138 / 140、根拠なし：2
- 優先レビュー（高）
  1. **UT-PIE-047（getFilename）**：日付フォーマットの実装詳細を確認
  2. **UT-PIE-062/063（getFileFromDoc）**：ファイル取得の実装詳細を確認

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

- E-01: `packages/plugin-import-export/src/index.ts`
- E-02: `packages/plugin-import-export/src/types.ts`
- E-03: `packages/plugin-import-export/src/constants.ts`
- E-04: `packages/plugin-import-export/src/utilities/parseCSV.ts`
- E-05: `packages/plugin-import-export/src/utilities/parseJSON.ts`
- E-06: `packages/plugin-import-export/src/utilities/flattenObject.ts`
- E-07: `packages/plugin-import-export/src/utilities/unflattenObject.ts`
- E-08: `packages/plugin-import-export/src/utilities/fieldToRegex.ts`
- E-09: `packages/plugin-import-export/src/utilities/buildDisabledFieldRegex.ts`
- E-10: `packages/plugin-import-export/src/utilities/getSchemaColumns.ts`
- E-11: `packages/plugin-import-export/src/utilities/getFilename.ts`
- E-12: `packages/plugin-import-export/src/utilities/resolveLimit.ts`
- E-13: `packages/plugin-import-export/src/utilities/validateLimitValue.ts`
- E-14: `packages/plugin-import-export/src/utilities/collectDisabledFieldPaths.ts`
- E-15: `packages/plugin-import-export/src/utilities/getFlattenedFieldKeys.ts`
- E-16: `packages/plugin-import-export/src/utilities/getFileFromDoc.ts`
- E-17: `packages/plugin-import-export/src/utilities/getSelect.ts`
- E-18: `packages/plugin-import-export/src/utilities/removeDisabledFields.ts`
- E-19: `packages/plugin-import-export/src/utilities/setNestedValue.ts`
- E-20: `packages/plugin-import-export/src/utilities/processRichTextField.ts`
- E-21: `packages/plugin-import-export/src/utilities/sortHelpers.ts`
- E-22: `packages/plugin-import-export/src/utilities/useBatchProcessor.ts`
- E-23: `packages/plugin-import-export/src/utilities/getPluginCollections.ts`
- E-24: `packages/plugin-import-export/src/utilities/getExportFieldFunctions.ts`
- E-25: `packages/plugin-import-export/src/utilities/getImportFieldFunctions.ts`
- E-26: `packages/plugin-import-export/src/export/createExport.ts`
- E-27: `packages/plugin-import-export/src/export/handleDownload.ts`
- E-28: `packages/plugin-import-export/src/export/handlePreview.ts`
- E-29: `packages/plugin-import-export/src/export/batchProcessor.ts`
- E-30: `packages/plugin-import-export/src/import/createImport.ts`
- E-31: `packages/plugin-import-export/src/import/handlePreview.ts`
- E-32: `packages/plugin-import-export/src/import/batchProcessor.ts`

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | importExportPluginがコレクションを追加する | E-01 (L39-49) | ○ |
| C-02 | ImportExportProviderが追加される | E-01 (L55-57) | ○ |
| C-03 | 翻訳がマージされる | E-01 (L196-207) | ○ |
| C-04 | collections未定義時に空配列初期化 | E-01 (L39-41) | ○ |
| C-05 | export: falseでメニュー非追加 | E-01 (L97-117) | ○ |
| C-06 | import: falseでメニュー非追加 | E-01 (L97-128) | ○ |
| C-07 | parseCSVがCSVをパースする | E-04 (L14-76) | ○ |
| C-08 | 'true'がbooleanに変換される | E-04 (L26-27) | ○ |
| C-09 | 'false'がbooleanに変換される | E-04 (L28-30) | ○ |
| C-10 | 'null'/'NULL'がnullに変換される | E-04 (L33-36) | ○ |
| C-11 | 数値文字列がnumberに変換される | E-04 (L43-48) | ○ |
| C-12 | 空文字列がundefinedに変換される | E-04 (L22-24) | ○ |
| C-13 | カンマを含む値が保持される | E-04 (L38-40) | ○ |
| C-14 | 空CSVで空配列が返る | E-04 | ○ |
| C-15 | parseJSONがJSON配列をパースする | E-05 (L14-23) | ○ |
| C-16 | 配列でないJSONでAPIError | E-05 (L19-21) | ○ |
| C-17 | 不正JSONでAPIError | E-05 (L28-29) | ○ |
| C-18 | Buffer入力が処理される | E-05 (L16) | ○ |
| C-19 | ネストオブジェクトがフラット化される | E-06 (L37-149) | ○ |
| C-20 | 配列がインデックス付きでフラット化 | E-06 (L78-98) | ○ |
| C-21 | blockTypeを含むブロックがフラット化 | E-06 (L80-91) | ○ |
| C-22 | toCSV関数が適用される | E-06 (L45-76, 100-122) | ○ |
| C-23 | fields引数でフィルタリング | E-06 (L32-36, 153-180) | ○ |
| C-24 | 空オブジェクトで空オブジェクト返却 | E-06 | ○ |
| C-25 | polymorphic relationshipがフラット化 | E-06 (L83-91) | ○ |
| C-26 | unflattenObjectがネスト構造に復元 | E-07 (L27-330) | ○ |
| C-27 | 配列インデックスが復元される | E-07 (L233-288) | ○ |
| C-28 | _statusが分割されずに保持 | E-07 (L66-69) | ○ |
| C-29 | polymorphic relationshipが復元 | E-07 (L72-119, 165-229) | ○ |
| C-30 | fromCSV関数が適用される | E-07 (L122-128) | ○ |
| C-31 | null/undefinedで空オブジェクト | E-07 (L33-35) | ○ |
| C-32 | localizedフィールドがロケール構造に | E-07 (L377-407) | ○ |
| C-33 | hasMany numberがカンマ区切りから配列に | E-07 (L409-452) | ○ |
| C-34 | fieldToRegexが単純パスでRegex生成 | E-08 (L13-33) | ○ |
| C-35 | ネストパスでRegex生成 | E-08 (L14-32) | ○ |
| C-36 | 配列インデックスにマッチ | E-08 (L22-23) | ○ |
| C-37 | buildDisabledFieldRegexがブロックスラグ対応 | E-09 (L13-38) | ○ |
| C-38 | ネストdisabledフィールドにマッチ | E-09 | ○ |
| C-39 | getSchemaColumnsがカラム名導出 | E-10 (L40-81) | ○ |
| C-40 | idカラムが先頭に追加 | E-10 (L56-59) | ○ |
| C-41 | disabledFieldsが除外される | E-10 (L65-78) | ○ |
| C-42 | selectedFieldsでフィルタリング | E-10 (L61-63) | ○ |
| C-43 | mergeColumnsでマージ | E-10 (L88-157) | ○ |
| C-44 | 配列インデックスカラムの順序 | E-10 (L119-133) | ○ |
| C-45 | filterToSelectedFieldsで選択 | E-10 (L168-203) | ○ |
| C-46 | コンテナフィールドの子が展開 | E-10 (L191-199) | ○ |
| C-47 | getFilenameがYYYY-MM-DD_HH-MM-SS形式 | E-11 (L5-11) | △ |
| C-48 | resolveLimitで数値がそのまま返却 | E-12 (L19-25) | ○ |
| C-49 | 関数limitが呼び出される | E-12 (L27) | ○ |
| C-50 | undefinedでundefined返却 | E-12 (L19-21) | ○ |
| C-51 | validateLimitValueで正の数値がundefined | E-13 (L3-12) | ○ |
| C-52 | 負の数値でエラーメッセージ | E-13 (L7-8) | ○ |
| C-53 | 0でundefined | E-13 (L7) | ○ |
| C-54 | collectDisabledFieldPathsがパス収集 | E-14 (L18-82) | ○ |
| C-55 | ネストパスがドット記法で収集 | E-14 (L67, 74) | ○ |
| C-56 | namedタブ内のフィールド収集 | E-14 (L24-45) | ○ |
| C-57 | getFlattenedFieldKeysがキー生成 | E-15 (L27-134) | ○ |
| C-58 | 配列フィールドがインデックス0で生成 | E-15 (L65-72) | ○ |
| C-59 | blocksフィールドがブロックタイプキー生成 | E-15 (L74-86) | ○ |
| C-60 | localizedフィールドがlocale展開 | E-15 (L53-62) | ○ |
| C-61 | disabledフィールドがスキップ | E-15 (L37-44) | ○ |
| C-62 | ローカルストレージからファイル取得 | E-16 (L36-54) | △ |
| C-63 | クラウドストレージからファイル取得 | E-16 (L57-89) | ○ |
| C-64 | ファイル不存在でエラー | E-16 (L41-43) | ○ |
| C-65 | filename/url欠如でエラー | E-16 (L92) | ○ |
| C-66 | getSelectがフラットフィールドをselect形式に | E-17 (L11-31) | ○ |
| C-67 | ネストフィールドが階層構造に | E-17 (L15-28) | ○ |
| C-68 | 空配列で空オブジェクト | E-17 | ○ |
| C-69 | removeDisabledFieldsでフィールド削除 | E-18 (L15-80) | ○ |
| C-70 | ネストパスのフィールド削除 | E-18 (L62-71) | ○ |
| C-71 | 配列内フィールド削除 | E-18 (L46-55, 65-69) | ○ |
| C-72 | 元オブジェクトがミューテートされない | E-18 (L23) | ○ |
| C-73 | 空disabledで元オブジェクト返却 | E-18 (L19-21) | ○ |
| C-74 | setNestedValueでドット記法パスに設定 | E-19 (L19-65) | ○ |
| C-75 | 配列インデックスを含むパスに設定 | E-19 (L32-49) | ○ |
| C-76 | 中間オブジェクト自動生成 | E-19 (L56-61) | ○ |
| C-77 | processRichTextFieldで文字列数値変換 | E-20 (L5-49) | ○ |
| C-78 | childrenが再帰処理 | E-20 (L34-36) | ○ |
| C-79 | null/undefinedがそのまま返却 | E-20 (L6-8) | ○ |
| C-80 | stripSortDashでダッシュ除去 | E-21 (L2) | ○ |
| C-81 | applySortOrderでdescにダッシュ付与 | E-21 (L5-6) | ○ |
| C-82 | normalizeQueryParamで文字列返却 | E-21 (L10-11) | ○ |
| C-83 | 配列の最初の要素返却 | E-21 (L12-14) | ○ |
| C-84 | createBatchesで配列分割 | E-22 (L65-71) | ○ |
| C-85 | 空配列で空配列返却 | E-22 | ○ |
| C-86 | extractErrorMessageでErrorからメッセージ抽出 | E-22 (L91-101) | ○ |
| C-87 | オブジェクトのmessageプロパティ抽出 | E-22 (L96-98) | ○ |
| C-88 | categorizeErrorでvalidation分類 | E-22 (L122-142) | ○ |
| C-89 | not found分類 | E-22 (L129-131) | ○ |
| C-90 | duplicate分類 | E-22 (L133-135) | ○ |
| C-91 | getPluginCollectionsでベースコレクション生成 | E-23 (L45-236) | ○ |
| C-92 | overrideExportCollectionが適用 | E-23 (L78-85) | ○ |
| C-93 | カスタムスラグがマップに追加 | E-23 (L121-123) | ○ |
| C-94 | getExportFieldFunctionsでtoCSV収集 | E-24 (L13-130) | ○ |
| C-95 | jsonフィールドがJSON.stringify | E-24 (L29-42) | ○ |
| C-96 | monomorphic relationshipがid抽出 | E-24 (L51-56) | ○ |
| C-97 | polymorphic relationshipが展開 | E-24 (L57-75) | ○ |
| C-98 | getImportFieldFunctionsでfromCSV収集 | E-25 (L13-123) | ○ |
| C-99 | numberフィールドがparseFloat変換 | E-25 (L58-75) | ○ |
| C-100 | checkboxがboolean変換 | E-25 (L75-85) | ○ |
| C-101 | dateがISO文字列変換 | E-25 (L86-101) | ○ |
| C-102 | json/richTextがJSON.parse | E-25 (L102-117) | ○ |
| C-103 | createExportでCSVファイル生成 | E-26 (L57-567) | ○ |
| C-104 | JSONファイル生成 | E-26 (L376-388, 493-496) | ○ |
| C-105 | 存在しないコレクションでAPIError | E-26 (L97-99) | ○ |
| C-106 | 認証なしでAPIError | E-26 (L115-117) | ○ |
| C-107 | download: trueでResponseストリーム | E-26 (L248-412) | ○ |
| C-108 | maxLimitがincomingLimitより小さい場合適用 | E-26 (L141-156) | ○ |
| C-109 | drafts: 'no'でpublishedのみ | E-26 (L119-127) | ○ |
| C-110 | fields指定で選択フィールドのみ | E-26 (L132-133) | ○ |
| C-111 | handleDownloadでResponse返却 | E-27 (L8-67) | ○ |
| C-112 | リクエストデータなしでエラー | E-27 (L16-18) | ○ |
| C-113 | 強制フォーマットと異なる場合エラー | E-27 (L32-36) | ○ |
| C-114 | handlePreviewでページネーション返却 | E-28 (L23-269) | ○ |
| C-115 | CSV形式でcolumns返却 | E-28 (L123-131, 255-256) | ○ |
| C-116 | 存在しないコレクションでエラー | E-28 (L53-59) | ○ |
| C-117 | maxLimit超過で空docs返却 | E-28 (L137-150) | ○ |
| C-118 | createExportBatchProcessor.processExportでバッチ処理 | E-29 (L105-168) | ○ |
| C-119 | streamExportでジェネレータyield | E-29 (L187-241) | ○ |
| C-120 | discoverColumnsでカラム収集 | E-29 (L250-302) | ○ |
| C-121 | createImportでCSVインポート | E-30 (L63-278) | ○ |
| C-122 | JSONインポート | E-30 (L212-214) | ○ |
| C-123 | 認証なしでAPIError | E-30 (L87-89) | ○ |
| C-124 | コレクションスラグなしでAPIError | E-30 (L102-104, 124-125) | ○ |
| C-125 | ファイルデータなしでAPIError | E-30 (L106-108) | ○ |
| C-126 | maxLimit超過でAPIError | E-30 (L229-236) | ○ |
| C-127 | createモードで新規作成 | E-30, E-32 (L184-266) | ○ |
| C-128 | updateモードで更新 | E-32 (L267-446) | ○ |
| C-129 | upsertモードで作成または更新 | E-32 (L447-538) | ○ |
| C-130 | import handlePreviewで返却 | E-31 (L20-127) | ○ |
| C-131 | ファイルデータなしでエラー | E-31 (L56-58) | ○ |
| C-132 | limitExceededがtrue | E-31 (L108) | ○ |
| C-133 | createImportBatchProcessor.processImportでバッチ処理 | E-32 (L594-658) | ○ |
| C-134 | createモードでID削除 | E-32 (L186-188) | ○ |
| C-135 | updateモードで対象不在時エラー | E-32 (L525-537) | ○ |
| C-136 | upsertで新規作成 | E-32 (L447-523) | ○ |
| C-137 | バージョン有効で_status処理 | E-32 (L191-205) | ○ |
| C-138 | マルチロケールで順次更新 | E-32 (L222-255, 366-403) | ○ |
| C-139 | extractMultiLocaleDataでロケール分離 | E-32 (L69-115) | ○ |
| C-140 | ロケール未設定でそのまま返却 | E-32 (L81-82) | ○ |

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

- **C-47 (getFilename)**: 日付フォーマットの実装は確認できるが、タイムゾーンの扱いについて追加確認が望ましい
  - 候補：タイムゾーン設定の確認 / Date.toISOString()の動作確認

- **C-62 (getFileFromDoc ローカルストレージ)**: ファイルシステムアクセスの実装詳細について、エラーハンドリングの網羅性を確認
  - 候補：getFileByPath関数の詳細確認 / エラーケースの追加

## 5) リスクフラグ（レビュー観点）

| リスクレベル | 項目 | 理由 |
|-------------|------|------|
| 0（低リスク） | ユーティリティ関数群（parseCSV, flattenObject等） | 純粋関数で副作用なし、テストしやすい |
| 1（中リスク） | ファイル操作（getFileFromDoc） | 外部リソースへの依存あり |
| 1（中リスク） | バッチプロセッサ（import/export） | DB操作を含む、トランザクション管理 |
| 2（高リスク） | createImport/createExport | ユーザー認証、DB操作、ファイル操作を組み合わせた複合処理 |

## 6) レビュアーチェックリスト（最小）

- [ ] parseCSV/parseJSONのエッジケース（特殊文字、大容量データ）を確認
- [ ] flattenObject/unflattenObjectの相互変換の整合性を確認
- [ ] polymorphic relationshipの処理が正しくラウンドトリップすることを確認
- [ ] maxLimitの適用ロジックがexport/import両方で一貫していることを確認
- [ ] マルチロケールインポートのエラーハンドリングを確認
- [ ] バッチプロセッサのエラー時の継続動作を確認
- [ ] ファイル取得（ローカル/クラウド）のエラーハンドリングを確認
