Personal Analytics APIs are fully implemented and available for end users. These endpoints are scoped to the authenticated user only, ensuring privacy and data isolation.
AI-generated productivity tips based on usage patterns.
Recommended
GET/api/user/ai-recommendations
Suggested AI tools based on work patterns.
Recommended
GET/api/user/work-patterns
Analysis of peak productivity hours, break patterns.
Recommended
🗄️ Database Query Pattern
Personal Analytics Query Flow
═══════════════════════════════════════════════════════════════════════════════
User: john@acme.com (usr-123)
Request: GET /api/analytics/user/usr-123
SQL Query Generated:
───────────────────────────────────────────────────────────────────────────────
-- 1. User validation (implicit in auth middleware)
SELECT Id FROM Users
WHERE Id = 'usr-123'
AND OrganizationId = 'org-456';
-- 2. Session summary statistics
SELECT
COUNT(*) as TotalSessions,
SUM(DATEDIFF(SECOND, StartTime, EndTime)) as TotalWorkSeconds,
SUM(AIUsageTime) as TotalAIUsageSeconds,
AVG(ProductivityScore) as AvgProductivity
FROM Sessions
WHERE UserId = 'usr-123' -- ← Critical: filters to self only
AND OrganizationId = 'org-456'
AND StartTime >= '2026-01-01';
-- 3. AI tool breakdown
SELECT
AIToolName,
COUNT(*) as UsageCount,
SUM(AIUsageTime) as TotalTime
FROM Sessions
WHERE UserId = 'usr-123'
AND AIToolName IS NOT NULL
GROUP BY AIToolName
ORDER BY TotalTime DESC;
-- 4. Daily trends (last 30 days)
SELECT
CAST(StartTime as DATE) as Date,
COUNT(*) as SessionCount,
SUM(AIUsageTime) as AITime
FROM Sessions
WHERE UserId = 'usr-123'
AND StartTime >= DATEADD(day, -30, GETDATE())
GROUP BY CAST(StartTime as DATE)
ORDER BY Date;
Index Usage:
• IX_Sessions_UserId → Fast user lookup
• IX_Sessions_UserId_StartTime → Fast date-range queries