Files
transcriber/internal/entity/record_event.go
T
av 1576d06735 внутренняя модель перестроена вокруг аудиозаписи
- audiorecords вместо transcribe_jobs: приложения (texts, structures,
  recognitions, record_events, topics) живут своими коллекциями, ссылки на
  исходник и на приведённую копию перестали переставляться
- рубеж называет достигнутое, отказ стал признаком остановки с причиной, а
  сторожей стало двое: число отказов и время в рубеже
- воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг
  выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
2026-08-14 20:20:33 +03:00

51 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}