Причина синхронизации и временная метка в логах

This commit is contained in:
2026-05-21 22:30:40 +03:00
parent d0f490a3fd
commit d3eac81660
14 changed files with 182 additions and 52 deletions

View File

@@ -20,4 +20,7 @@ interface ITaskOrchestrator {
fun cancel(taskId: TaskId): Boolean
fun cancelAll()
/** Запись в общий лог пайплайна вне контекста [TaskContext] (например, WorkManager sync). */
fun appendPipelineLog(level: TaskLogLevel, key: TaskLogKey)
}

View File

@@ -6,6 +6,7 @@ import java.util.UUID
data class PipelineTask(
val id: TaskId,
val title: String,
val enqueuedAtMs: Long,
val dispatcher: CoroutineDispatcher,
val state: TaskRunState,
/** UUID storage, для которого идёт задача (кнопки только этой строки в UI). */

View File

@@ -0,0 +1,8 @@
package com.github.nullptroma.wallenc.domain.tasks
/** Источник запуска синхронизации хранилищ (для логов пайплайна задач). */
enum class StorageSyncTriggerReason {
Debounce,
SyncTab,
Background,
}

View File

@@ -3,7 +3,10 @@ package com.github.nullptroma.wallenc.domain.tasks
import com.github.nullptroma.wallenc.domain.errors.WallencException
sealed class TaskLogKey {
data object SyncStarted : TaskLogKey()
data object SyncFinished : TaskLogKey()
data class SyncFailed(val error: WallencException) : TaskLogKey()
data class SyncStarted(val reason: StorageSyncTriggerReason) : TaskLogKey()
data class SyncFinished(val reason: StorageSyncTriggerReason) : TaskLogKey()
data class SyncFailed(
val error: WallencException,
val reason: StorageSyncTriggerReason,
) : TaskLogKey()
}