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
Labels
peer-review, phase-2, enhancement
Description
Regions want built-in peer review coordination.
Proposed Solution
Implementation Details
Database Changes
The codebase already has
/app/Models/ManuscriptPeerReviewer.php- extend it:Or create dedicated peer review table:
Backend Changes
/app/Enums/PeerReviewStatus.php:/app/Models/ManuscriptPeerReviewer.phpwith:ManagementReviewStep)/app/Http/Controllers/PeerReviewController.php:assign()- Assign revieweraccept()- Reviewer acceptsdecline()- Reviewer declinescomplete()- Submit reviewPeerReviewRequestMail.phpPeerReviewReminderMail.phpPeerReviewCompleteMail.phpSendPeerReviewReminders.php(scheduled)peer_review_formscollectionFrontend Changes
Pros
ManuscriptPeerReviewermodel)ManagementReviewSteppatternsCons
Acceptance Criteria
Labels
peer-review, phase-2, enhancement