---
generated_at: 2026-02-23 21:15:00
metrics:
  claims_total: 62
  claims_with_evidence: 58
  claims_without_evidence: 4
confidence_derived: 0.94
---

# 根拠レポート：非機能要件テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.94**
  - 根拠あり：58 / 62、根拠なし：4
- 優先レビュー（高）
  1. **NFT-008 画像キャッシュ動作確認**：具体的なキャッシュ設定値が不明
  2. **NFT-061 ローディングオーバーレイ確認**：progress.dartの詳細実装未確認
  3. **NFT-059 バーコードスキャン音フィードバック確認**：tones.dartの詳細実装未確認
  4. **NFT-060 スナックバー通知確認**：snacks.dartの詳細実装未確認

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

- E-01: `lib/api.dart` - API通信、認証、タイムアウト設定
- E-02: `lib/main.dart` - アプリ初期化、テーマ、多言語対応
- E-03: `lib/user_profile.dart` - ユーザープロファイル管理
- E-04: `lib/preferences.dart` - 設定管理、永続化
- E-05: `lib/inventree/sentry.dart` - エラーレポート、監視
- E-06: `lib/inventree/model.dart` - モデル基底クラス、権限チェック
- E-07: `lib/settings/login.dart` - ログイン画面、パスワード入力
- E-08: `lib/barcode/barcode.dart` - バーコードスキャン
- E-09: `lib/widget/paginator.dart` - ページネーション
- E-10: `android/app/src/main/AndroidManifest.xml` - Android権限
- E-11: `test/api_test.dart` - APIテスト
- E-12: `pubspec.yaml` - 依存関係定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | API接続タイムアウト30秒 | E-01 (connectionTimeout = Duration(seconds: 30)) | ○ |
| C-02 | APIリクエストタイムアウト10秒 | E-01 (timeout(Duration(seconds: 10))) | ○ |
| C-03 | ファイルダウンロードタイムアウト10秒 | E-01 (downloadFile内のtimeout) | ○ |
| C-04 | ファイルアップロードタイムアウト120秒 | E-01 (uploadFile timeout(Duration(seconds: 120))) | ○ |
| C-05 | 画像キャッシュタイムアウト60秒 | E-01 (httpResponse.timeout(Duration(seconds: 60))) | ○ |
| C-06 | ページサイズ25件 | E-09 (_pageSize = 25) | ○ |
| C-07 | 検索デバウンス500ms | E-09 (Duration(milliseconds: 500)) | ○ |
| C-08 | CachedNetworkImage使用 | E-01, E-12 | △ |
| C-09 | 通知ポーリング60秒間隔 | E-01 (Timer.periodic(Duration(seconds: 60))) | ○ |
| C-10 | 設定キャッシュ5分 | E-01 (reloadedWithin(Duration(minutes: 5))) | ○ |
| C-11 | トークンベース認証 | E-01 (fetchToken()) | ○ |
| C-12 | トークン永続化 | E-03 (token保存) | ○ |
| C-13 | 無効トークン検出 | E-11 (Bad Token test) | ○ |
| C-14 | 認証失敗時トークンクリア | E-01 (profile.token = "") | ○ |
| C-15 | ロールベースアクセス制御 | E-01 (checkRole()) | ○ |
| C-16 | パーミッションチェック | E-01 (checkPermission()) | ○ |
| C-17 | CRUD権限チェック | E-06 (canEdit/canCreate/canDelete/canView) | ○ |
| C-18 | HTTPS強制モード | E-01, E-04 (INV_STRICT_HTTPS) | ○ |
| C-19 | 自己署名証明書許容 | E-01 (badCertificateCallback) | ○ |
| C-20 | パスワードマスク表示 | E-07 (obscureText: _obscured) | ○ |
| C-21 | Token認証ヘッダー | E-01 (Token ${token}) | ○ |
| C-22 | Sentry URL匿名化 | E-05 (uri.path + uri.query) | ○ |
| C-23 | 接続状態検出 | E-01 (isConnected()) | ○ |
| C-24 | 接続中状態検出 | E-01 (isConnecting()) | ○ |
| C-25 | 接続状態コールバック | E-01 (registerCallback(), _connectionStatusChanged()) | ○ |
| C-26 | 切断時状態クリア | E-01 (disconnectFromServer()) | ○ |
| C-27 | SocketException処理 | E-01 (SocketException catch) | ○ |
| C-28 | TimeoutException処理 | E-01 (TimeoutException catch) | ○ |
| C-29 | HandshakeException処理 | E-01 (HandshakeException catch) | ○ |
| C-30 | APIレスポンス検証 | E-01 (isValid()/isMap()/isList()) | ○ |
| C-31 | HTTPステータスコード分類 | E-01 (successful()/clientError()/serverError()) | ○ |
| C-32 | JSON解析エラー処理 | E-01 (FormatException catch) | ○ |
| C-33 | 最小APIバージョン100 | E-01 (_minApiVersion = 100) | ○ |
| C-34 | サーバーエラーレポート | E-01 (sentryReportMessage server error) | ○ |
| C-35 | ゲートウェイエラー除外 | E-01 (case 502/503/504) | ○ |
| C-36 | モデル操作エラーレポート | E-06 (reportModelError()) | ○ |
| C-37 | 404エラー処理 | E-06 (case 404) | ○ |
| C-38 | デバッグログ出力 | E-01 (debug()使用箇所多数) | ○ |
| C-39 | Sentryエラーレポート | E-05 (sentryReportError()) | ○ |
| C-40 | Sentryメッセージレポート | E-05 (sentryReportMessage()) | ○ |
| C-41 | エラーレポート無効化 | E-05 (INV_REPORT_ERRORS) | ○ |
| C-42 | デバッグモード検出 | E-05 (isInDebugMode()) | ○ |
| C-43 | デバイス情報収集 | E-05 (getDeviceInfo()) | ○ |
| C-44 | 設定値永続化 | E-04 (setValue()) | ○ |
| C-45 | 設定値取得 | E-04 (getValue()) | ○ |
| C-46 | 統合検索API互換性 | E-01 (apiVersion >= 102) | ○ |
| C-47 | 注文バーコードAPI互換性 | E-01 (apiVersion >= 107) | ○ |
| C-48 | プロジェクトコードAPI互換性 | E-01 (apiVersion >= 109) | ○ |
| C-49 | モダンラベル印刷API互換性 | E-01 (apiVersion >= 201) | ○ |
| C-50 | モダン添付ファイルAPI互換性 | E-01 (apiVersion >= 207) | ○ |
| C-51 | Android権限宣言 | E-10 (uses-permission INTERNET/CAMERA/MICROPHONE) | ○ |
| C-52 | 画面方向設定 | E-02 (setPreferredOrientations()) | ○ |
| C-53 | プラットフォーム識別 | E-01, E-05 (Platform.isXXX) | ○ |
| C-54 | ロケール切替 | E-02 (setLocale()) | ○ |
| C-55 | ロケール永続化 | E-04 (getSelectedLocale()) | ○ |
| C-56 | APIリクエスト言語ヘッダー | E-01 (acceptLanguageHeader) | ○ |
| C-57 | ダークモード切替 | E-02 (AdaptiveTheme) | ○ |
| C-58 | テーマ永続化 | E-02 (getThemeMode()) | ○ |
| C-59 | バーコードスキャン音 | E-08 (barcodeSuccessTone()/barcodeFailureTone()) | △ |
| C-60 | スナックバー通知 | E-08 (showSnackIcon()呼び出し) | △ |
| C-61 | ローディングオーバーレイ | E-07 (showLoadingOverlay()/hideLoadingOverlay()呼び出し) | △ |
| C-62 | 未接続時メッセージ | E-01 (checkConnection()) | ○ |

## 4) 不足情報（Unknown / Missing）
- **NFT-008**: CachedNetworkImageの具体的なキャッシュサイズ・有効期限の設定がコード内で確認できない
  - 候補：flutter_cache_manager設定 / CacheManagerのConfig確認 / デフォルト値の確認
- **NFT-059**: tones.dartの詳細実装（音声ファイルの再生処理）が未確認
  - 候補：lib/barcode/tones.dart / assets/sounds/ の確認
- **NFT-060**: snacks.dartの詳細実装（showSnackIcon関数）が未確認
  - 候補：lib/widget/snacks.dart の確認
- **NFT-061**: progress.dartの詳細実装（loadingOverlay関数群）が未確認
  - 候補：lib/widget/progress.dart の確認

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 性能テスト項目（NFT-001〜NFT-010）- タイムアウト値はコードで明確に定義されている
- **0 (低リスク)**: セキュリティテスト項目（NFT-011〜NFT-022）- 認証・認可の実装が確認できる
- **0 (低リスク)**: 可用性テスト項目（NFT-023〜NFT-029）- エラーハンドリングが実装されている
- **0 (低リスク)**: 信頼性テスト項目（NFT-030〜NFT-037）- 検証ロジックが実装されている
- **0 (低リスク)**: 保守性テスト項目（NFT-038〜NFT-045）- ログ・監視機能が実装されている
- **0 (低リスク)**: 互換性テスト項目（NFT-046〜NFT-053）- バージョンチェックが実装されている
- **1 (中リスク)**: ユーザビリティテスト項目（NFT-054〜NFT-062）- 一部の詳細実装が未確認

## 6) レビュアーチェックリスト（最小）
- [ ] 性能テストの合格基準（タイムアウト値）がビジネス要件と整合しているか確認
- [ ] セキュリティテストの認証・認可チェックが十分な範囲をカバーしているか確認
- [ ] HTTPS強制モード（strictHttps）のデフォルト値が運用環境に適切か確認
- [ ] 最小APIバージョン（100）が現在のサーバーバージョンと整合しているか確認
- [ ] Sentryへのエラーレポートでプライバシー情報が適切に除外されているか確認
- [ ] Android権限の宣言が最小権限原則に従っているか確認
- [ ] 多言語対応のテストで必要な言語がカバーされているか確認
- [ ] △ 状態のテストケース（NFT-008, NFT-059〜NFT-061）の詳細実装を確認
