feat: воркер берёт задачи только после одобрения (approved)
Исправляет баг: воркер захватывал задачу на выполнение по статусу ready ещё до «создавай» (consent был заглушкой). Теперь: - новый статус approved: «создавай» → ready→approved; - воркер (pollAndDispatch + runTask) берёт ТОЛЬКО approved, ready = черновик готов, ждёт одобрения; - правка/текст в approved запрещены (финальное одобрение); - e2e-тест TestE2EWorkerDoesNotTakeUnconfirmed: в ready воркер задачу не трогает, запускает только после «создавай» → success; - обновлены все затронутые тесты (models/core/worker) и retry-фикстуры.
This commit is contained in:
@@ -95,6 +95,10 @@ func createReadyTask(t *testing.T, s *storage.Storage, title string) *storage.Ta
|
||||
if err := s.UpdateTask(ctx, task); err != nil {
|
||||
t.Fatalf("set ready: %v", err)
|
||||
}
|
||||
task.Status = storage.StatusApproved
|
||||
if err := s.UpdateTask(ctx, task); err != nil {
|
||||
t.Fatalf("set approved: %v", err)
|
||||
}
|
||||
task, _ = s.GetTask(ctx, id)
|
||||
return task
|
||||
}
|
||||
@@ -625,14 +629,14 @@ func TestWorkerSemaphore(t *testing.T) {
|
||||
w.pollAndDispatch(ctx)
|
||||
time.Sleep(200 * time.Millisecond)
|
||||
|
||||
// 1 должна быть success, 1 — всё ещё ready
|
||||
// 1 должна быть success, 1 — всё ещё approved
|
||||
success, _ := s.ListTasks(ctx, storage.TaskFilter{Status: storage.StatusSuccess})
|
||||
ready, _ := s.ListTasks(ctx, storage.TaskFilter{Status: storage.StatusReady})
|
||||
approved, _ := s.ListTasks(ctx, storage.TaskFilter{Status: storage.StatusApproved})
|
||||
if len(success) != 1 {
|
||||
t.Errorf("success = %d, want 1 (ready=%d)", len(success), len(ready))
|
||||
t.Errorf("success = %d, want 1 (approved=%d)", len(success), len(approved))
|
||||
}
|
||||
if len(ready) != 1 {
|
||||
t.Errorf("ready = %d, want 1", len(ready))
|
||||
if len(approved) != 1 {
|
||||
t.Errorf("approved = %d, want 1", len(approved))
|
||||
}
|
||||
|
||||
// первая завершилась и вернула токен в сем — можем диспатчить вторую
|
||||
|
||||
Reference in New Issue
Block a user