[CL-COVTESTS] test(api): branch-покрытие financial/worker/AML путей (wash-trading, auto-reinvest, watchlist) #416
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/claude-cl-branch-coverage-20260607"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Подняты branch-ветки на трёх низко-покрытых financial/AML/worker модулях. Только тесты — production-код не тронут.
api/src/services/aml/rules/wash-trading.tsapi/src/workers/auto-reinvest.worker.tsapi/src/services/watchlist.service.tsИтого +60 branches на critical money/AML путях.
wash-trading.ts (был вообще без тестов)
cursor-пагинация + short-batch break,
?? []на null findMany, skip system-seller/buyer/self-trade, COALESCE roomId из buyOrder (buy-direct flow), roomId-null continue, both-direction flag vs single-direction skip, alert на обоих участниках пары.auto-reinvest.worker.ts
failed-handler (transient skip / DLQ+Sentry+alert / DLQ-throw / attempts не исчерпаны), object-path через batch-loaded room, maxSharesPerUser cap (remaining>0 и remaining<=0), balance<minAmount, maxShares<1, eligible-none, fee==0 ветка, per-user error catch (Sentry + AUTO_REINVEST_FAILED audit), execution time-cap, completed/error handlers.
watchlist.service.ts
resolveMatch (note<20 guard, CAS 404 vs 409 double-resolution, CLEARED vs CONFIRMED), screenHighRiskUsers (errors-accum, generic catch+Sentry, WatchlistApiKeyExpiredError rethrow), screenAllUsers (cursor-пагинация, high-error-rate alert, key-expired rethrow), listMatches (limit clamp + page offset), getMatchStats.
Зачем
Audit pre-launch выявил branch coverage 70.88% с дырами в error/race/AML путях. Названные в аудите воркеры (income-distribution) уже были покрыты — coverage-hunt по coverage-summary.json нашёл настоящие низко-покрытые financial-файлы. Непокрытые ветки = регрессии в idempotency/race/AML не ловятся до прода.
План тестирования
npx vitest run— 9838 passed, 0 регрессий (было 9805).npx tsc --noEmit— clean.npx eslint src --max-warnings 0на изменённых — clean.Где могу ошибаться
.catchcallbacks. Все — low-value safety-края.on-handler теперь захватывается в Map (остался spy — старые toHaveBeenCalledWith assertions работают).admin-merge reason: solo-dev (Rule 103.1)
local-review: Agent(code-reviewer) — 0 CRITICAL/HIGH, 2 MEDIUM + 4 LOW, все findings addressed в
dd8ded65aci-status: 8/8 green (API, App, Contracts, Telegram Mini App, Python SDK, Secrets Scan, Prisma Migrate Gate, React Doctor)
copilot-review: бот отсутствует на Forgejo → fallback на local code-reviewer (Rule 103.1)
scope: test-only, production-код не тронут