diff --git a/tradein-mvp/backend/app/core/config.py b/tradein-mvp/backend/app/core/config.py index f3588104..f6dfcae6 100644 --- a/tradein-mvp/backend/app/core/config.py +++ b/tradein-mvp/backend/app/core/config.py @@ -971,7 +971,24 @@ class Settings(BaseSettings): # "сессию" клиента, не архив); юридически обоснованный срок хранения адреса # физлица для анонимного B2C — решение не инженера, см. итоговый комментарий # к задаче. ENV: TRADE_IN_ESTIMATE_RETENTION_HOURS. - trade_in_estimate_retention_hours: int = 24 + # + # 27.08 — поднято 24 → 720 (30 суток) по решению владельца. Прод-факт: + # у пилота «Практика» ВСЕ 75 оценок оказались недоступны, включая + # позавчерашние, и это выглядело как пропажа данных. Строки были целы — + # истёк `expires_at`, и карточка отдавала «Ссылка устарела». + # + # Обоснование «оценка живёт сессию клиента, не архив» писалось под + # анонимный B2C. «Практика» — пилот-юрлицо: менеджер возвращается к + # оценке через день-два, когда клиент перезванивает. Для такого сценария + # суточный срок означает, что работа исчезает раньше, чем её успевают + # использовать. + # + # NB: настройка ОДНА на оба контура. Юридический мотив 152-ФЗ (хранение + # адреса физлица) относится к анонимному B2C, и для него 30 суток — + # решение не инженерное. Разделение сроков по контурам — отдельная + # задача; здесь сознательно поднят общий срок, а не сделан вид, что + # контуры уже разведены. + trade_in_estimate_retention_hours: int = 720 # trade_in_leads.expires_at TTL (дни от момента создания, migration 231). # У trade_in_leads раньше вообще не было срока хранения — лид (телефон +