внутренняя модель перестроена вокруг аудиозаписи
- audiorecords вместо transcribe_jobs: приложения (texts, structures, recognitions, record_events, topics) живут своими коллекциями, ссылки на исходник и на приведённую копию перестали переставляться - рубеж называет достигнутое, отказ стал признаком остановки с причиной, а сторожей стало двое: число отказов и время в рубеже - воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user