feat: add comprehensive analytics dashboard for content creators

Backend changes:
- Added /sexy/analytics endpoint to fetch detailed creator analytics
- Calculates total likes, plays, completion rates, and avg watch times
- Groups analytics by date for timeline visualization
- Provides video-specific performance metrics

Frontend changes:
- Added Analytics TypeScript types and service function
- Created Analytics tab in /me dashboard (visible only for Models)
- Displays overview stats: total videos, likes, and plays
- Added detailed video performance table with:
  - Individual video metrics
  - Color-coded completion rates (green >70%, yellow >40%, red <40%)
  - Average watch time per video
  - Links to video pages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Valknar XXX
2025-10-28 10:42:06 +01:00
parent 54f0758196
commit 3f38633863
5 changed files with 277 additions and 3 deletions

View File

@@ -16,7 +16,7 @@ import {
readComments,
aggregate,
} from "@directus/sdk";
import type { Article, Model, Recording, Stats, User, Video, VideoLikeStatus, VideoLikeResponse, VideoPlayResponse } from "$lib/types";
import type { Analytics, Article, Model, Recording, Stats, User, Video, VideoLikeStatus, VideoLikeResponse, VideoPlayResponse } from "$lib/types";
import { PUBLIC_URL } from "$env/static/public";
import { logger } from "$lib/logger";
@@ -722,3 +722,19 @@ export async function updateVideoPlay(
{ videoId, playId, durationWatched, completed }
);
}
export async function getAnalytics(fetch?: typeof globalThis.fetch) {
return loggedApiCall(
"getAnalytics",
async () => {
const directus = getDirectusInstance(fetch);
return directus.request<Analytics>(
customEndpoint({
method: "GET",
path: "/sexy/analytics",
})
);
},
{}
);
}