package entity

// Источник события журнала записи.
const (
	// EventOriginPipeline — событие произвёл шаг конвейера.
	EventOriginPipeline = "pipeline"
	// EventOriginHuman — событие произвёл человек: перезапуск виден в журнале с
	// указанием, кто его сделал.
	EventOriginHuman = "human"
)

// Исход события.
const (
	EventOutcomeDone    = "done"
	EventOutcomeFailed  = "failed"
	EventOutcomeHalted  = "halted"
	EventOutcomeResumed = "resumed"
)

// RecordEvent — строка журнала событий одной записи.
//
// Пишется на смену рубежа, на остановку и на снятие остановки — не на каждое
// откладывание опроса: часовая запись дала бы сотни строк ни о чём. Ни один шаг
// конвейера этот журнал не читает, чтобы решить, что делать дальше: решение
// принимается по рубежу записи, и второй источник решения разошёлся бы с первым
// молча.
//
// Содержимое записи сюда не попадает — инвариант приватности действует здесь
// наравне с журналом сервиса. Поле текста отказа зовётся `OutcomeText`, а не
// `error_text`: последнее имя названо поимённо инвариантом о секрете, и две
// колонки с этим именем сделали бы инвариант двусмысленным.
type RecordEvent struct {
	Id          string
	RecordID    string
	Origin      string
	Step        string
	Outcome     string
	OutcomeText string
	DurationMs  int64
}
