---
generated_at: 2026-01-30 14:30:00
metrics:
  claims_total: 70
  claims_with_evidence: 68
  claims_without_evidence: 2
confidence_derived: 0.97
---

# 根拠レポート：結合テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：68 / 70、根拠なし：2
- 優先レビュー（高）
  1. **IT-055**: クライアント-サーバー同期のオフライン復帰テスト - 具体的な同期フロー詳細が推測含む
  2. **IT-056**: コンフリクト解決テスト - Last-Write-Wins動作の詳細仕様は推測含む

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

- E-01: `packages/sync-server/src/app.ts` - メインサーバーアプリケーション、ルーティング定義
- E-02: `packages/sync-server/src/app-sync.ts` - 同期API実装（sync、upload、download、list等）
- E-03: `packages/sync-server/src/app-account.js` - 認証API実装（login、bootstrap、validate等）
- E-04: `packages/sync-server/src/app-gocardless/app-gocardless.js` - GoCardless連携API実装
- E-05: `packages/sync-server/src/app-simplefin/app-simplefin.js` - SimpleFin連携API実装
- E-06: `packages/sync-server/src/app-pluggyai/app-pluggyai.js` - PluggyAI連携API実装
- E-07: `packages/sync-server/src/app-openid.js` - OpenID認証API実装
- E-08: `packages/sync-server/src/app-admin.js` - 管理者API実装（users、access等）
- E-09: `packages/sync-server/src/account-db.js` - アカウントデータベース操作
- E-10: `packages/loot-core/src/server/db/index.ts` - クライアント側データベースAPI
- E-11: `packages/loot-core/src/server/sync/index.ts` - CRDT同期ロジック
- E-12: `packages/sync-server/src/app-sync/services/files-service.js` - ファイルサービス
- E-13: `packages/sync-server/src/util/middlewares.js` - 認証ミドルウェア

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | IT-001: POST /sync/syncで同期リクエスト処理 | E-02 | ○ |
| C-02 | IT-002: sinceパラメータ必須で422エラー | E-02 | ○ |
| C-03 | IT-003: 存在しないfileIdでfile-not-foundエラー | E-02, E-12 | ○ |
| C-04 | IT-004: POST /sync/upload-user-fileでファイルアップロード | E-02 | ○ |
| C-05 | IT-005: 既存ファイルの更新アップロード | E-02 | ○ |
| C-06 | IT-006: GET /sync/download-user-fileでファイルダウンロード | E-02 | ○ |
| C-07 | IT-007: GET /sync/list-user-filesでファイル一覧取得 | E-02, E-12 | ○ |
| C-08 | IT-008: GET /sync/get-user-file-infoでファイル情報取得 | E-02 | ○ |
| C-09 | IT-009: POST /sync/update-user-filenameでファイル名更新 | E-02 | ○ |
| C-10 | IT-010: POST /sync/delete-user-fileでファイル論理削除（オーナー） | E-02 | ○ |
| C-11 | IT-011: 非オーナーによるファイル削除で403エラー | E-02 | ○ |
| C-12 | IT-012: POST /sync/user-get-keyで暗号化キー取得 | E-02 | ○ |
| C-13 | IT-013: POST /sync/user-create-keyで暗号化キー作成 | E-02 | ○ |
| C-14 | IT-014: POST /sync/reset-user-fileでファイルリセット | E-02 | ○ |
| C-15 | IT-015: GET /account/needs-bootstrapでブートストラップ状態確認 | E-03, E-09 | ○ |
| C-16 | IT-016: POST /account/loginでパスワード認証 | E-03 | ○ |
| C-17 | IT-017: POST /account/bootstrapで初期設定 | E-03, E-09 | ○ |
| C-18 | IT-018: GET /account/validateでセッション検証 | E-03, E-09 | ○ |
| C-19 | IT-019: POST /account/change-passwordでパスワード変更 | E-03 | ○ |
| C-20 | IT-020: POST /gocardless/statusで設定状態確認 | E-04 | ○ |
| C-21 | IT-021: POST /gocardless/create-web-tokenでWebトークン作成 | E-04 | ○ |
| C-22 | IT-022: POST /gocardless/get-banksで銀行一覧取得 | E-04 | ○ |
| C-23 | IT-023: POST /gocardless/get-accountsでアカウント一覧取得 | E-04 | ○ |
| C-24 | IT-024: POST /gocardless/transactionsで取引情報取得 | E-04 | ○ |
| C-25 | IT-025: 期限切れrequisitionでITEM_LOGIN_REQUIREDエラー | E-04 | ○ |
| C-26 | IT-026: POST /gocardless/remove-accountでアカウント連携解除 | E-04 | ○ |
| C-27 | IT-027: POST /simplefin/statusで設定状態確認 | E-05 | ○ |
| C-28 | IT-028: POST /simplefin/accountsでアカウント一覧取得 | E-05 | ○ |
| C-29 | IT-029: POST /simplefin/transactionsで取引情報取得 | E-05 | ○ |
| C-30 | IT-030: 無効トークンでINVALID_ACCESS_TOKENエラー | E-05 | ○ |
| C-31 | IT-031: POST /pluggyai/statusで設定状態確認 | E-06 | ○ |
| C-32 | IT-032: POST /pluggyai/accountsでアカウント一覧取得 | E-06 | ○ |
| C-33 | IT-033: POST /pluggyai/transactionsで取引情報取得 | E-06 | ○ |
| C-34 | IT-034: POST /openid/enableでOpenID有効化 | E-07 | ○ |
| C-35 | IT-035: POST /openid/disableでOpenID無効化 | E-07 | ○ |
| C-36 | IT-036: GET /openid/callbackでコールバック処理 | E-07 | ○ |
| C-37 | IT-037: GET /admin/users/でユーザー一覧取得 | E-08 | ○ |
| C-38 | IT-038: POST /admin/usersでユーザー作成 | E-08 | ○ |
| C-39 | IT-039: PATCH /admin/usersでユーザー更新 | E-08 | ○ |
| C-40 | IT-040: DELETE /admin/usersでユーザー削除 | E-08 | ○ |
| C-41 | IT-041: GET /admin/accessでファイルアクセス権限取得 | E-08 | ○ |
| C-42 | IT-042: POST /admin/accessでファイルアクセス権限付与 | E-08 | ○ |
| C-43 | IT-043: DELETE /admin/accessでファイルアクセス権限削除 | E-08 | ○ |
| C-44 | IT-044: POST /admin/access/transfer-ownership/でファイル所有権移譲 | E-08 | ○ |
| C-45 | IT-045: applyMessages()でメッセージ適用 | E-11 | ○ |
| C-46 | IT-046: batchMessages()でバッチメッセージ送信 | E-11 | ○ |
| C-47 | IT-047: fullSync()でフル同期実行 | E-11 | ○ |
| C-48 | IT-048: insertCategoryGroup()でカテゴリグループ作成 | E-10 | ○ |
| C-49 | IT-049: insertCategory()でカテゴリ作成 | E-10 | ○ |
| C-50 | IT-050: insertPayee()で支払先作成 | E-10 | ○ |
| C-51 | IT-051: mergePayees()で支払先マージ | E-10 | ○ |
| C-52 | IT-052: insertAccount()でアカウント作成 | E-10 | ○ |
| C-53 | IT-053: insertTransaction()で取引データ挿入 | E-10 | ○ |
| C-54 | IT-054: getTransactions()で取引データ取得 | E-10 | ○ |
| C-55 | IT-055: オフラインからオンラインへの復帰同期 | **根拠不足** | △ |
| C-56 | IT-056: コンフリクト解決（Last-Write-Wins） | **根拠不足** | △ |
| C-57 | IT-057: GET /healthでヘルスチェック | E-01 | ○ |
| C-58 | IT-058: GET /metricsでメトリクス取得 | E-01 | ○ |
| C-59 | IT-059: GET /infoでサーバー情報取得 | E-01 | ○ |
| C-60 | IT-060: レート制限（60秒500リクエスト） | E-01 | ○ |
| C-61 | IT-061: 無効トークンで401エラー | E-13 | ○ |
| C-62 | IT-062: パストラバーサル攻撃で403エラー | E-02 | ○ |
| C-63 | IT-063: GoCardlessレート制限エラー処理 | E-04 | ○ |
| C-64 | IT-064: 重複カテゴリグループ作成でエラー | E-10 | ○ |
| C-65 | IT-065: moveCategoryGroup()でカテゴリグループ移動 | E-10 | ○ |
| C-66 | IT-066: OpenIDログインフロー | E-03 | ○ |
| C-67 | IT-067: 複数アカウント同時取引取得（SimpleFin） | E-05 | ○ |
| C-68 | IT-068: GET /admin/owner-created/でオーナー作成状態確認 | E-08 | ○ |
| C-69 | IT-069: setSyncingMode()で同期モード切り替え | E-11 | ○ |
| C-70 | IT-070: ヘッダー認証 | E-03 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-55 (IT-055)**: オフライン復帰時の同期フロー
  - 推測根拠：fullSync()関数の存在とSYNCING_MODEの存在から推測
  - 候補：実際のオフライン同期テストコード / E2Eテスト / アーキテクチャドキュメント
- **C-56 (IT-056)**: コンフリクト解決メカニズム
  - 推測根拠：CRDTライブラリの使用とTimestamp.recv()の存在から推測
  - 候補：CRDTアルゴリズム仕様書 / @actual-app/crdtパッケージのドキュメント

## 5) リスクフラグ（レビュー観点）
- **1: 中リスク** - IT-055, IT-056：同期・コンフリクト解決ロジックはコードから読み取れるが、詳細な動作仕様はドキュメントが不足
- **0: 低リスク** - 大部分のAPI結合テストはソースコードから直接特定可能

## 6) レビュアーチェックリスト（最小）
- [ ] IT-001〜IT-014: 同期API関連テストのパラメータと期待結果が仕様と一致するか確認
- [ ] IT-015〜IT-019: 認証APIのセキュリティ要件を満たすか確認
- [ ] IT-020〜IT-026: GoCardless APIのエラーハンドリングが網羅的か確認
- [ ] IT-027〜IT-030: SimpleFin APIのエラーハンドリングが網羅的か確認
- [ ] IT-045〜IT-047: CRDT同期ロジックのテスト手順が正確か確認
- [ ] IT-055, IT-056: オフライン同期・コンフリクト解決の詳細仕様を要確認
- [ ] IT-060〜IT-062: セキュリティ関連テストの優先度と網羅性を確認
