Карточка: удерживать скролл боковых блоков при автообновлении; DEPO: «Снять с очереди»

Скролл: автообновление карточки (bjReloadKeepScroll) раньше сохраняло только прокрутку окна,
а боковой «Путь заявки» (.claim-tl — position:fixed, свой overflow) и другие прокручиваемые
блоки (.settings-nav, .doc-toc) отбрасывало наверх. Теперь сохраняется и восстанавливается и
их scrollTop (JSON в sessionStorage, восстановление на rAF/timeout/load).

DEPO: на «Обмен с DEPO» рядом с «Вернуть в очередь» добавлена «Снять с очереди» — помечает
застрявшие записи STATE=SKIPPED (QHl04-06, depoDismissFailures), обработчик их больше не берёт
и они уходят из списка ошибок. Для устаревших/ненужных записей (напр. старые тестовые).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
fontvielle
2026-10-13 13:15:34 +03:00
parent 23dd4b43bc
commit 2d2fbb6732
6 changed files with 104 additions and 9 deletions
+40
View File
@@ -120,6 +120,46 @@ func depoRequeueFailures(ctx context.Context, db *sql.DB, days int) (orders, eve
return orders, events, nil
}
// depoDismissFailures — снять записи с ошибкой (за days дней) с очереди: STATE='SKIPPED'.
// Обработчик их больше не берёт, и из списка ошибок они пропадают. Для устаревших/ненужных
// записей, которые не нужно переобрабатывать.
func depoDismissFailures(ctx context.Context, db *sql.DB, days int) (orders, events int64, err error) {
fails, err := depoJobFailures(ctx, db, days, 500)
if err != nil {
return 0, 0, err
}
tx, err := db.BeginTx(ctx, nil)
if err != nil {
return 0, 0, err
}
const comment = "снято с очереди администратором (bj)"
for _, f := range fails {
q := fsql.QHl04
if f.Table == "FTV_M2M_EVENTS" {
q = fsql.QHl05
}
res, e := tx.ExecContext(ctx, q, sql.Named("c", comment), sql.Named("id", f.ID))
if e != nil {
tx.Rollback()
return 0, 0, e
}
n, _ := res.RowsAffected()
if f.Table == "FTV_M2M" {
orders += n
if _, e := tx.ExecContext(ctx, fsql.QHl06, sql.Named("g", f.GUID)); e != nil {
tx.Rollback()
return 0, 0, e
}
} else {
events += n
}
}
if err := tx.Commit(); err != nil {
return 0, 0, err
}
return orders, events, nil
}
var depoFailAlertedID int64
// depoAlertEventFailures — оповещение о новых ошибках обработки событий BJ_* (поручения с