- audiorecords вместо transcribe_jobs: приложения (texts, structures, recognitions, record_events, topics) живут своими коллекциями, ссылки на исходник и на приведённую копию перестали переставляться - рубеж называет достигнутое, отказ стал признаком остановки с причиной, а сторожей стало двое: число отказов и время в рубеже - воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
51 lines
2.3 KiB
Go
51 lines
2.3 KiB
Go
package entity
|
||
|
||
// Источник события журнала записи.
|
||
const (
|
||
// EventOriginPipeline — событие произвёл шаг конвейера.
|
||
EventOriginPipeline = "pipeline"
|
||
// EventOriginHuman — событие произвёл человек: перезапуск виден в журнале с
|
||
// указанием, кто его сделал.
|
||
EventOriginHuman = "human"
|
||
)
|
||
|
||
// Исход события.
|
||
const (
|
||
EventOutcomeDone = "done"
|
||
EventOutcomeFailed = "failed"
|
||
EventOutcomeHalted = "halted"
|
||
EventOutcomeResumed = "resumed"
|
||
)
|
||
|
||
// AllEventOrigins — закрытый перечень источников для схемы хранилища.
|
||
func AllEventOrigins() []string {
|
||
return []string{EventOriginPipeline, EventOriginHuman}
|
||
}
|
||
|
||
// AllEventOutcomes — закрытый перечень исходов для схемы хранилища.
|
||
func AllEventOutcomes() []string {
|
||
return []string{EventOutcomeDone, EventOutcomeFailed, EventOutcomeHalted, EventOutcomeResumed}
|
||
}
|
||
|
||
// RecordEvent — строка журнала событий одной записи.
|
||
//
|
||
// Пишется на смену рубежа, на остановку и на снятие остановки — не на каждое
|
||
// откладывание опроса: часовая запись дала бы сотни строк ни о чём. Ни один шаг
|
||
// конвейера этот журнал не читает, чтобы решить, что делать дальше: решение
|
||
// принимается по рубежу записи, и второй источник решения разошёлся бы с первым
|
||
// молча.
|
||
//
|
||
// Содержимое записи сюда не попадает — инвариант приватности действует здесь
|
||
// наравне с журналом сервиса. Поле текста отказа зовётся `OutcomeText`, а не
|
||
// `error_text`: последнее имя названо поимённо инвариантом о секрете, и две
|
||
// колонки с этим именем сделали бы инвариант двусмысленным.
|
||
type RecordEvent struct {
|
||
Id string
|
||
RecordID string
|
||
Origin string
|
||
Step string
|
||
Outcome string
|
||
OutcomeText string
|
||
DurationMs int64
|
||
}
|