-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Labels
P3Low priority / BacklogLow priority / Backlog
Description
Незащищённые прямые commit в роутерах
Follow-up из #460 (пункт 5). Все менеджеры в db/integration.py защищены @retry_on_busy() (#465), но ~35 прямых AsyncSessionLocal() + commit() в роутерах — нет.
Почему не критично
busy_timeout=5000 (#462) даёт 5 секунд ожидания на уровне SQLite. @retry_on_busy() — дополнительная страховка поверх (на случай если 5 сек не хватит). Все перечисленные эндпоинты — админские CRUD с низкой конкурентностью.
Затронутые файлы
| Файл | Commits | Описание |
|---|---|---|
app/routers/bot_sales.py |
24 | CRUD промптов, квизов, сегментов, follow-up, testimonials, subscribers |
app/routers/legal.py |
4 | Consent grant/revoke |
app/routers/usage.py |
4 | Usage logging, cleanup, limits |
app/routers/llm.py |
2 | LLM preset CRUD |
app/routers/audit.py |
1 | Audit cleanup |
orchestrator.py |
3 | Widget visitor_metadata, amoCRM contact/lead save |
Варианты решения
A. Вынести в менеджеры (предпочтительно) — создать AsyncBotSalesManager, AsyncConsentManager, AsyncUsageManager в db/integration.py по аналогии с существующими, применить @retry_on_busy().
B. Обернуть inline — декорировать отдельные helper-функции прямо в роутерах (быстрее, но менее чисто).
Связано с
- SQLite: полный аудит проблем подключения, конкурентности и надёжности #460 — полный аудит SQLite (пункт 5)
- Этап 4: Защита от конкурентных записей (SQLITE_BUSY retry) #465 —
@retry_on_busy()декоратор
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
P3Low priority / BacklogLow priority / Backlog