Cycle Analytics: first iteration
What does this MR do?
- Implement the first iteration of the "Cycle Analytics" feature.
 
What are the relevant issue numbers?
- Closes #21170 (closed)
 
Does this MR have an associated MR on Gitlab EE?
- gitlab-org/gitlab-ee!748
 
Screenshots
Backend Tasks
- 
Implementation - 
Phases - 
Issue (Tracker)  - 
Plan (Board)  - 
Code (IDE)  - 
Test (CI)  - 
Review (MR)  - 
Staging (CD)  - 
Production (Total)  
 - 
 - 
Make heuristics more modular  - 
Scope to project  - 
Date range (30 days, 90 days)  - 
Access restriction  
 - 
 - 
Test - 
Find a better way to test these phases  - 
Phases - 
Issue (Tracker)  - 
Plan (Board)  - 
Code (IDE)  - 
Test (CI)  - 
Review (MR)  - 
Staging (CD)  - 
Production (Total)  
 - 
 - 
Test for "end case happens before start case"  - 
Consolidate helper  
 - 
 - 
Miniboss review  - 
Performance testing with mock data  - 
Improve performance - 
Pre-calculate "merge requests closing issues  - 
Pre-calculate everything else  
 - 
 - 
Test performance against 10k issues  - 
Test all pre-calculation code - 
Ci::Pipeline -> build start/finish  - 
Ci::Pipeline#merge_requests  - 
Issue -> record default metrics after save  - 
MergeRequest -> record default metrics after save  - 
Deployment -> Update "first_deployed_to_production_at" for MR metrics  - 
Git Push -> Update "first commit mention" for issue metrics  - 
Merge request create/update/refresh -> Update "merge requests closing issues"  
 - 
 - 
Remove MergeRequestsClosingIssueswhen necessary - 
Changes to unblock Fatih - 
Add summary data  - 
statsshould be array - 
Let statsbenullif allstatsare null 
 - 
 - 
Indexes for "merge requests closing issues"  - 
Test summary data  - 
Scope everything to project - 
Find out why tests were passing  
 - 
 - 
Filter should include issues/MRs which have made it to production within the range  - 
Don't create duplicate MergeRequestsClosingIssues - 
Fix tests  - 
MySQL median  - 
Assign to Douwe for review  - 
Fix conflicts  - 
Implement suggestions from Yorick's review - 
Test on PG  - 
Test on MySQL  
 - 
 - 
Refactor - 
Cleanup - 
What happens if we have no data at all?  - 
Extract common queries to methods / scopes  
 - 
 - 
Remove unused queries  - 
Downtime for foreign key migrations  - 
Find a way around "if issue.metrics.present?" all over the place  - 
Find a way around "if merge_request.metrics.present?" all over the place  - 
Test migrations on a fresh database - 
MySQL  - 
Pg  
 - 
 
 - 
 - 
Access issues - While the project is public and the visibility is set to "Everyone with access", you cannot visit the cycle analytics page when signed out.
 
 - 
CHANGELOG  - 
Implement suggestions from Douwe's review - 
First set of comments  - 
Second set of comments  - 
Third set of comments  - 
Fourth set of comments  
 - 
 - 
Make sure build is green  - 
Wait for merge  - 
EE MR  
