# Paper Workflow — Manual End-to-End Test Checklist

Use this checklist to verify the full in-app paper submission and double-blind review workflow. Run tests on a **staging** environment with mail delivery configured (or inspect **Admin → Paper Notifications** for queued/sent status).

## Prerequisites

- [ ] Active conference with **internal paper submission** enabled and sub-themes configured
- [ ] Conference `paper_review_mode` set (single or double-blind); note which mode you are testing
- [ ] System scheduler running (`php artisan schedule:work` or cron) for email batches and reminders
- [ ] Test accounts prepared:

| Role | Purpose |
|------|---------|
| **Author** | Pays review fee, submits paper, uploads revision |
| **Admin / paper manager** | Desk review, reviewer assignment |
| **Reviewer ×2** (or ×1 for single-blind mode) | Accept assignment, submit scores |
| **Track chair** | Sub-theme scoped recommendation, minor revision approval |
| **Program chair** | Final accept/reject/revision decision |
| **Scoped admin** (optional) | Verify RBAC on notification log show/resend |

Assign chair roles at **Admin → Conferences → Paper Roles** before stage 5.

---

## Stage 1 — Submission

**Route:** User → Submit Paper (`/user/submit-paper`)

- [ ] Author pays paper review fee first (User → Paper Review Fee)
- [ ] Author submits PDF with title, abstract, sub-theme, and co-authors
- [ ] Redirect to **My Papers** with success message
- [ ] Paper appears with status **Submitted**
- [ ] **E1** queued/sent to author (Paper Notifications)
- [ ] Admin dashboard notification for new submission (if configured)
- [ ] **Admin → Papers** lists the new paper with correct conference and sub-theme

---

## Stage 2 — Desk review

**Route:** Admin → Papers → Manage → Desk review panel

- [ ] Admin clicks **Begin desk review** → status **Desk Review**
- [ ] **Pass desk review:**
  - [ ] Double-blind: anonymized PDF upload is **required**; pass fails without it
  - [ ] Single-blind: pass works without anonymized file
  - [ ] Status becomes **Under Review**
  - [ ] **E3** queued/sent to author
  - [ ] Desk pass recorded in workflow events / decisions
- [ ] **Reject desk review** (use a separate test paper):
  - [ ] Rejection reason required
  - [ ] Status **Desk Rejected** (terminal)
  - [ ] **E2** queued/sent to author

---

## Stage 3 — Reviewer assignment

**Route:** Admin → Papers → Manage → Assign reviewers

- [ ] Eligible reviewers listed (respects max load and existing assignments)
- [ ] Assign 2 reviewers (or 1 if conference uses single-review mode)
- [ ] Status moves to **Reviewers Assigned**
- [ ] **E4** queued/sent to each assigned reviewer
- [ ] Reviewers see assignment under **User → Review Assignments**
- [ ] Admin can remove a **non-submitted** assignment; cannot remove after review submitted

---

## Stage 4 — Peer review

**Route:** User → Review Assignments → Review

- [ ] Reviewer can **decline** with COI reason → assignment removed from active pool
- [ ] Reviewer **accepts** assignment
- [ ] **Download manuscript** serves anonymized file in double-blind mode; original in single-blind
- [ ] Blind view hides author identity from reviewer UI
- [ ] Reviewer submits scores (1–10), recommendation, comments to author/chair
- [ ] After required number of reviews submitted, status **Reviews Complete**
- [ ] Track chair receives dashboard notification
- [ ] Author **Paper Details** does **not** show `comments_to_chair` or reviewer identity

**Chair override path (optional):**

- [ ] Admin → Paper Review: chair/admin submits override review for paper still under review
- [ ] Paper moves to **Reviews Complete** without waiting for all reviewers

**Reminders (optional, may require date manipulation):**

- [ ] **E5** sent before deadline
- [ ] **E6** sent after deadline for overdue reviews

---

## Stage 5 — Track chair recommendation

**Route:** Admin → Track Recommendation Queue, or paper detail panel

- [ ] Only assigned **track chair** (matching sub-theme) can submit recommendation
- [ ] Non-chair admin with only `papers.view` cannot submit (403)
- [ ] Super admin can submit
- [ ] Recommendation saved as append-only **track_recommendation** decision (history preserved on re-recommend)
- [ ] Status **Awaiting Final Decision** (`decision_pending`)
- [ ] Program chair notified (dashboard)

---

## Stage 6 — Program chair final decision

**Route:** Admin → Final Decision Queue, or paper detail panel

- [ ] Only **program chair** for the conference can record final decision
- [ ] Test each outcome on separate papers (or sequential re-tests):

| Decision | Expected status | Email |
|----------|-----------------|-------|
| Accept | **Accepted** | E7 |
| Minor revision | **Minor Revision Required** | E8 |
| Major revision | **Major Revision Required** | E9 |
| Reject | **Rejected** | E10 |

- [ ] Revision deadline saved when provided
- [ ] Accept sets `camera_ready_approved_at`
- [ ] Final decision appears in decision history on paper detail

---

## Stage 7 — Author revision

**Route:** User → My Papers → Paper Details → Submit revised manuscript

- [ ] Upload form visible only for **minor_revision** or **major_revision**
- [ ] Author uploads revised PDF → status **Revision Submitted**
- [ ] Revised file downloadable from paper details

**Minor revision path:**

- [ ] Track chair notified (dashboard)
- [ ] Proceed to Stage 8a

**Major revision path:**

- [ ] Reviewers re-opened; **E11** queued/sent
- [ ] Status **Re-Review**
- [ ] Reviewers submit updated reviews → **Reviews Complete** again
- [ ] Repeat Stages 5–6 for final outcome

---

## Stage 8 — Completion

### 8a — Minor revision approval (track chair)

**Route:** Admin → Papers → Manage → Approve minor revision

- [ ] Only track chair (or super admin) can approve
- [ ] Status **Accepted**; `camera_ready_approved_at` set
- [ ] **E7** queued/sent
- [ ] Prior track recommendations and decisions remain in history (not cleared)

### 8b — Direct acceptance (from Stage 6)

- [ ] Author sees **Accepted** on My Papers / Paper Details
- [ ] No further revision upload required unless policy changes

### 8c — Rejection (desk or final)

- [ ] Terminal status; no reviewer assignment or revision actions available

---

## Cross-cutting checks

### Email & notifications

- [ ] **Admin → Paper Email Templates** — templates E1–E11 present and editable
- [ ] **Admin → Paper Notifications** — logs show correct template, recipient, status
- [ ] **Resend** on a log entry works for authorized admin
- [ ] **RBAC:** conference-scoped admin can view/resend logs for their conference only
- [ ] **RBAC:** same admin gets **403** on show/resend for another conference’s log ID

### RBAC & navigation

- [ ] All admin paper routes reachable from sidebar for user with `papers` scope
- [ ] Chair queue pages filter papers by chair assignment (non–super-admin)
- [ ] User sidebar shows **Review Assignments** when user has open assignments or `reviewer` role

### Audit trail

- [ ] **Workflow events** recorded on each status change
- [ ] Multiple track recommendations kept (append-only)
- [ ] Paper detail shows reviewer scores as “Reviewer #N” on admin view (not names to chairs in blind mode where applicable)

### External submission (parallel path — should **not** enter workflow)

- [ ] Conference with external portal: author pays fee and registers accepted paper only
- [ ] External paper does **not** appear in desk review / reviewer assignment workflow

---

## Quick smoke test (happy path, double-blind)

1. Author submits → E1  
2. Admin passes desk review with anonymized PDF → E3  
3. Admin assigns 2 reviewers → E4  
4. Both reviewers accept and submit reviews → Reviews Complete  
5. Track chair recommends accept → Decision Pending  
6. Program chair accepts → E7, Accepted  

**Estimated time:** 45–90 minutes with test accounts pre-created.

---

## Sign-off

| Tester | Date | Environment | Result |
|--------|------|-------------|--------|
| | | | ☐ Pass / ☐ Fail |

**Notes / defects:**

```
```
