Симптом: POST /admin/scrape/kn возвращает task_id, но run_id не появляется в kn_scrape_runs. Причина: зомби-worker оставил Redis-lock с TTL=2h, новые задачи скипаются с reason='lock_held' молча. Backend: - _LOCK_TTL_SECONDS 7200 → 1800 (full sweep ~25-30 мин — потолок). - force_release_lock() helper + новый POST /api/v1/admin/scrape/release-lock. - TriggerKnRequest +force: bool — при true перед apply_async удалить lock. - _log_task_received() / _log_task_skipped() — kn_scrape_log пишет «task подхвачен/skip» с run_id=NULL до основного flow. Теперь UI показывает whether worker реально получил задачу. Frontend: - Чекбокс ⚡ Force в форме запуска. - Кнопка 🔓 Снять Redis-lock (отдельный endpoint). - Уведомление о результате release.
35 lines
538 B
Text
35 lines
538 B
Text
# Каждое лишнее изменение в build context инвалидирует layer cache в Docker.
|
||
# Здесь — только то, что НЕ нужно для `npm ci` + `next build`.
|
||
|
||
node_modules
|
||
.next
|
||
.next/cache
|
||
.env
|
||
.env.*
|
||
!.env.example
|
||
.eslintcache
|
||
*.tsbuildinfo
|
||
|
||
# VCS
|
||
.git
|
||
.gitignore
|
||
.gitattributes
|
||
|
||
# Logs / coverage / IDE
|
||
*.log
|
||
coverage
|
||
.vscode
|
||
.idea
|
||
|
||
# Tests + docs (не нужны для production build)
|
||
__tests__
|
||
**/*.test.ts
|
||
**/*.test.tsx
|
||
**/*.spec.ts
|
||
**/*.spec.tsx
|
||
*.md
|
||
docs
|
||
|
||
# OS
|
||
.DS_Store
|
||
Thumbs.db
|