/review/quick学会抄録(600演題規模)を短時間で仕分けるための画面。
/review-invitation/admin/review-progress以下のSQLをSupabaseコンソールの SQL Editor で実行してください。
supabase/migrations/031_quick_review_and_invitations.sql の内容を貼り付け-- 031: 簡易査読モード + 査読者招待フロー
-- reviews テーブルに簡易査読用カラム追加
ALTER TABLE reviews ADD COLUMN IF NOT EXISTS review_mode TEXT
NOT NULL DEFAULT 'detailed'
CHECK (review_mode IN ('detailed', 'quick'));
ALTER TABLE reviews ADD COLUMN IF NOT EXISTS quick_decision TEXT
CHECK (quick_decision IN ('accept', 'revise', 'reject'));
-- reviewer_invitations テーブル作成
CREATE TABLE IF NOT EXISTS reviewer_invitations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
conference_id UUID NOT NULL REFERENCES conferences(id),
email TEXT NOT NULL,
name TEXT,
affiliation TEXT,
token TEXT NOT NULL UNIQUE,
status TEXT NOT NULL DEFAULT 'pending'
CHECK (status IN ('pending','accepted','declined','expired')),
invited_by UUID REFERENCES profiles(id),
invited_at TIMESTAMPTZ NOT NULL DEFAULT now(),
responded_at TIMESTAMPTZ,
decline_reason TEXT,
max_assignments INTEGER DEFAULT 10,
specialty_categories UUID[],
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- + インデックス、RLS、ビュー、集計関数
-- (全文は 031_quick_review_and_invitations.sql を参照)
マイグレーション実行後、管理者アカウントでログインして確認:
/admin/review-progress に進捗ダッシュボードが表示される/review/quick で未査読演題が表示される(演題がある場合).env.local の RESEND_API_KEY に設定されている/review-invitation に遷移generate-dummy-data.ts を活用)| ファイル | 種別 | 内容 |
|---|---|---|
supabase/migrations/031_quick_review_and_invitations.sql | DB | テーブル・カラム・ビュー・関数の追加 |
src/lib/actions/quick-review.ts | Server Action | 簡易査読の提出・集計・一括反映・次の演題取得 |
src/lib/actions/reviewer-invitation.ts | Server Action | 招待送信・一括招待・承諾/辞退・承諾者で自動割当 |
src/lib/actions/review-progress.ts | Server Action | 全体集計・査読者別・カテゴリ別・日別推移 |
src/app/(main)/review/quick/page.tsx | Page | 簡易査読画面(3ボタン式) |
src/app/review-invitation/page.tsx | Page | 招待応答ページ(公開・認証不要) |
src/app/review-invitation/layout.tsx | Layout | Suspense boundary |
src/app/admin/review-progress/page.tsx | Page | 進捗ダッシュボード(Server Component) |
src/components/admin/progress-dashboard.tsx | Component | ダッシュボードUI(Client Component) |
e2e/quick-review-features.spec.ts | Test | E2Eテスト(11件) |
| ファイル | 変更内容 |
|---|---|
src/types/database.ts | reviews に review_mode/quick_decision 追加、reviewer_invitations 型追加 |
src/components/common/app-sidebar.tsx | 「簡易査読」「仕分け進捗」メニュー追加 |
src/lib/supabase/middleware.ts | /review-invitation を公開パスに追加 |
src/app/api/ads/click/route.ts | 既存ビルドエラー修正 |
| テーブル | カラム(主要) | 用途 |
|---|---|---|
reviewer_invitations | email, token, status, conference_id, max_assignments | 査読者招待の管理 |
| テーブル | 追加カラム | 用途 |
|---|---|---|
reviews | review_mode (detailed/quick) | 査読モード識別 |
reviews | quick_decision (accept/revise/reject) | 簡易査読の判定結果 |
conferences | review_mode (detailed/quick) | 大会の既定査読モード |
| ビュー | 内容 |
|---|---|
review_progress_summary | 大会ごとの演題ステータス集計(完了率含む) |
reviewer_progress | 査読者ごとの割当・完了・進捗率 |
| 関数 | 内容 |
|---|---|
calculate_quick_review_result(abstract_id) | 簡易査読の多数決集計(推奨判定を返す) |
今回の3機能は既存の査読システムを拡張するもので、既存機能を壊しません。
| 既存機能 | 今回の追加 | 共存 |
|---|---|---|
8項目詳細査読/review/[id] | 簡易3ボタン査読/review/quick | review_mode で識別。両方使える |
手動査読者割当assignReviewer() | 招待→承諾→自動割当autoAssignFromAccepted() | 招待フローは追加オプション。手動割当も引き続き利用可 |
査読者管理画面/admin/reviewers | 仕分け進捗/admin/review-progress | 別ページ。既存画面はそのまま |
| コミット | 内容 |
|---|---|
9b418a9 | test: E2Eテスト追加(11件全パス) |
e1bddcc | feat: 簡易査読・招待・進捗ダッシュボード追加 |