---
generated_at: 2026-01-29 17:15:00
metrics:
  claims_total: 32
  claims_with_evidence: 32
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：90-MFA設定画面

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：32 / 32、根拠なし：0
- 優先レビュー（高）
  - 特になし（全ての主張に根拠あり）

## 2) 参照した情報（Evidence一覧）

- E-01: `app/javascript/dashboard/routes/dashboard/settings/profile/MfaSettings.vue`（行1-179）
- E-02: `app/javascript/dashboard/routes/dashboard/settings/profile/MfaSetupWizard.vue`（行1-324）
- E-03: `app/javascript/dashboard/routes/dashboard/settings/profile/MfaManagementActions.vue`（行1-249）
- E-04: `app/javascript/dashboard/api/mfa.js`（行1-29）
- E-05: `app/controllers/api/v1/profile/mfa_controller.rb`（行1-69）
- E-06: `docs/code-to-docs/画面一覧/画面一覧.csv`（行91）
- E-07: `docs/code-to-docs/画面機能マッピング/画面機能マッピング.csv`（行170-172）

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 画面名が「MFA設定画面」である | E-06 | ○ |
| C-02 | onMountedでisMfaEnabledをチェック | E-01（行30-41） | ○ |
| C-03 | isMfaEnabled=falseでリダイレクト | E-01（行33-39） | ○ |
| C-04 | onMountedでmfaAPI.get()を呼び出す | E-01（行43-48） | ○ |
| C-05 | startMfaSetupでmfaAPI.enable()を呼び出す | E-01（行53-73） | ○ |
| C-06 | enable()でprovisioningUri, secretKeyを取得 | E-01（行58-66）, E-04（行9-10） | ○ |
| C-07 | verifyCodeでmfaAPI.verify()を呼び出す | E-01（行76-90） | ○ |
| C-08 | verify()でbackupCodesを取得 | E-01（行80-82）, E-04（行12-13） | ○ |
| C-09 | completeMfaSetupでmfaEnabled=trueに設定 | E-01（行93-98） | ○ |
| C-10 | disableMfaでmfaAPI.disable()を呼び出す | E-01（行106-116） | ○ |
| C-11 | disable()にpasswordとotpCodeを渡す | E-01（行108）, E-04（行16-18） | ○ |
| C-12 | regenerateBackupCodesでmfaAPI.regenerateBackupCodes()を呼び出す | E-01（行119-129） | ○ |
| C-13 | MfaStatusCardコンポーネントを使用 | E-01（行148-152） | ○ |
| C-14 | MfaSetupWizardコンポーネントを使用 | E-01（行155-166） | ○ |
| C-15 | MfaManagementActionsコンポーネントを使用 | E-01（行169-175） | ○ |
| C-16 | MfaSetupWizardでsetupStep refで'qr'/'backup'を管理 | E-02（行43） | ○ |
| C-17 | generateQRCodeでQRCode.toDataURL()を使用 | E-02（行50-64） | ○ |
| C-18 | watchでprovisioningUriからQRコード生成 | E-02（行67-77） | ○ |
| C-19 | verifyCodeでemit('verify')を発火 | E-02（行79-88） | ○ |
| C-20 | copySecretでcopyTextToClipboardを使用 | E-02（行90-93） | ○ |
| C-21 | downloadBackupCodesでBlobダウンロード | E-02（行101-110） | ○ |
| C-22 | copyBackupCodesでクリップボードコピー | E-02（行95-99） | ○ |
| C-23 | backupCodesConfirmedチェックボックスで完了ボタン有効化 | E-02（行305-318） | ○ |
| C-24 | MfaManagementActionsでDisableダイアログを表示 | E-03（行144-167） | ○ |
| C-25 | MfaManagementActionsでRegenerateダイアログを表示 | E-03（行170-186） | ○ |
| C-26 | disableDialogでpasswordとotpCodeを入力 | E-03（行154-165） | ○ |
| C-27 | regenerateDialogでotpCodeのみ入力 | E-03（行179-185） | ○ |
| C-28 | バックエンドでcheck_mfa_feature_available | E-05（行36-42） | ○ |
| C-29 | バックエンドでvalidate_otp | E-05（行48-57） | ○ |
| C-30 | バックエンドでvalidate_password | E-05（行59-63） | ○ |
| C-31 | 成功時にSUCCESS_MESSAGEを表示 | E-01（行97, 112, 125） | ○ |
| C-32 | 関連機能No.3, 178, 179 | E-07 | ○ |

## 4) 不足情報（Unknown / Missing）
- 特になし

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全ての主張がソースコードから直接確認可能

## 6) レビュアーチェックリスト（最小）
- [ ] MFA機能のリダイレクトロジックが正確か
- [ ] QRコード生成のタイミングと方法が正しいか
- [ ] バックアップコードの取得タイミング（verify成功時）が正確か
- [ ] 無効化時のパスワード検証が正しく行われているか
