Skip to content

Commit 6c2e295

Browse files
ut42techclaude
andcommitted
docs: reflect opt-in QR scanner with confirmation step
- mvp.md 7.1.1: replace the full-screen camera spec with the actual manual-default + opt-in QR design, including the confirmation cushion and the rationale for keeping QR as a 試験運用 toggle. - handoff.md: record progress made since the last refresh (PRs #12-#16, #23 and the QR scanner branch) and update the remaining-work list so QR is no longer flagged as missing. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 50136dd commit 6c2e295

2 files changed

Lines changed: 26 additions & 8 deletions

File tree

docs/handoff.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@
2727
| - | Bug fix: ログイン後に admin オリジンへ戻すよう callbackURL を絶対URL化 | #10 |
2828
| - | API CORS/trustedOrigins を env 経由で設定可能化(本番デプロイ準備) | direct commit `9ad8603` |
2929
| W2 Day 10 | `/api/sessions/today` + `/api/participants` 参照系API | #11 |
30+
| W2 Day 10 | `/api/mentors` CRUD(admin role guard) | #12 |
31+
| W2 Day 10 | 管理ダッシュボード(当日セッション一覧) | #13, #16 |
32+
| W2 Day 10 | 参加者一覧 + メンター管理画面 | #14 |
33+
| W2 Day 9 | checkin の PWA 化(manifest, apple-icon, viewport) | #15 |
34+
| - | 事前登録管理ページ(admin) + grade enum 制約 | #23 |
35+
| W2 Day 9 | checkin に opt-in QR スキャン + 確認クッション追加 | feat/checkin-qr-scanner |
3036

3137
**Day 10 と Day 11 を意図的に入れ替えた**(Day 11 = Better Auth を先に)。理由は Day 10 の
3238
`/api/*` 系エンドポイントが認証必須で、後から auth を retrofit するより auth 基盤を先に
@@ -39,6 +45,8 @@
3945

4046
- iPad PWA 側(`localhost:3000`):
4147
- `/` ID 5桁手入力 → `/checkin/scan` → check-in / check-out 自動切替
48+
- `/` 「QRコードで読み取る(試験運用)」ボタン → カメラ起動 → 5桁認識
49+
→ 確認画面(やり直す / チェックイン)→ `/checkin/scan`
4250
- `/first-time` 未アクティベート一覧 → タップ → `/checkin/activate` → ID表示
4351
- 管理画面(`localhost:3001`):
4452
- `/login` → Google OAuth → mentors 許可リスト判定 → `/` でユーザー名表示
@@ -169,9 +177,11 @@ admin 専用ルートは `c.get('mentor').role !== 'admin'` を弾くチェッ
169177

170178
## まだやっていない・残作業(順不同)
171179

172-
- **W2 Day 10 残り 3 サブ PR**:上記参照
173-
- **Day 9 (PWA 化・iPad 実機テスト)**:UI/UX 調整なので最後で OK
174-
- **QR スキャナ**:今は手入力。zxing 等を使ったカメラ実装は将来別 PR
180+
- **Day 9 残り:iPad 実機での QR スキャン動作確認**:実装は入った(@zxing/browser
181+
opt-in カメラビュー、確認クッション)。iPad Safari 実機で起動・読み取り・キャンセル
182+
動線を通すのは未実施
183+
- **QR スキャナの本格運用判断**:現状は「試験運用」ラベル付きの opt-in。手入力との
184+
併用で初回開催 → 安定したらデフォルト化を検討
175185
- **Phase 1.5 系**:メンタースマホアプリ、活動ログ、CSVエクスポート等
176186
- **`docs/mvp.md` 9.1 の Day 12-14**:E2E テスト、リハーサル、本番リリース仕上げ
177187
(初回本番デプロイは済んだが、リリース時の運用手順整備は未着手)

docs/mvp.md

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -548,13 +548,21 @@ QR/バーコードスキャン用統合エンドポイント。スキャン値
548548

549549
### 7.1 チェックインiPadアプリ(apps/checkin)
550550

551-
#### 7.1.1 トップ画面(カメラビュー
551+
#### 7.1.1 トップ画面(手入力 + QR切替
552552

553-
- 全画面でカメラビュー(`getUserMedia` 使用)
554-
- 中央に「QRをかざしてください」のオーバーレイ
553+
- デフォルトは 5 桁の手入力フォーム(`pattern="\d{5}"` で数字のみ)
554+
- フォーム下に「QRコードで読み取る(試験運用)」ボタン → カメラビューに切替
555+
- カメラビューでは「手入力に戻る」ボタンで元のフォームに復帰
555556
- 下部に「初めての方はこちら」ボタン
556-
- スキャン成功 → `/checkin/scan` 呼び出し → 結果に応じて画面遷移
557-
- QR/バーコード読み取りライブラリ: `@zxing/browser` 推奨
557+
- QR 認識時は **即時 API を叩かず確認画面を経由**(誤読・誤タップ対策)
558+
- 「この ID で合っていますか?」+ 大きく ID 表示 + 「やり直す」/「チェックイン / アウト」
559+
- 確認後に `/checkin/scan` 呼び出し
560+
- QR/バーコード読み取りライブラリ: `@zxing/browser``BrowserMultiFormatReader.decodeFromVideoDevice`
561+
562+
**設計意図**: QR スキャナは試験運用フェーズ(Phase 1.5 で本格運用)。手入力フォームを
563+
正規ルートとして残し、QR は opt-in で並走させる。スキャナの起動/停止は React の
564+
`useEffect``mode === 'qr' && state.kind === 'idle'` のときだけ走らせ、確認画面に
565+
遷移した時点で controls.stop() を呼んで二重検出を防ぐ。
558566

559567
#### 7.1.2 初めての方一覧画面
560568

0 commit comments

Comments
 (0)