feat(mera/b2c): анти-абуз для анонимного трафика — этап 2 из 8 #2546

Merged
lekss361 merged 3 commits from feat/mera-b2c-antiabuse into main 2026-08-25 16:27:03 +00:00
2 changed files with 11 additions and 2 deletions
Showing only changes of commit bfe58f9160 - Show all commits

View file

@ -751,7 +751,13 @@ class Settings(BaseSettings):
# чистка cookie обходит этот лимит — цель поднять стоимость злоупотребления,
# а не сделать его невозможным (тот же принцип, что и account_estimate_usage
# для пилотов). ENV: ANON_ESTIMATE_QUOTA_LIMIT.
anon_estimate_quota_limit: int = Field(default=3, validation_alias="ANON_ESTIMATE_QUOTA_LIMIT")
#
# Значение 5 выбрано владельцем 16.08.2026 при разборе PR #2546 (в первой
# редакции стояло 3). Компромисс продуктовый, а не технический: пять проб —
# это больше шансов, что человек дойдёт до ценности и купит платный отчёт за
# 150 ₽, ценой чуть более высокого потолка злоупотребления. Число легко
# пересматривается переменной окружения без выкатки кода.
anon_estimate_quota_limit: int = Field(default=5, validation_alias="ANON_ESTIMATE_QUOTA_LIMIT")
# anon_session_secret: ключ HMAC-подписи анонимного session-cookie (см.
# app/core/anon_session.py). Пусто (дефолт) → используется process-local

View file

@ -993,7 +993,10 @@ def test_estimate_real_result_still_increments_quota(estimate_app_ok: FastAPI) -
_ANON_KEY = "anon:fake-session-id:203.0.113.7"
_ANON_DEFAULT = 3 # существенно строже MONTHLY_LIMIT (15) — см. settings.anon_estimate_quota_limit
# Произвольное число, намеренно НЕ равное ни MONTHLY_LIMIT (15), ни текущему
# settings.anon_estimate_quota_limit (5) — тест проверяет, что переданный
# default доходит до результата, а не что совпал с какой-то настройкой.
_ANON_DEFAULT = 3
def test_user_limit_anon_key_falls_back_to_custom_default() -> None: