Real-time Scoring
Скоринг транзакций в реальном времени. P95 latency 4.2ms — в 7 раз лучше целевого показателя.
< 5ms latencyАнтифрод ML-система на Golang — Обнаружение мошенничества
/v1/score. Обязательные: transaction_id, amount, currency, user_id.tenant_id. Rate limit: 70K req/min.X-Idempotency-Key. HIT = мгновенный ответ + X-Idempotency-Replayed: true.blacklist:{type}:{id} в Redis.fraud_scores для аудита. JSONB для reasons. Redis кэш для idempotency replay.go run cmd/server/main.go
docker compose -f docker-compose.prod.yml up -d --build
Скоринг транзакций в реальном времени. P95 latency 4.2ms — в 7 раз лучше целевого показателя.
< 5ms latencyML-модель на Go без внешних зависимостей. Итеративный обход деревьев, LRU кэш, hot-reload через fsnotify.
20 featuresИзолированные ML-модели для разных tenant. Fallback chain: tenant model → default model → heuristic.
Tenant isolationОбъяснение предсказаний через feature contributions. Клиент видит, почему транзакция заблокирована.
ExplainabilityWorker pool для асинхронной обработки. Queue + idempotency. Режим 202 Accepted для high-load сценариев.
Worker poolRedis кэш для идемпотентных запросов. Tenant-scoped keys. Replayed response с заголовком X-Idempotency-Replayed.
Redis cachePII masking в логах. TLS/HTTPS с Let's Encrypt. Аудит и трассируемость по transaction_id.
Data protectionКалибровка вероятностей для более точных score. Настройка через конфиг: platt_a, platt_b.
Probability calibrationРежимы для тестирования: fraud (всегда high), safe (всегда low), random. Без реальной модели.
Testing modesДинамические правила риска в YAML. Email domains, merchant categories, countries. Hot-reload.
ConfigurableМетрики HTTP, ML cache, model reloads. 3 дашборда, 23 панели. Alert rules настроены.
Observability32 PASS, 0 FAIL в аудите. Docker deployment. JSONB fix, deadlock fix. 100% success rate.
Audit passed| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Health check (postgres, redis, model) |
| POST | /v1/score |
Скоринг транзакции (sync/async) |
| POST | /v1/explain |
SHAP-like feature explanations |
| GET | /v1/alerts |
Получить alerts |
| GET | /metrics |
Prometheus метрики |
email: u***@g****.com
phone: +7 (9***) ***-**-**
tls:
enabled: true
cert_file: ""
key_file: ""
# Auto Let's Encrypt if empty
X-API-Key: fd_live_abc123
→ SHA-256 hash
→ SELECT tenant_id FROM api_keys
WHERE api_key_hash = ?
rate_limit:
enabled: true
requests_per_minute: 70000
burst: 1000
GET idempotency:{tenant}:{key}
→ HIT? Return cached response
→ MISS? Continue to scoring
INSERT INTO fraud_scores
(tenant_id, transaction_id, score,
decision, reasons, created_at)
VALUES (...)
Наведите на компонент для описания
go run cmd/server/main.go