diff --git a/play-life-backend/main.go b/play-life-backend/main.go index dcd4345..34a7268 100644 --- a/play-life-backend/main.go +++ b/play-life-backend/main.go @@ -10114,6 +10114,19 @@ func (a *App) completeTaskAtEndOfDayHandler(w http.ResponseWriter, r *http.Reque autoCompleteTrue := true req.AutoComplete = &autoCompleteTrue + // Если progression_value не задан — подставляем progression_base задачи + if req.ProgressionValue == nil && (req.ClearProgressionValue == nil || !*req.ClearProgressionValue) { + var taskProgressionBase sql.NullFloat64 + if pbErr := a.DB.QueryRow("SELECT progression_base FROM tasks WHERE id = $1", taskID).Scan(&taskProgressionBase); pbErr != nil { + log.Printf("Error fetching task progression_base: %v", pbErr) + sendErrorWithCORS(w, fmt.Sprintf("Error fetching task progression_base: %v", pbErr), http.StatusInternalServerError) + return + } + if taskProgressionBase.Valid { + req.ProgressionValue = &taskProgressionBase.Float64 + } + } + // Используем ту же логику что и saveTaskDraftHandler // Начинаем транзакцию tx, err := a.DB.Begin() diff --git a/play-life-web/src/components/TaskDetail.jsx b/play-life-web/src/components/TaskDetail.jsx index cb72308..b1e6186 100644 --- a/play-life-web/src/components/TaskDetail.jsx +++ b/play-life-web/src/components/TaskDetail.jsx @@ -485,8 +485,9 @@ function TaskDetail({ taskId, onClose, onRefresh, onTaskCompleted, onNavigate }) throw new Error('Неверное значение') } payload.progression_value = parsedValue - } else { - // Если прогрессия не введена - сбрасываем в null + } else if (!autoComplete) { + // Если прогрессия не введена и нет авто-выполнения - сбрасываем в null + // При авто-выполнении бэкенд сам подставит progression_base payload.clear_progression_value = true } } else {