Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,5 @@ dev-analytics/frontend/.vite/

# Local agent working files (not part of the deliverable)
CLAUDE.md
tasks/lessons.md
node_modules/
skills-lock.json
10 changes: 0 additions & 10 deletions .idea/.gitignore

This file was deleted.

4 changes: 2 additions & 2 deletions PROJECT_DESCRIPTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -1645,7 +1645,7 @@ Phase B — Immediate enrich top 150 (seconds to minutes)
→ rate-limited: ~1.4 req/s, proactive throttle on X-RateLimit-Remaining < 100

Phase C — Background sweep (every 2 minutes, 50 items/run)
CommitStatsEnrichmentScheduler
StatsEnrichmentScheduler
→ findRepositoryIdsWithStatsStatus(PENDING)
→ processPendingBatchForRepo() per repo
→ continues until all items are COMPLETE/FAILED/SKIPPED
Expand Down Expand Up @@ -1905,7 +1905,7 @@ The editorial design system lives in `frontend/src/index.css` (`@theme` block re
| `TokenCleanupScheduler` | Daily 02:00 UTC | Deletes expired `refresh_tokens`; deletes used or expired `password_reset_tokens` |
| `MetricsScheduler` | Daily 01:00 UTC | For every user: `calculateDailyMetrics(userId, yesterday, yesterday)`. Incremental only — gap recovery moved to `MetricBackfillScheduler`. Per-user failures logged, do not abort run |
| `MetricsSummaryScheduler` | Every Monday 08:00 UTC | For every user: computes the week first via `calculateDailyMetrics(userId, from, to)`, then generates a personal AI summary for the previous week (Mon–Sun); persists to `metric_summaries` with headline; triggers `NotificationDispatchService.dispatchSummaries()` if email prefs enabled |
| `CommitStatsEnrichmentScheduler` | Every 2 minutes | Finds repos with PENDING commits or PRs; processes up to 50 per repo per run. Respects GitHub rate limits. Continues until all enriched |
| `StatsEnrichmentScheduler` | Every 2 minutes | Finds repos with PENDING commits or PRs; processes up to 50 per repo per run. Respects GitHub rate limits. Continues until all enriched |
| `MetricBackfillScheduler` | Daily 03:00 UTC | For every user: `MetricBackfillService.backfillUser(userId)` — subtracts the `metric_coverage` ledger from the user's collected history and computes up to `app.metrics.backfill.max-days-per-run` (default 30) missing days, newest-first. Per-user failures logged, do not abort run |

---
Expand Down
2 changes: 0 additions & 2 deletions dev-analytics/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
version: '3.9'

services:
db:
image: postgres:16-alpine
Expand Down
107 changes: 0 additions & 107 deletions dev-analytics/frontend/src/components/DateRangePicker.tsx

This file was deleted.

113 changes: 0 additions & 113 deletions dev-analytics/frontend/src/components/ai/AiMetricExplainDrawer.tsx

This file was deleted.

88 changes: 0 additions & 88 deletions dev-analytics/frontend/src/components/ui/AccentPicker.tsx

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.juliashtal.devanalytics.attribution;
package com.juliashtal.devanalytics.attribution.controller;

import com.juliashtal.devanalytics.attribution.AttributionMigrationService;
import com.juliashtal.devanalytics.attribution.AttributionMigrationStatus;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.juliashtal.devanalytics.auth;
package com.juliashtal.devanalytics.auth.controller;

import com.juliashtal.devanalytics.auth.AuthService;
import com.juliashtal.devanalytics.auth.model.*;
import com.juliashtal.devanalytics.auth.model.request.*;
import com.juliashtal.devanalytics.auth.service.PasswordResetService;
Expand Down
Loading
Loading