codeflash-internal/django/aiservice
Kevin Turcios 3b1398973e
perf: Sentry-driven optimizations across all services (#2593)
## Summary

Comprehensive performance and reliability fixes driven by Sentry trace
data and error monitoring across aiservice, cf-api, and cf-webapp.

### Error Reduction
- **UUID validation (1,459 errors/month)**: Add `normalize_trace_id()`
to handle EXP0/EXP1 experiment suffixes instead of crashing. Add
`validate_trace_id` checks to 4 endpoints that were missing them. Fix
bare `UUID()` call in `log_event.py` (960 errors/month). Return 400
instead of 500 for invalid trace IDs in `log_features`.
- **CodeValidationError (1,068 errors/month)**: Add `repair_preamble()`
to fix broken LLM-generated test preambles that were causing all tests
to be discarded. 9 new tests.

### Speed Improvements
- **create-pr (11.8s → ~6s)**: Parallelize auth lookups and
post-PR-creation work (DB updates + GitHub API calls) with
`Promise.all`.
- **apikeys LCP (5,084ms → ~2s)**: Replace 5 sequential client-side
server actions with a single server-side `getDashboardInitData()` that
runs queries in parallel. Context providers accept initial data props to
skip client fetches.
- **optimization-prs (7.2s → ~3s)**: Replace `LEFT JOIN COUNT` on huge
JSONB table with `EXISTS` semi-join. Add composite indexes on
`optimization_events` for org-scoped and user-scoped queries.

### Web Vitals
- **Dashboard CLS (2.114 → ~0)**: Add matching skeleton for
OptimizationPRsTable, add `min-h-[420px]` to prevent layout shift.
- **Onboarding LCP (11.9s → ~6s)**: Reduce intro animation from 2400ms
to 1200ms, add `optimizePackageImports` for 12 heavy packages.
- **Trace page CLS (0.463 → ~0)**: Add `flex-shrink-0` to Monaco diff
viewer headers.
- Lazy-load Intercom/Crisp scripts, swap font display, reduce font
weights.

### Files Changed (19)
**aiservice (8):** common_utils.py, optimization_review.py,
code_validator.py, log_event.py, log_features.py, repair.py, review.py,
test_validate_code.py
**cf-api (1):** create-pr.ts
**cf-webapp (9):** layout.tsx, init-data-action.ts,
PrivacyModeContext.tsx, ViewModeContext.tsx, sidebar.tsx,
conditional-layout.tsx, action.ts, OptimizationPRsTable.tsx,
OptimizationsTable.tsx
**common (1):** schema.prisma

## Test plan
- [ ] Run aiservice tests: `cd django/aiservice && uv run pytest
tests/testgen_postprocessing/test_validate_code.py -v`
- [ ] Run aiservice type check: `cd django/aiservice && uv run mypy .`
- [ ] Verify cf-webapp builds: `cd js/cf-webapp && npm run build`
- [ ] Verify cf-api builds: `cd js/cf-api && npm run build`
- [ ] Run Prisma migration for new composite indexes
- [ ] Verify dashboard loads without CLS regression
- [ ] Verify create-pr endpoint still works end-to-end
- [ ] Monitor Sentry for UUID and CodeValidationError reduction after
deploy

---------

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
2026-04-10 15:39:44 -05:00
..
aiservice perf: Sentry-driven optimizations across all services (#2593) 2026-04-10 15:39:44 -05:00
authapp aiservice logs add and misc fix to track the errors (#2530) 2026-04-03 16:50:45 +05:30
core perf: Sentry-driven optimizations across all services (#2593) 2026-04-10 15:39:44 -05:00
tests perf: Sentry-driven optimizations across all services (#2593) 2026-04-10 15:39:44 -05:00
.env.example add claude 2025-12-22 03:34:07 -05:00
.pre-commit-config.yaml feat: add ty type checker to pre-k hooks (#2213) 2026-01-09 22:36:53 -05:00
CLAUDE.md docs: restructure CLAUDE.md files into modular rules 2026-02-14 19:36:21 -05:00
deploy Make aiservice deployment use Python 3.12 2024-03-06 18:22:51 -08:00
gunicorn.conf.py Refactor out aiservice manage.py and associated settings to the correct top-level dir so tests can run. Fix ellipsis in AST; allow ellipsis if they are in type annotations. 2024-05-31 16:51:43 -07:00
manage.py ruff check fixes 2025-08-07 14:35:21 -07:00
mypy_allowlist.txt Reorganize top-level feature modules under core/ (#2416) 2026-02-14 17:07:40 -05:00
pyproject.toml feat: migrate from psycopg2 to psycopg3 with connection pooling (#2489) 2026-03-27 05:33:33 -05:00
pytest.ini Further fix django folder structure so pytest also works 2024-05-31 20:01:51 -07:00
README.md Move codeflash python code base to cli/ 2023-12-29 18:37:49 -08:00
runtests.py Sort imports for generated tests too, also try adding some tests to test this, but spent an hour trying to get the django test runner to work and couldn't get it to find the tests, so punting for now 2024-03-05 16:33:50 -08:00
start_gunicorn.sh let's download at import time instead 2024-09-09 19:59:29 -05:00
uv.lock feat: migrate from psycopg2 to psycopg3 with connection pooling (#2489) 2026-03-27 05:33:33 -05:00
uvicorn_worker.py ruff check fixes 2025-08-07 14:36:23 -07:00

This is django-ninja project for the ai service. https://django-ninja.dev