Spaces:
Runtime error
Runtime error
feat: Implement new admin dashboard with video analysis, object moderation, and user management capabilities.
304bdf5 | # Product Requirement Document: Admin Dashboard & Manual Analysis Workflow | |
| ## 1. Overview | |
| The goal is to create a comprehensive Admin Dashboard for "Vault" that allows operations admins to monitor key platform metrics (users, videos, products) and manage a "Wizard of Oz" style workflow for AI product analysis. | |
| Currently, AI analysis can be tracked via technical logs, but this change shifts control to a user-friendly admin interface. It introduces a manual review step ("Wizard of Oz" method) where admins must approve or manually add products before they are visible to the end user. | |
| ## 2. User Roles & Permissions | |
| - **Admin**: Users with emails listed in the `ADMIN_EMAILS` environment variable. | |
| - **User**: Standard platform user (Creator/Viewer). | |
| ## 3. Features | |
| ### 3.1 Admin Dashboard (`/admin/dashboard`) | |
| A central hub for monitoring platform health and activity. | |
| #### Key Metrics: | |
| 1. **User Stats**: | |
| - Total registered users. | |
| - New users (last 24h/7d). | |
| 2. **Video Stats**: | |
| - Total videos submitted. | |
| - **Status Breakdown**: Pending Review, In Progress, Completed, Failed. | |
| 3. **Product Stats**: | |
| - **Matched Products** (With Links): Number of detected objects matched to a marketplace product. | |
| - **Unmatched Products** (Without Links): Detected objects pending a match. | |
| - **Interest Pledges**: Count of user "I want this" interactions. | |
| - **Suggestions**: Count of product suggestions from viewers (product requests) and affiliate proposals (suppliers). | |
| ### 3.2 Manual "AI" Analysis Workflow | |
| Replace the fully automated trigger with a human-in-the-loop review process. | |
| #### Workflow Steps: | |
| 1. **User Trigger**: | |
| - User clicks "Analyze Video" (or "Create Public Vault"). | |
| - **System Update**: Sets video `scan_status` to `pending_analysis`. | |
| - **User Visibility**: | |
| - Manually added products remain visible. | |
| - A "**Pending AI analysis**" indicator is shown, informing users that AI-detected products will be available soon. | |
| 2. **Admin Queue (`/admin/analysis-queue`)**: | |
| - Display list of videos with status `pending_analysis` or `awaiting_approval`. | |
| - Columns: Video Title, Creator, Submission Date, Current Status. | |
| - Action: "Review". | |
| 3. **Analysis Interface**: | |
| - **Video Player**: Watch the submitted video. | |
| - **Manual Product Entry**: | |
| - Form to add a "Detected Object" (Time, Category, Name). | |
| - Form to add "Marketplace Match" (Affiliate Link, Product Name, Price, Image). | |
| - **Admins can manually add products at any time.** | |
| - **Cross-Vault Product Reuse**: | |
| - List products already linked to this video in *other creators' vaults*. | |
| - Action: Move/Clone these suggestions directly into the current vault. | |
| - **AI Assistance**: "Run AI Analysis" button. | |
| - **System Update**: Sets `scan_status` to `in_progress`. | |
| - Triggers the AI pipeline. | |
| - Once finished, sets `scan_status` to `awaiting_approval`. | |
| - **Review & Approval**: | |
| - **Product-Level Approval**: Admin reviews individual AI results or manual entries and clicks "**Approve**" or "**Reject**" for each. | |
| - **Immediate Visibility**: Approved products appear in the vault immediately. | |
| - **Complete Review**: | |
| - Button: "**Mark Video as Done**". | |
| - **System Update**: Sets video `scan_status` to `completed`. | |
| - **Notifications**: | |
| - **Logged-in Users**: Trigger an in-app notification (and optional email) "Your AI Analysis is ready!". | |
| - **Anonymous Users**: Since we can't notify them directly, the "Pending AI analysis" UI should encourage them to bookmark the page or (new feature) optionally provide an email for a one-time alert. | |
| - **Action**: Video is removed from the admin's active review queue. | |
| ### 3.3 Mobile Admin Experience | |
| Ensure the `/admin` interface is fully responsive. | |
| - **Queue Table**: Use a card-based layout on mobile. | |
| - **Analysis Interface**: Stack the video player and detection list vertically. | |
| - **Controls**: Large, touch-friendly buttons for "Approve/Reject". | |
| ### 3.3 Product Status Monitoring (`/admin/products`) | |
| A view to manage and improve product data quality. | |
| * **Filterable List**: | |
| - "Missing Link": Objects without marketplace matches. | |
| - "Has Interest": Objects with high user interest pledges. | |
| - "User Suggestion": Pending product requests/proposals. | |
| * **Actions**: | |
| - **Add Link**: Quick entry for affiliate URL. | |
| - **Approve/Reject Suggestion**: Move a suggestion to a confirmed match. | |
| ## 4. Technical Requirements | |
| ### 4.1 Database Changes | |
| * **Schema**: | |
| - Ensure `video_scan_status` enum supports a manual review state (e.g., `pending_review`). | |
| - Reuse existing `admin_moderation` table for logging admin actions, or create `admin_analysis_log`. | |
| * **API**: | |
| - `GET /api/admin/stats`: Aggregate counts for dashboard. | |
| - `GET /api/admin/queue`: Fetch pending videos. | |
| - `POST /api/admin/analysis/complete`: Publish results. | |
| ### 4.2 UI Components | |
| * **Dashboard**: Use `shadcn/ui` Cards for metrics. | |
| * **Data Table**: Use `shadcn/ui` DataTable for video/product lists with filtering/sorting. | |
| * **Forms**: `react-hook-form` and `zod` for validation of manual product entry. | |
| ## 5. Future / Additional Suggestions | |
| 1. **Revenue & Click Tracking**: | |
| - Visualize `affiliateRevenue` and `productClicks` data. | |
| - Chart: Daily Clicks vs. Revenue. | |
| 2. **User Management**: | |
| - Searchable user list. | |
| - "Ban User" functionality for spam prevention. | |
| 3. **Performance Metrics**: | |
| - Track "Time to Review" (Submission Time vs. Completion Time) to identify bottlenecks in the manual workflow. | |