Story 4.1: Moderator Review Queue - Wireframe
Story: Epic 4, Story 4.1 - Content Quality Review
API Consolidation Update (2025-10-04): This wireframe has been updated to use consolidated APIs from Stories 1.17, 1.20, and 1.26:
- Review queue now uses
/api/v1/content?filter={"status":"pending_review"}(Story 1.20) - Content details use
/api/v1/content/{id}?include=session,speaker,event,materials(Story 1.20) - File operations unified under
/api/v1/content/{id}/downloadand/preview(Story 1.20) - Review submissions use
PATCH /api/v1/content/{id}for status updates (Story 1.20) - Bulk operations supported via array PATCH (Story 1.20)
- Notifications use
/api/v1/notifications(Story 1.26) - API Reduction: From 13 fragmented endpoints to 6 consolidated content APIs
Visual Wireframe
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ Back to Dashboard Moderator Review Queue [Filter โท] [Sort โท] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโ REVIEW QUEUE OVERVIEW โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ ๐ Queue Status: โณ Pending (8) ๐๏ธ Under Review (3) โ
Approved (24) โ โ
โ โ โ ๏ธ Requires Changes (2) โ Rejected (1) โ โ
โ โ โ โ
โ โ โฑ๏ธ Average Review Time: 1.5 hours | ๐ This Week: 12 completed โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโ FILTERS & ACTIONS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Event: [All Events โท] Status: [Pending โท] Speaker: [All โท] โ โ
โ โ โ โ
โ โ Quick Filters: [โ ๏ธ Urgent (2)] [๐
Due Soon (5)] [๐ Revisions (2)] โ โ
โ โ โ โ
โ โ [ Bulk Approve Selected ] [ Bulk Request Changes ] [ Export Report ] โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโ PENDING REVIEWS โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โณ PENDING ๐ด URGENT: Due in 6 hours โ โ โ
โ โ โ โ โ โ
โ โ โ Session: "Kubernetes at Scale: Production Best Practices" โ โ โ
โ โ โ Speaker: Peter Muller (TechCorp AG) โ โ โ
โ โ โ Event: Spring Conference 2025 (May 15, 2025) โ โ โ
โ โ โ โ โ โ
โ โ โ ๐ Abstract: 847/1000 chars | ๐ Presentation: uploaded.pdf (12MB) โ โ โ
โ โ โ ๐ค Speaker Photo: โ
| ๐ Bio: โ
| ๐ง Tech Req: โ
โ โ โ
โ โ โ โ โ โ
โ โ โ Submitted: 2 days ago | Deadline: Today 17:00 โ โ โ
โ โ โ โ โ โ
โ โ โ [Review Now] [Preview Abstract] [Download Materials] [Assign to Me] โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โณ PENDING ๐ก Due in 1 day โ โ โ
โ โ โ โ โ โ
โ โ โ Session: "Zero Trust Security Architecture" โ โ โ
โ โ โ Speaker: Thomas Weber (Swiss Re) โ โ โ
โ โ โ Event: Spring Conference 2025 (May 15, 2025) โ โ โ
โ โ โ โ โ โ
โ โ โ ๐ Abstract: 1024/1000 chars โ ๏ธ | ๐ Presentation: not uploaded โ ๏ธ โ โ โ
โ โ โ ๐ค Speaker Photo: โ
| ๐ Bio: โ
| ๐ง Tech Req: pending โ ๏ธ โ โ โ
โ โ โ โ โ โ
โ โ โ Submitted: 5 hours ago | Deadline: Tomorrow 17:00 โ โ โ
โ โ โ โ โ โ
โ โ โ [Review Now] [Preview Abstract] [Request Missing Items] [Assign to Me]โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ ๐๏ธ UNDER REVIEW by Anna Lopez (me) โฑ๏ธ Started 45 minutes ago โ โ โ
โ โ โ โ โ โ
โ โ โ Session: "GitOps Implementation Patterns" โ โ โ
โ โ โ Speaker: Maria Schmidt (TechFlow GmbH) โ โ โ
โ โ โ Event: Spring Conference 2025 (May 15, 2025) โ โ โ
โ โ โ โ โ โ
โ โ โ ๐ Abstract: 923/1000 chars | ๐ Presentation: gitops-slides.pdf โ โ โ
โ โ โ ๐ค Speaker Photo: โ
| ๐ Bio: โ
| ๐ง Tech Req: โ
โ โ โ
โ โ โ โ โ โ
โ โ โ [Continue Review] [Preview Abstract] [Complete Review] โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ ๐ REVISION REQUESTED Waiting for speaker (deadline in 3 days) โ โ โ
โ โ โ โ โ โ
โ โ โ Session: "Container Security Best Practices" โ โ โ
โ โ โ Speaker: David Klein (SecureCloud Inc.) โ โ โ
โ โ โ Event: Spring Conference 2025 (May 15, 2025) โ โ โ
โ โ โ โ โ โ
โ โ โ Initial Review: 3 days ago by Anna Lopez (me) โ โ โ
โ โ โ Issues: Abstract exceeds limit, too promotional, missing tech reqs โ โ โ
โ โ โ โ โ โ
โ โ โ [View Original Feedback] [Check Resubmission] [Send Reminder] โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ [Load More Reviews (4 more) โ] โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Review Detail Modal
โโโโโโโโโโโโโโโโโโโ CONTENT QUALITY REVIEW โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [X] โ
โ โ
โ Session: "Kubernetes at Scale: Production Best Practices" โ
โ Speaker: Peter Muller (TechCorp AG) โข peter.muller@techcorp.ch โ
โ Event: Spring Conference 2025 โข May 15, 2025 โข 14:00-14:45 โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโ ABSTRACT REVIEW โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Character Count: 847/1000 โ
(Within limit) โ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Title: "Kubernetes at Scale: Production Best Practices" โ โ โ
โ โ โ โ โ โ
โ โ โ Abstract: โ โ โ
โ โ โ This session explores battle-tested strategies for running โ โ โ
โ โ โ Kubernetes in production at scale. We'll cover real-world โ โ โ
โ โ โ challenges we faced when scaling from 10 to 1000+ pods, โ โ โ
โ โ โ including resource management, monitoring, security hardening, โ โ โ
โ โ โ and cost optimization. Drawing from 3 years of production โ โ โ
โ โ โ experience at TechCorp, I'll share lessons learned, common โ โ โ
โ โ โ pitfalls to avoid, and architectural patterns that work. โ โ โ
โ โ โ โ โ โ
โ โ โ Key Takeaways: โ โ โ
โ โ โ โข Auto-scaling strategies for unpredictable workloads โ โ โ
โ โ โ โข Network policy implementation for multi-tenant clusters โ โ โ
โ โ โ โข Observability stack design (Prometheus, Grafana, ELK) โ โ โ
โ โ โ โข CI/CD pipeline integration with GitOps โ โ โ
โ โ โ โข Cost optimization techniques that saved us 40% โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ Quality Checks: โ โ
โ โ โ Contains lessons learned / real-world experience โ โ
โ โ โ Specific and actionable content โ โ
โ โ โ Appears to be product promotion โ ๏ธ (borderline - mentions specific tools) โ
โ โ โ Appropriate technical level for audience โ โ
โ โ โ Clear learning objectives โ โ
โ โ โ โ
โ โ Abstract Rating: โญโญโญโญโ (4/5) โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโ MATERIALS REVIEW โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ ๐ Presentation: k8s-production-best-practices.pdf (12.3 MB) โ โ
โ โ Uploaded: 2 days ago โข Format: PDF โข Pages: 45 โ โ
โ โ [Preview] [Download] [Request Revision] โ โ
โ โ โ โ
โ โ ๐ค Speaker Photo: peter-muller.jpg (2.1 MB) โ
โ โ
โ โ Professional headshot, good quality โ โ
โ โ [View Photo] โ โ
โ โ โ โ
โ โ ๐ Biography: โ
(342 characters) โ โ
โ โ "Peter Muller is a Principal Engineer at TechCorp AG with..." โ โ
โ โ [View Full Bio] โ โ
โ โ โ โ
โ โ ๐ง Technical Requirements: โ
โ โ
โ โ โข Projector: Required โ โ
โ โ โข Microphone: Required โ โ
โ โ โข Internet: Required (for live demos) โ โ
โ โ โข Special: Backup laptop with slides (in case of failure) โ โ
โ โ โ โ
โ โ Completeness: โโโโโโโโโโโโโโโโโโโโ 100% Complete โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโ REVIEWER NOTES & FEEDBACK โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ [Feedback to Speaker:] โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Excellent abstract with clear learning objectives! The real- โ โ โ
โ โ โ world experience and specific metrics (40% cost savings) add โ โ โ
โ โ โ credibility. One minor note: please ensure your live demos have โ โ โ
โ โ โ offline fallbacks in case of connectivity issues. โ โ โ
โ โ โ โ โ โ
โ โ โ Your presentation looks comprehensive. Consider adding a final โ โ โ
โ โ โ "Resources & Further Reading" slide to maximize attendee value. โ โ โ
โ โ โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โ [Internal Notes (not visible to speaker):] โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Strong submission. TechCorp is a Gold partner, good for โ โ โ
โ โ โ diversity. Peter spoke at Fall 2024 event (well-received). โ โ โ
โ โ โ Recommended approval. โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโ REVIEW DECISION โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ Review Status: [Approve โ
] [Request Changes โ ๏ธ] [Reject โ] โ โ
โ โ โ โ
โ โ If requesting changes: โ โ
โ โ โ Abstract exceeds character limit โ โ
โ โ โ Abstract appears promotional โ โ
โ โ โ Abstract lacks lessons learned โ โ
โ โ โ Missing presentation file โ โ
โ โ โ Missing speaker photo โ โ
โ โ โ Missing biography โ โ
โ โ โ Incomplete technical requirements โ โ
โ โ โ Other (specify in feedback) โ โ
โ โ โ โ
โ โ Revision Deadline: [Select Date โท] (Default: 5 days from now) โ โ
โ โ โ โ
โ โ โ Send email notification to speaker โ โ
โ โ โ Copy organizers on decision โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ [ Cancel ] [Save Draft] [Submit Review] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Key Interactive Elements
- [โ Back to Dashboard] button: Return to Event Management Dashboard (story-1.16-event-management-dashboard.md)
- [Filter โท] dropdown: Filter by event, status, speaker, urgency
- [Sort โท] dropdown: Sort by deadline, submission date, event date, speaker name
- Quick filter badges: One-click filters for urgent, due soon, revisions
- [ Bulk Approve Selected ] button: Approve multiple selected reviews at once
- [ Bulk Request Changes ] button: Request changes for multiple submissions
- [ Export Report ] button: Download review queue report (CSV/PDF)
- [Review Now] button: Opens review detail modal for selected submission
- [Preview Abstract] button: Quick preview modal without opening full review
- [Download Materials] button: Download all submitted materials as ZIP
- [Assign to Me] button: Claim review assignment to prevent duplicate work
- [Continue Review] button: Resume in-progress review
- [Complete Review] button: Finalize and submit review decision
- [View Original Feedback] button: View feedback from previous review cycle
- [Check Resubmission] button: Check if speaker has resubmitted changes
- [Send Reminder] button: Send reminder email to speaker about pending revision
- Review card click: Opens full review detail modal
- Status badges: Visual indicators (โณ Pending, ๐๏ธ Under Review, โ Approved, โ ๏ธ Requires Changes, โ Rejected)
- Urgency indicators: Color-coded urgency (๐ด Urgent, ๐ก Due Soon, ๐ข On Track)
- Checkbox selection: Multi-select reviews for bulk actions
Review Detail Modal Elements
- [X] close button: Close modal and return to queue
- Abstract text area: Display full abstract with character count
- Quality check checkboxes: Validate abstract against standards
- Abstract rating: 1-5 star rating system
- [Preview] button: Preview presentation in browser
- [Download] button: Download individual files
- [Request Revision] button: Request changes to specific material
- [View Photo] button: Full-screen speaker photo preview
- [View Full Bio] button: Expand biography in modal
- Feedback text areas: Public feedback and private notes
- [Approve โ ] button: Approve submission and advance to next workflow step
- [Request Changes โ ๏ธ] button: Send back to speaker with feedback
- [Reject โ] button: Reject submission (rare, requires justification)
- Change request checkboxes: Pre-defined common issues for feedback
- Revision deadline picker: Set deadline for speaker to address changes
- Notification toggles: Control email notifications
- [Save Draft] button: Save work in progress without submitting
- [Submit Review] button: Finalize and submit review decision
Functional Requirements Met
- FR9: Quality control standards enforcement through systematic review process
- Workflow Step 7: Content quality review before slot assignment
- FR19: Multi-organizer coordination (moderator can see whoโs reviewing what)
- Feedback Loop: Structured feedback mechanism with revision workflow
Technical Notes
- Real-time Updates: WebSocket connection for queue status updates when other moderators claim/complete reviews
- Auto-assignment: Prevent duplicate work by claiming reviews (โAssign to Meโ)
- Draft Saving: Auto-save review progress every 30 seconds to prevent data loss
- File Preview: In-browser PDF preview using PDF.js library
- Character Counter: Live character count for abstract validation
- Bulk Operations: Optimized bulk API calls for multi-select actions
- Urgency Calculation: Based on deadline proximity (< 12 hours = urgent, < 24 hours = due soon)
- Review Timer: Track how long moderator spends on each review
- Notification System: Email notifications to speakers on review decisions
- Version Control: Track revision cycles and feedback history
API Requirements
Initial Page Load APIs
-
GET /api/v1/content
- Query params:
filter={"status": "pending_review", "moderatorId": "{userId}"}&sort=deadline&order=asc&page=1&limit=50&include=session,speaker,event,materials - Returns: Array of content submissions with full context (session details, speaker info, event data, materials)
- Used for: Display pending reviews queue with all required information
- Source: Story 1.20 (Content API Consolidation)
- Query params:
-
GET /api/v1/content/analytics
- Query params:
metrics=pending,underReview,approved,requiresChanges,rejected,averageReviewTime,weeklyCompleted&userId={moderatorId} - Returns: Queue statistics (counts by status, performance metrics)
- Used for: Display queue overview section with statistics
- Source: Story 1.20 (Content API Consolidation)
- Query params:
-
GET /api/v1/events
- Query params:
filter={"status": "active"}&fields=id,title,date&limit=100 - Returns: List of active events for filter dropdown
- Used for: Populate event filter options
- Source: Story 1.17 (Events API Consolidation)
- Query params:
User Action APIs
-
GET /api/v1/content/{contentId}
- Triggered by: User clicks [Review Now] on a submission
- Query params:
include=session,speaker,event,materials,reviews,history - Returns: Complete content object with full details (abstract, materials, speaker info, event details, submission history)
- Used for: Display review detail modal with all information
- Source: Story 1.20 (Content API Consolidation)
-
PATCH /api/v1/content/{contentId}
- Triggered by: User clicks [Submit Review] after completing review
- Payload:
{ "status": "approved" | "requires_changes" | "rejected", "reviewFeedback": "...", "abstractReview": {...}, "materialReview": {...}, "revisionRequested": true, "revisionDeadline": "2025-05-10T17:00:00Z", "internalNotes": "..." } - Returns: Updated content object with review decision
- Used for: Submit review decision, send notifications to speaker
- Source: Story 1.20 (Content API Consolidation)
-
PATCH /api/v1/content/{contentId}
- Triggered by: User clicks [Assign to Me]
- Payload:
{ "status": "under_review", "reviewerId": "{userId}", "reviewStartedAt": "2025-01-15T10:00:00Z" } - Returns: Updated content with assigned reviewer
- Used for: Claim review to prevent duplicate work, update queue status
- Source: Story 1.20 (Content API Consolidation)
-
PATCH /api/v1/content/{contentId}
- Triggered by: Auto-save every 30 seconds or [Save Draft] click
- Payload:
{ "draftReview": { "feedback": "...", "abstractReview": {...}, "materialReview": {...}, "internalNotes": "..." } } - Returns: Confirmation of draft saved
- Used for: Save work in progress without changing review status
- Source: Story 1.20 (Content API Consolidation)
-
GET /api/v1/content/{contentId}/download
- Triggered by: User clicks [Download] on presentation or materials
- Query params:
materialId={}&type=presentation|document|attachment - Returns: Presigned S3 download URL or direct file stream
- Used for: Download submitted materials for review
- Source: Story 1.20 (Content API Consolidation)
-
GET /api/v1/content/{contentId}/preview
- Triggered by: User clicks [Preview] on presentation
- Query params:
materialId={} - Returns: Presigned S3 URL or base64-encoded content for in-browser viewing
- Used for: In-browser PDF/document preview in modal
- Source: Story 1.20 (Content API Consolidation)
-
PATCH /api/v1/content
- Triggered by: User selects multiple reviews and clicks [Bulk Approve Selected] or [Bulk Request Changes]
- Payload:
[{ "id": "content-1", "status": "approved", "reviewFeedback": "..." }, { "id": "content-2", "status": "approved", "reviewFeedback": "..." }] - Returns: Batch operation result with success/failure status per item
- Used for: Process multiple reviews simultaneously
- Source: Story 1.20 (Content API Consolidation) - bulk operations
-
POST /api/v1/content/export
- Triggered by: User clicks [Export Report]
- Payload:
{ "format": "csv|pdf", "filter": {"status": "all|pending|approved", "dateRange": "last_week|last_month|custom"}, "moderatorId": "{userId}" } - Returns: Download URL or file stream for report
- Used for: Generate queue status report for management
- Source: Story 1.20 (Content API Consolidation)
-
POST /api/v1/notifications
- Triggered by: User clicks [Send Reminder] on revision-requested item
- Payload:
{ "type": "revision_reminder", "recipientId": "{speakerId}", "contentId": "{contentId}", "customMessage": "..." } - Returns: Notification sent confirmation
- Used for: Send reminder email to speaker about pending revision
- Source: Story 1.26 (Notifications API Consolidation)
-
GET /api/v1/content/{contentId}/versions
- Triggered by: User clicks [View Original Feedback] on revision item
- Query params:
include=reviews&page=1&limit=10 - Returns: Array of previous content versions with review cycles (reviewerId, reviewedAt, status, feedback, changes)
- Used for: Display revision history and previous feedback
- Source: Story 1.20 (Content API Consolidation)
Navigation Map
Primary Navigation Actions
-
โ Back button โ Navigate to
Event Management Dashboard(story-1.16-event-management-dashboard.md)- Target: Organizer main dashboard
- Context: Return from moderator review queue
-
[Review Now] button โ Opens
Review Detail Modal- Target: Modal overlay (same page) with full review interface
- Context: sessionId, current review status, speaker info
-
[Continue Review] button โ Opens
Review Detail Modalwith saved draft- Target: Modal overlay with work in progress loaded
- Context: reviewId, saved draft data
Secondary Navigation (Data Interactions)
-
Review card click โ Opens
Review Detail Modal- Target: Modal overlay with review details
- Context: sessionId, submission details
-
[Preview Abstract] button โ Opens
Abstract Preview Modal- Target: Quick preview modal (lighter than full review)
- Context: Abstract text, character count, quality checks
-
[Download Materials] button โ Downloads ZIP file
- Action: Generate and download ZIP of all materials
- Target: File download
- Context: sessionId, all material fileIds
-
Speaker name link โ Navigate to
Speaker Profile Detail View(story-7.1-speaker-profile-detail-view.md)- Target: Full speaker profile page
- Context: speakerId, speaking history
-
Event name link โ Navigate to
Event Detail/Edit Screen(story-1.16-event-detail-edit.md)- Target: Event management page
- Context: eventId, current event status
Event-Driven Navigation
-
[Submit Review] button โ Updates queue and may navigate
- Action: Submit review decision
- Effect: Update queue status, send notifications, advance workflow
- Navigation: Modal closes, returns to updated queue
- Context: Review decision triggers workflow progression
-
[Bulk Approve Selected] button โ Batch operation
- Action: Process multiple approvals
- Effect: Update multiple review statuses, send batch notifications
- Navigation: Queue refreshes with updated statuses
- Context: selectedReviewIds[]
WebSocket Real-Time Updates
-
Review claimed by another moderator โ Update UI
- Trigger: WebSocket message:
review_claimed - Effect: Remove from pending queue or show โUnder review by [Name]โ
- Context: reviewId, reviewerName
- Trigger: WebSocket message:
-
Review completed by another moderator โ Update statistics
- Trigger: WebSocket message:
review_completed - Effect: Update queue overview statistics
- Context: Updated counts for pending/approved/etc.
- Trigger: WebSocket message:
Error States & Redirects
-
Insufficient permissions โ Show error and redirect
- Condition: User not assigned moderator role for event
- Action: Display โYou are not a moderator for this eventโ message
- Target: Redirect to Event Management Dashboard
- Context: Event moderator assignment required
-
Review already claimed โ Show warning modal
- Condition: Another moderator already started review
- Action: Display โReview being processed by [Name]. Continue anyway?โ
- Options: [View Queue] or [Continue Anyway] (override)
- Context: Prevent duplicate work with override option
-
Session not found / deleted โ Remove from queue
- Condition: Session deleted or speaker withdrew
- Action: Show notification โSession no longer availableโ
- Effect: Remove from queue, update statistics
- Context: Graceful handling of stale queue items
-
Review deadline passed โ Show escalation notice
- Condition: Submission deadline passed without review
- Action: Highlight in red, show escalation notice
- Effect: Automatic notification to backup moderator
- Context: Escalation workflow triggered
Responsive Design Considerations
Mobile Layout Changes
Stacked Layout (320px - 768px):
- Queue overview: Stacked stats cards with horizontal scroll
- Filters: Collapsible filter panel (slide-in from side)
- Quick filters: Horizontal scrollable chips
- Review cards: Full-width stacked layout (one per row)
- Session title at top
- Speaker info and event stacked
- Material status icons in single row
- Deadlines and urgency prominently displayed
- Action buttons: Dropdown menu (โฎ) to save space
- Review modal: Full-screen takeover (not floating modal)
- Bulk actions: Bottom sheet modal
Tablet Layout (768px - 1024px):
- Two-column layout for review cards (when possible)
- Side-by-side filters and search
- Review modal: Larger modal (80% width) but not full-screen
Mobile-Specific Interactions
- Swipe gestures: Swipe review card right to approve, left to request changes
- Pull-to-refresh: Refresh queue and statistics
- Bottom sheet: Filters, bulk actions in bottom sheets
- Touch targets: 44px minimum for all interactive elements
- Sticky header: Queue overview stats sticky on scroll
- Progressive disclosure: Collapse less critical info on cards
- Quick actions: Long-press on review card for quick action menu
- Floating action button (FAB): Quick access to filters/sort
Accessibility Notes
- Keyboard Navigation: Full tab navigation with logical focus order through queue
- ARIA Labels:
aria-label="Review submission for Kubernetes at Scale session"on review cardsaria-label="Approve submission"on approve buttonaria-label="Request changes with feedback"on request changes buttonrole="queue"on review list witharia-labelledbypointing to queue header
- Screen Reader Announcements:
- Live region (
aria-live="polite") for queue status updates - Announcement when review claimed: โReview claimed by Anna Lopezโ
- Status changes announced: โReview approved. 7 reviews remaining.โ
- Live region (
- Color Contrast: WCAG 2.1 AA compliance
- Urgency colors: Red (urgent), Yellow (due soon), Green (on track) with icon + text
- Status badges: Color + icon for accessibility
- Focus Indicators: 2px solid outline on all focused elements
- Alt Text: All speaker photos have descriptive alt text
- Semantic HTML:
<main>for review queue section<article>for each review card<section>for queue overview, filters, review list
- Skip Links: โSkip to review queueโ link at top
- Form Labels: All form fields properly labeled in review modal
- Error Messages: Associated with fields using
aria-describedby
State Management
Local Component State
queueFilter: Current filter settings { event: โallโ, status: โpendingโ, speaker: โallโ, urgency: โallโ }sortBy: Current sort field (โdeadlineโ, โsubmissionDateโ, โeventDateโ, โspeakerNameโ)sortOrder: Sort direction (โascโ or โdescโ)selectedReviews: Array of selected review IDs for bulk actionsactiveReviewModal: Currently open review modal data (or null)draftReviewData: Auto-saved draft data for current reviewexpandedCards: Set of expanded review card IDs (for progressive disclosure)
Global State (Zustand Store)
reviewQueue: Array of pending review objectsqueueStatistics: Current queue statistics (counts, average time, etc.)currentModerator: Current userโs moderator profileeventList: Available events for filteringwebSocketConnected: Connection status for real-time updates
Server State (React Query)
useReviewQueue(moderatorId, filters, sort): Review queue with 30-second refetch intervaluseQueueStatistics(moderatorId): Statistics with 1-minute refetchuseReviewDetail(sessionId): Individual review details with 1-minute cacheuseReviewHistory(sessionId): Revision history with 5-minute cache
Real-Time Updates (WebSocket)
- WebSocket Connection:
/ws/moderators/{moderatorId}/queue- Real-time notifications when reviews claimed by other moderators
- Queue statistics updates when reviews completed
- New submission notifications
- Deadline approaching warnings
- Speaker resubmission notifications
Auto-Save Mechanism
- Draft Auto-Save: Every 30 seconds while review modal open
- Saves feedback text, quality checks, ratings, internal notes
- Survives browser refresh (stored in localStorage + server)
- Restored when modal reopened
- Cleared when review submitted
Form Validation Rules
Review Submission Validation
-
Required Fields:
- Review decision (approve/request changes/reject) - REQUIRED
- Feedback text when requesting changes - REQUIRED (min 20 chars)
- Feedback text when rejecting - REQUIRED (min 50 chars, must include justification)
- At least one change request checkbox when requesting changes - REQUIRED
-
Optional Fields:
- Feedback text when approving - OPTIONAL (but recommended)
- Abstract rating - OPTIONAL (defaults to no rating)
- Internal notes - OPTIONAL
- Revision deadline - OPTIONAL (defaults to 5 days from now if not specified)
-
Field-Specific Validation:
- Feedback text: Max 2000 characters
- Internal notes: Max 1000 characters
- Revision deadline: Must be future date, max 30 days from now
- Abstract rating: 1-5 stars only
Error Messages
- Missing feedback: โPlease provide feedback when requesting changesโ
- Insufficient feedback: โFeedback must be at least 20 charactersโ
- No change requested: โPlease select at least one issue to addressโ
- Invalid deadline: โRevision deadline must be between tomorrow and 30 days from nowโ
- Rejection without justification: โPlease provide detailed justification for rejection (min 50 characters)โ
Edge Cases & Error Handling
-
Empty Queue:
- Show โNo pending reviewsโ message
- Display congratulations badge: โGreat job! Queue is empty ๐โ
- Suggest: โCheck approved reviewsโ or โView upcoming submissionsโ
-
Loading State:
- Display skeleton cards for review queue (4-6 skeleton items)
- Show loading spinner in queue overview
- Disable filters and actions while loading
-
Error State (API Failure):
- Show error banner: โUnable to load review queue. Please try again.โ
- Provide [Retry] button to refetch data
- Maintain last successful queue data if available (with โshowing cached dataโ indicator)
-
Review Already Claimed:
- Show warning modal: โThis review is currently being processed by [Moderator Name]โ
- Options: [View Other Reviews] or [Continue Anyway] (with warning about duplicate work)
- Track whoโs reviewing what via WebSocket
-
Concurrent Review Conflict:
- Detect when another moderator completes review while current user has modal open
- Show warning: โThis review was just completed by [Name]. Your changes cannot be saved.โ
- Options: [View Their Feedback] or [Close Modal]
-
Session Withdrawn/Deleted:
- Show notice: โSpeaker has withdrawn from this sessionโ
- Automatically remove from queue
- Log withdrawal for audit trail
-
Materials Missing After Initial Submission:
- Show warning: โSome materials are no longer availableโ
- Options: [Request Reupload] or [Review With Available Materials]
- Track file availability status
-
Deadline Passed During Review:
- Show urgent banner: โโ ๏ธ Deadline has passed while reviewingโ
- Auto-escalate to backup moderator
- Still allow review completion with note added
-
Bulk Operation Partial Failure:
- Show results: โ3 of 5 reviews processed successfullyโ
- List failed items with reasons
- Option to retry failed items individually
-
Network Offline (PWA):
- Show โYouโre offlineโ banner
- Disable submission but allow review draft to continue
- Auto-sync when connection restored
- Queue drafts locally until online
-
Draft Recovery:
- On browser crash/close: Restore draft on next session
- Show notification: โRecovered unsaved review from previous sessionโ
- Option to [Continue] or [Discard]
-
Revision Resubmission:
- Highlight in queue: โ๐ Resubmitted - Ready for re-reviewโ
- Display diff from previous version
- Show original feedback for context
- Track revision cycle count
Change Log
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-10-04 | 1.0 | Initial wireframe creation for Moderator Review Queue Screen | ux-expert |
Review Notes
Stakeholder Feedback
To be added during review
Design Iterations
To be documented as design evolves
Open Questions
-
Review Time Limits: Should there be a maximum time limit for a moderator to hold a review?
- Recommendation: 4 hours max, then auto-release back to queue
- Prevents bottlenecks from abandoned reviews
- Decision needed from process team
-
Bulk Approval Safeguards: What safeguards prevent accidental bulk approvals?
- Recommendation: Confirmation modal for bulk actions affecting >5 items
- Require at least brief feedback for bulk approvals
- Decision needed from quality team
-
Review Metrics Tracking: Should we track individual moderator performance metrics?
- Metrics could include: average review time, approval rate, speaker satisfaction
- Privacy concern: metrics shouldnโt create pressure to approve quickly
- Decision needed from HR/management
-
Rejection Appeal Process: Can speakers appeal rejected submissions?
- Current design: Rejection is final (very rare, usually โrequires changesโ instead)
- Alternative: Appeal to senior organizer or event moderator
- Decision needed from governance team
-
Automated Quality Checks: Should AI/ML pre-screen abstracts for common issues?
- Could flag: excessive length, promotional language, missing key elements
- Recommendation: Advisory only, not blocking (moderator has final say)
- Technical feasibility assessment needed
-
Multi-Event Moderators: How to handle moderators assigned to multiple events?
- Current design: Filter by event or view all
- Alternative: Separate queues per event
- UX testing needed for optimal workflow