endai-system 査読仕分け機能 引き継ぎ資料

作成日: 2026-03-06 | 本番: https://endai-system.vercel.app | DB: Supabase (PostgreSQL)
完了済み: 3機能の実装・ビルド・デプロイ・E2Eテスト11件全パス
残り: Supabaseマイグレーション実行 + ログイン後の操作テスト

1. 実装済み機能の概要

1-1. 簡易査読モード /review/quick

学会抄録(600演題規模)を短時間で仕分けるための画面。

演題を1件表示
タイトル・著者・抄録全文
内容を読む
採択 / 要修正 / 不採択
3ボタンをクリック
次の演題へ自動遷移
全完了でお祝い画面

1-2. 査読者招待フロー /review-invitation

管理者:
メール招待
査読者:
メール受信
[承諾する] or
[辞退する]
管理者:
承諾者で自動割当

1-3. 仕分け進捗ダッシュボード /admin/review-progress

2. 手動作業(優先度順)

2-1. Supabaseマイグレーション実行 必須 SQL

以下のSQLをSupabaseコンソールの SQL Editor で実行してください。

  1. Supabase Dashboard にログイン
  2. プロジェクト選択 → SQL Editor を開く
  3. supabase/migrations/031_quick_review_and_invitations.sql の内容を貼り付け
  4. 「Run」を実行
注意: マイグレーション未実行だと、簡易査読・招待機能はDB側でエラーになります。 デプロイ済みのコードはマイグレーション後に自動で機能します。
マイグレーション内容(クリックで展開)
-- 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 を参照)

2-2. ログインしての操作テスト 必須 テスト

マイグレーション実行後、管理者アカウントでログインして確認:

2-3. メール送信テスト 推奨 設定

APIキー未設定の場合: メール送信はスキップされ、コンソールにログが出力されます。 招待レコード自体はDBに作成されるため、機能テストはAPIキーなしでも部分的に可能です。

2-4. 600演題の実運用テスト 任意

3. 作成ファイル一覧

ファイル種別内容
supabase/migrations/031_quick_review_and_invitations.sqlDBテーブル・カラム・ビュー・関数の追加
src/lib/actions/quick-review.tsServer Action簡易査読の提出・集計・一括反映・次の演題取得
src/lib/actions/reviewer-invitation.tsServer Action招待送信・一括招待・承諾/辞退・承諾者で自動割当
src/lib/actions/review-progress.tsServer Action全体集計・査読者別・カテゴリ別・日別推移
src/app/(main)/review/quick/page.tsxPage簡易査読画面(3ボタン式)
src/app/review-invitation/page.tsxPage招待応答ページ(公開・認証不要)
src/app/review-invitation/layout.tsxLayoutSuspense boundary
src/app/admin/review-progress/page.tsxPage進捗ダッシュボード(Server Component)
src/components/admin/progress-dashboard.tsxComponentダッシュボードUI(Client Component)
e2e/quick-review-features.spec.tsTestE2Eテスト(11件)

変更ファイル

ファイル変更内容
src/types/database.tsreviews に 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既存ビルドエラー修正

4. DB変更まとめ

新規テーブル

テーブルカラム(主要)用途
reviewer_invitationsemail, token, status, conference_id, max_assignments査読者招待の管理

既存テーブルの変更

テーブル追加カラム用途
reviewsreview_mode (detailed/quick)査読モード識別
reviewsquick_decision (accept/revise/reject)簡易査読の判定結果
conferencesreview_mode (detailed/quick)大会の既定査読モード

新規ビュー

ビュー内容
review_progress_summary大会ごとの演題ステータス集計(完了率含む)
reviewer_progress査読者ごとの割当・完了・進捗率

新規関数

関数内容
calculate_quick_review_result(abstract_id)簡易査読の多数決集計(推奨判定を返す)

5. 既存機能との関係

今回の3機能は既存の査読システムを拡張するもので、既存機能を壊しません。

既存機能今回の追加共存
8項目詳細査読
/review/[id]
簡易3ボタン査読
/review/quick
review_mode で識別。両方使える
手動査読者割当
assignReviewer()
招待→承諾→自動割当
autoAssignFromAccepted()
招待フローは追加オプション。手動割当も引き続き利用可
査読者管理画面
/admin/reviewers
仕分け進捗
/admin/review-progress
別ページ。既存画面はそのまま

6. コミット履歴

コミット内容
9b418a9test: E2Eテスト追加(11件全パス)
e1bddccfeat: 簡易査読・招待・進捗ダッシュボード追加

7. 今後の改善候補