Files
nick-doc/Issues/ISSUE-071-backend-getreferrals-n-plus-1-purchaserequest-and-pointtransac.md
Siavash Sameni dceaf82934 audit: 2026-05-30 full-codebase audit — report, issues, docs, runbooks
Full-codebase-audit 2026-05-30 outputs:
- Audit report: 09 - Audits/Full Codebase Audit - 2026-05-30.md
- 81 issue files ISSUE-055..135 (decisions + 1 skipped no-brainer).
- Scanner docs from scratch (was zero): architecture, data model, API ref, payment
  flow, operations runbook + repo README.
- Doc-sync updates across API reference, data models, flows, design system.
- Secret Rotation Runbook (08 - Operations) for the exposed credentials.
- Reusable workflow guide (07 - Development) + .claude/workflows/full-codebase-audit.js.

Issues remain status:open intentionally — the code fixes are uncommitted-then-committed
working-tree changes per repo and aren't "resolved" until merged/deployed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 18:48:04 +04:00

39 lines
1.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
issue: 071
title: "Backend: getReferrals N+1 — PurchaseRequest + PointTransaction per referral"
severity: high
domain: Points
labels: [performance, backend, n-plus-1]
status: open
created: 2026-05-30
source: Full Codebase Audit 2026-05-30
---
# Backend: getReferrals N+1 — PurchaseRequest + PointTransaction per referral
**Severity:** high
**Domain:** Points
**Labels:** performance, backend, n-plus-1
## Description
`PointsService.ts:312` issues two sequential DB queries per referred user: one `PurchaseRequest.findOne` and one `PointTransaction.find`. With N referrals, this results in 2×N queries. Under load this will cause slow responses and high DB load.
## Options
1. Batch with `$in` queries and aggregate grouped by referred user.
2. Precompute referral stats in a maintained summary doc.
3. Add pagination plus batched lookups.
## Recommendation
Replace per-referral queries with batched `$in` queries and an aggregation grouped by user; add pagination.
## Affected Files
- `backend/src/services/points/PointsService.ts:312`
## References
- [Full Codebase Audit 2026-05-30](../09%20-%20Audits/Full%20Codebase%20Audit%20-%202026-05-30.md) — DEC-41