feat: воркер берёт задачи только после одобрения (approved)
Some checks failed
CI / test (push) Failing after 49s
CI / build-and-package (amd64, linux) (push) Successful in 42s
CI / build-and-package (amd64, windows) (push) Successful in 45s

Исправляет баг: воркер захватывал задачу на выполнение по статусу ready
ещё до «создавай» (consent был заглушкой). Теперь:

- новый статус approved: «создавай» → ready→approved;
- воркер (pollAndDispatch + runTask) берёт ТОЛЬКО approved,
  ready = черновик готов, ждёт одобрения;
- правка/текст в approved запрещены (финальное одобрение);
- e2e-тест TestE2EWorkerDoesNotTakeUnconfirmed: в ready воркер задачу
  не трогает, запускает только после «создавай» → success;
- обновлены все затронутые тесты (models/core/worker) и retry-фикстуры.
This commit is contained in:
Hermes
2026-08-17 19:03:42 +05:00
parent f12ff04966
commit 43266ea04f
7 changed files with 152 additions and 31 deletions

View File

@@ -113,7 +113,7 @@ func (w *Worker) pollAndDispatch(ctx context.Context) error {
}
tasks, err := w.Store.ListTasks(ctx, storage.TaskFilter{
Status: storage.StatusReady,
Status: storage.StatusApproved,
Limit: slots,
})
if err != nil {
@@ -142,7 +142,7 @@ func (w *Worker) pollAndDispatch(ctx context.Context) error {
// dev дорабатывает по комментариям; прошло → push ветки + success.
func (w *Worker) runTask(ctx context.Context, task *storage.Task) (err error) {
// 1. проверяем статус
if task.Status != storage.StatusReady {
if task.Status != storage.StatusApproved {
return fmt.Errorf("%w: task %d status=%q", ErrLaunch, task.ID, task.Status)
}