include MAU, goals & errors into reports#453
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughThis PR introduces report generation capabilities for analytics by adding new helper methods to AnalyticsService for fetching summary data in report format, top countries, and error counts; integrating goal-conversion analytics into TaskManagerService; and redesigning the project report email template with per-project cards displaying metrics, goals, and error information. Changes
Sequence DiagramsequenceDiagram
participant TM as TaskManager<br/>Service
participant AS as Analytics<br/>Service
participant GS as Goal<br/>Service
participant DB as Database
rect rgb(220, 240, 255)
Note over TM,DB: Report Generation Flow
end
TM->>AS: convertSummaryToReportFormat(summary)
AS->>AS: Format metrics + duration
AS-->>TM: Formatted report data
loop For each project
TM->>AS: getTopCountryForReport(pid, groupFrom, groupTo)
AS->>DB: Query analytics by country
DB-->>AS: Country data
AS-->>TM: Top country
TM->>AS: getErrorCountForReport(pid, groupFrom, groupTo)
AS->>DB: Query error analytics
DB-->>AS: Error counts
AS-->>TM: Error stats
TM->>GS: getGoalConversionsForReport(goal, pid, groupFrom, groupTo)
GS->>DB: Query goal conversions
DB-->>GS: Conversion data
GS-->>TM: Conversion metrics
end
TM->>TM: Assemble complete report data
TM-->>TM: Return enriched project objects
Estimated Code Review Effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Possibly Related PRs
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (3)
backend/apps/cloud/src/common/templates/en/project-report.html (1)
73-76: Email-client rendering risk (Outlook) with rounded cards / margins.
Outlook often ignoresborder-radiusandmarginon tables—acceptable, but ensure it still reads well without them.backend/apps/cloud/src/analytics/analytics.service.ts (1)
1522-1574: Prefer a typed “report DTO” instead ofanyfor the email/template contract.
This reduces accidentalundefinedin templates (e.g.,percChangeUsers,avgDuration).backend/apps/cloud/src/task-manager/task-manager.service.ts (1)
334-393: Avoid 2 ClickHouse queries per goal (N projects × M goals × recipients).
At minimum, fetchtotalSessionsonce per project+window and reuse for all goals; ideally batch goal conversions per project.Also applies to: 469-509, 593-633
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (5)
backend/apps/cloud/src/analytics/analytics.service.ts(2 hunks)backend/apps/cloud/src/common/templates/en/project-report.html(2 hunks)backend/apps/cloud/src/common/utils.ts(1 hunks)backend/apps/cloud/src/task-manager/task-manager.module.ts(2 hunks)backend/apps/cloud/src/task-manager/task-manager.service.ts(4 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
backend/apps/cloud/src/analytics/analytics.service.ts (2)
backend/apps/cloud/src/analytics/interfaces/index.ts (1)
IOverall(169-171)backend/apps/cloud/src/common/utils.ts (2)
calculateRelativePercentage(148-162)formatDuration(330-356)
backend/apps/cloud/src/task-manager/task-manager.service.ts (2)
web/app/api/index.ts (1)
Goal(1232-1242)backend/apps/cloud/src/common/utils.ts (1)
getRandomTip(83-85)
🔇 Additional comments (3)
backend/apps/cloud/src/common/templates/en/project-report.html (1)
87-94: “Top country” likely shows ISO code, not a human label.
Template prints{{topCountry}}; current backend appears to passcc(e.g., “US”). If you want “United States”, map before templating.backend/apps/cloud/src/analytics/analytics.service.ts (1)
1576-1631: Time-range consistency: these helpers assume caller passes the same window as summary metrics.
Given email reports compute summary viaperiodbut extra queries take explicitgroupFrom/groupTo, it’s easy to drift (timezone / inclusivity).backend/apps/cloud/src/task-manager/task-manager.module.ts (1)
17-34: No circular module dependency detected.GoalModuledoes not importTaskManagerModuleor any module that imports it, so theforwardRefwrapper is not necessary. The one-way dependency fromTaskManagerModuletoGoalModuleis safe.Likely an incorrect or invalid review comment.
Changes
Community Edition support
Database migrations
Documentation
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.