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

# 根拠レポート：common モジュール単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：196 / 196、根拠なし：0
- 優先レビュー（高）
  1. **UT-COM-051〜053**: Webhookセキュリティ検証テスト - HMAC/トークン検証の実装確認推奨
  2. **UT-COM-072〜074**: SVGサニタイズテスト - セキュリティ上重要な機能
  3. **UT-COM-104〜113**: パラメータ数値計算テスト - 物理単位変換のエッジケース

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

- E-01: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/common/models.py`
- E-02: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/common/validators.py`
- E-03: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/common/serializers.py`
- E-04: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/common/currency.py`
- E-05: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/common/notifications.py`
- E-06: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/common/icons.py`
- E-07: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/common/settings.py`
- E-08: `/Users/tomoka.baba/Work/InvenTree-master/src/backend/InvenTree/common/tasks.py`

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

### BaseInvenTreeSetting (UT-COM-001〜037)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | save()でキーが大文字に変換される | E-01 L211: `self.key = str(self.key).upper()` | ○ |
| C-02 | save()でbefore_save/after_saveフックが呼ばれる | E-01 L219, L231: `self._call_settings_function()` | ○ |
| C-03 | save()でキャッシュに保存される | E-01 L225: `self.save_to_cache()` | ○ |
| C-04 | build_default_valuesでデフォルト値が作成される | E-01 L234-255 | ○ |
| C-05 | get_setting_objectでキャッシュ優先取得 | E-01 L571-587: session_cache, cache.get | ○ |
| C-06 | get_setting_objectでDB取得 | E-01 L597-604 | ○ |
| C-07 | get_setting_objectでcreate=True時に新規作成 | E-01 L606-628 | ○ |
| C-08 | get_settingでブール/整数変換 | E-01 L664-677 | ○ |
| C-09 | set_settingで非スタッフ拒否 | E-01 L699-700: `if not change_user.is_staff: return` | ○ |
| C-10 | cleanでバリデータ実行 | E-01 L810-834 | ○ |
| C-11 | run_validatorでbool/int/float検証 | E-01 L836-892 | ○ |
| C-12 | validate_uniqueで重複キー検出 | E-01 L894-916 | ○ |
| C-13 | is_bool/is_int/is_floatの型判定 | E-01 L1077-1136 | ○ |
| C-14 | as_bool/as_int/as_floatの型変換 | E-01 L1085-1185 | ○ |
| C-15 | model_classでモデルクラス取得 | E-01 L1002-1049 | ○ |

### InvenTreeSetting (UT-COM-038〜040)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | 環境変数オーバーライド適用 | E-01 L1234-1238, E-07 L16-26 | ○ |
| C-17 | requires_restart判定 | E-01 L1299-1305 | ○ |

### InvenTreeUserSetting (UT-COM-041〜042)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-18 | ユーザー固有設定の取得 | E-01 L1308-1344: extra_unique_fields = ['user'] | ○ |

### ProjectCode (UT-COM-043〜044)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | __str__でcode返却 | E-01 L161-163 | ○ |
| C-20 | get_api_urlでURL返却 | E-01 L157-159 | ○ |

### PriceBreak (UT-COM-045〜046)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | convert_toで通貨変換 | E-01 L1372-1388 | ○ |

### WebhookEndpoint (UT-COM-047〜055)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-22 | process_webhookでTOKEN/HMAC設定 | E-01 L1474-1484 | ○ |
| C-23 | validate_tokenでトークン検証 | E-01 L1486-1512 | ○ |
| C-24 | save_dataでWebhookMessage作成 | E-01 L1514-1527 | ○ |

### NotificationEntry (UT-COM-056〜059)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | check_recentで重複チェック | E-01 L1636-1643 | ○ |
| C-26 | notifyでエントリ作成/更新 | E-01 L1645-1650 | ○ |

### NotificationMessage (UT-COM-060〜061)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | ageで経過秒数計算 | E-01 L1710-1718 | ○ |
| C-28 | age_humanで人間可読時間 | E-01 L1720-1722 | ○ |

### CustomUnit (UT-COM-063〜068)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-29 | fmt_stringで定義文字列生成 | E-01 L1808-1815 | ○ |
| C-30 | validate_uniqueでシンボル重複チェック | E-01 L1817-1824 | ○ |
| C-31 | cleanで単位定義バリデーション | E-01 L1826-1853 | ○ |

### Attachment (UT-COM-069〜079)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-32 | saveでファイル/リンク必須チェック | E-01 L1947-1952 | ○ |
| C-33 | saveでSVGサニタイズ | E-01 L1954-1956, L1974-1977 | ○ |
| C-34 | saveでファイルサイズ記録 | E-01 L1963-1972 | ○ |
| C-35 | fully_qualified_urlでURL取得 | E-01 L2047-2062 | ○ |
| C-36 | check_permissionで権限チェック | E-01 L2064-2075 | ○ |

### InvenTreeCustomUserStateModel (UT-COM-080〜088)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | cleanでカスタム状態バリデーション | E-01 L2158-2202 | ○ |
| C-38 | get_status_classでステータスクラス取得 | E-01 L2204-2215 | ○ |

### SelectionList/SelectionListEntry (UT-COM-089〜093)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | get_choicesでアクティブエントリ取得 | E-01 L2315-2318 | ○ |

### ParameterTemplate (UT-COM-094〜103)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-40 | cleanでチェックボックスバリデーション | E-01 L2428-2468 | ○ |
| C-41 | validate_uniqueで名前重複チェック | E-01 L2470-2486 | ○ |
| C-42 | get_choicesで選択肢取得 | E-01 L2488-2496 | ○ |

### Parameter (UT-COM-104〜117)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-43 | saveでcalculate_numeric_value呼出 | E-01 L2617-2630 | ○ |
| C-44 | cleanで選択肢/単位バリデーション | E-01 L2637-2678 | ○ |
| C-45 | calculate_numeric_valueで数値計算 | E-01 L2680-2705 | ○ |
| C-46 | check_permissionで権限チェック | E-01 L2707-2716 | ○ |

### DataOutput (UT-COM-118〜120)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-47 | mark_completeで完了マーク | E-01 L2908-2918 | ○ |
| C-48 | mark_failureでエラー記録 | E-01 L2920-2939 | ○ |

### EmailMessage (UT-COM-121〜123)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | saveでスレッド自動作成 | E-01 L3104-3118 | ○ |
| C-50 | deleteで保護チェック | E-01 L3122-3126 | ○ |

### validators (UT-COM-124〜143)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-51 | validate_attachment_model_type | E-02 L72-76 | ○ |
| C-52 | validate_notes_model_type | E-02 L79-98 | ○ |
| C-53 | validate_decimal_places_min/max | E-02 L101-122 | ○ |
| C-54 | validate_email_domains | E-02 L125-135 | ○ |
| C-55 | validate_icon | E-02 L138-143 | ○ |
| C-56 | validate_uppercase | E-02 L146-151 | ○ |
| C-57 | validate_variable_string | E-02 L154-157 | ○ |

### currency (UT-COM-144〜157)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-58 | currency_code_default | E-04 L19-37 | ○ |
| C-59 | currency_codes | E-04 L50-83 | ○ |
| C-60 | validate_currency_codes | E-04 L117-139 | ○ |
| C-61 | get_price | E-04 L157-230 | ○ |

### notifications (UT-COM-158〜162)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-62 | trigger_notification | E-05 L87-218 | ○ |

### icons (UT-COM-163〜169)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-63 | get_icon_packs | E-06 L51-87 | ○ |
| C-64 | reload_icon_packs | E-06 L90-94 | ○ |
| C-65 | validate_icon | E-06 L97-117 | ○ |

### settings (UT-COM-170〜175)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | get_global_setting | E-07 L29-41 | ○ |
| C-67 | set_global_setting | E-07 L44-51 | ○ |
| C-68 | set_global_warning | E-07 L61-108 | ○ |
| C-69 | stock_expiry_enabled | E-07 L111-115 | ○ |

### tasks (UT-COM-176〜182)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-70 | cleanup_old_data_outputs | E-08 L27-35 | ○ |
| C-71 | delete_old_notifications | E-08 L39-56 | ○ |
| C-72 | update_news_feed | E-08 L60-110 | ○ |
| C-73 | delete_old_notes_images | E-08 L114-174 | ○ |
| C-74 | rebuild_parameters | E-08 L178-206 | ○ |

### serializers (UT-COM-183〜196)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-75 | SettingsValueField.to_representation | E-03 L45-68 | ○ |
| C-76 | SettingsSerializer.is_valid | E-03 L130-142 | ○ |
| C-77 | AttachmentSerializer.save | E-03 L697-728 | ○ |
| C-78 | SelectionListSerializer.is_valid/create/update | E-03 L920-980 | ○ |
| C-79 | ParameterSerializer.save | E-03 L794-826 | ○ |

## 4) 不足情報（Unknown / Missing）
- 特になし。全てのテストケースはソースコードに基づいて生成されました。

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 通常のCRUD操作、文字列処理
- 1: 中リスク - キャッシュ処理、非同期タスク、外部API連携
- 2: 高リスク - 認証/認可、セキュリティバリデーション（SVGサニタイズ、HMAC検証）

| リスクレベル | テストケース |
|------------|------------|
| 2 | UT-COM-051〜053 (Webhook認証), UT-COM-072〜074 (SVGサニタイズ), UT-COM-078〜079 (権限チェック), UT-COM-114〜115 (パラメータ権限), UT-COM-123 (メール削除保護) |
| 1 | UT-COM-007〜010 (キャッシュ), UT-COM-045〜046 (通貨変換), UT-COM-158〜162 (通知送信), UT-COM-176〜182 (バックグラウンドタスク) |
| 0 | その他全てのテストケース |

## 6) レビュアーチェックリスト（最小）
- [ ] セキュリティ関連テストケース（HMAC検証、SVGサニタイズ、権限チェック）の網羅性を確認
- [ ] 通貨変換・価格計算のエッジケース（為替レート不在、無効通貨コード）のカバレッジを確認
- [ ] キャッシュ機能のテストで、キャッシュ無効化シナリオが含まれているか確認
- [ ] パラメータ数値計算のテストで、物理単位変換の境界値（NaN、Inf）が網羅されているか確認
- [ ] バックグラウンドタスクのテストで、エラーハンドリングが適切にカバーされているか確認
- [ ] メール機能のテストで、削除保護とスレッド自動作成の動作を確認
