Skip to content

Peer Review Workflow Support (Phase 2) #1370

Description

@vincentauger

Description

Regions want built-in peer review coordination.

Proposed Solution

  • Allow assigning internal reviewers
  • Track acceptance/decline
  • Track deadlines
  • Upload review forms
  • Generate reviewer reminders

Implementation Details

Database Changes

The codebase already has /app/Models/ManuscriptPeerReviewer.php - extend it:

Schema::table('manuscript_peer_reviewers', function (Blueprint $table) {
    $table->string('status')->default('requested'); // requested, accepted, declined, completed
    $table->timestamp('requested_at')->nullable();
    $table->timestamp('responded_at')->nullable();
    $table->timestamp('deadline')->nullable();
    $table->timestamp('completed_at')->nullable();
    $table->text('comments')->nullable();
});

Or create dedicated peer review table:

Schema::create('peer_reviews', function (Blueprint $table) {
    $table->id();
    $table->foreignId('manuscript_record_id')->constrained();
    $table->foreignId('reviewer_user_id')->constrained('users');
    $table->foreignId('assigned_by_user_id')->constrained('users');
    $table->string('status'); // PeerReviewStatus enum
    $table->timestamp('deadline')->nullable();
    $table->text('reviewer_comments')->nullable();
    $table->timestamps();
});

Backend Changes

  • Enum: Create /app/Enums/PeerReviewStatus.php:
    enum PeerReviewStatus: string {
      case REQUESTED = 'requested';
      case ACCEPTED = 'accepted';
      case DECLINED = 'declined';
      case IN_PROGRESS = 'in_progress';
      case COMPLETED = 'completed';
      case OVERDUE = 'overdue';
    }
  • Model: Enhance /app/Models/ManuscriptPeerReviewer.php with:
    • Status tracking
    • Deadline scopes (like ManagementReviewStep)
    • Activity logging
  • Controller: Create /app/Http/Controllers/PeerReviewController.php:
    • assign() - Assign reviewer
    • accept() - Reviewer accepts
    • decline() - Reviewer declines
    • complete() - Submit review
  • Mail Classes:
    • PeerReviewRequestMail.php
    • PeerReviewReminderMail.php
    • PeerReviewCompleteMail.php
  • Commands:
    • SendPeerReviewReminders.php (scheduled)
  • Media: Review forms uploaded to peer_review_forms collection

Frontend Changes

  • Reviewer assignment UI (user picker)
  • Reviewer dashboard showing assigned reviews
  • Status tracking visualization
  • Review form upload interface
  • Deadline indicators

Pros

  • Foundation already exists (ManuscriptPeerReviewer model)
  • Can mirror ManagementReviewStep patterns
  • Comprehensive audit trail via activity logging

Cons

  • Significant new feature surface area
  • Need to define exact workflow states
  • Integration with external review systems?
  • Phase 2 scope - plan carefully

Acceptance Criteria

  • Reviewer assignment UI exists
  • Review states tracked (requested → accepted → overdue → complete)
  • Full audit trail stored
  • Review forms can be uploaded
  • Deadline reminders sent automatically

Labels

peer-review, phase-2, enhancement

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions