feat: add isolated activity event writer

This commit is contained in:
2026-08-26 20:48:54 +08:00
parent 7afcea296e
commit 0e4a50b3dd
@@ -0,0 +1,45 @@
package com.flagship.abox.manager.automation.activity
import com.flagship.abox.manager.domain.ActivityEvent
import com.flagship.abox.manager.domain.ActivityEventId
import com.flagship.abox.manager.domain.ActivityEventKind
import com.flagship.abox.manager.domain.ActivityOutcome
import com.flagship.abox.manager.domain.ActivityRepository
import com.flagship.abox.manager.domain.ActivitySource
import com.flagship.abox.manager.domain.ActivityTarget
import com.flagship.abox.manager.domain.ActivityTargetType
import com.flagship.abox.manager.domain.DeviceName
import com.flagship.abox.manager.domain.ProviderProfileId
import java.util.UUID
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
class ActivityEventWriter(
private val repository: ActivityRepository,
private val scope: CoroutineScope,
) {
fun recordDevice(
profileId: ProviderProfileId,
deviceName: DeviceName,
kind: ActivityEventKind,
outcome: ActivityOutcome,
errorCode: String? = null,
) {
scope.launch {
runCatching {
repository.append(
ActivityEvent(
id = ActivityEventId(UUID.randomUUID().toString()),
profileId = profileId,
occurredAtEpochMillis = System.currentTimeMillis(),
kind = kind,
source = ActivitySource.USER,
outcome = outcome,
target = ActivityTarget(ActivityTargetType.DEVICE, deviceName.value, deviceName.value),
errorCode = errorCode,
),
)
}
}
}
}