внутренняя модель перестроена вокруг аудиозаписи
- audiorecords вместо transcribe_jobs: приложения (texts, structures, recognitions, record_events, topics) живут своими коллекциями, ссылки на исходник и на приведённую копию перестали переставляться - рубеж называет достигнутое, отказ стал признаком остановки с причиной, а сторожей стало двое: число отказов и время в рубеже - воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package entity
|
||||
|
||||
// RecognitionStatus представляет статус операции транскрипции
|
||||
import "time"
|
||||
|
||||
// RecognitionStatus представляет статус операции распознавания у провайдера.
|
||||
type RecognitionStatus int
|
||||
|
||||
const (
|
||||
@@ -26,7 +28,7 @@ func (s RecognitionStatus) String() string {
|
||||
}
|
||||
}
|
||||
|
||||
// RecognitionResult представляет результат операции транскрипции
|
||||
// RecognitionResult представляет исход опроса операции распознавания.
|
||||
type RecognitionResult struct {
|
||||
Status RecognitionStatus
|
||||
Error string // Текст ошибки (заполняется при StatusFailed)
|
||||
@@ -76,3 +78,43 @@ func (r *RecognitionResult) GetError() string {
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// Recognition — попытка распознавания у внешнего провайдера.
|
||||
//
|
||||
// Всё провайдерское живёт здесь, а не колонками записи: идентификатор операции —
|
||||
// самое провайдерское, что есть в модели, а копия аудио во внешнем хранилище
|
||||
// существует только потому, что сегодняшний провайдер читает запись по адресу.
|
||||
// Другой провайдер её не потребует, и смена провайдера не трогает доменную
|
||||
// сущность вовсе.
|
||||
//
|
||||
// Сырой ответ хранится вложением, а не колонкой этой строки: шаг опроса читает
|
||||
// её раз в несколько секунд, а хранилище читает запись целиком — ответ на
|
||||
// многочасовую запись ехал бы в память при каждом опросе. Хранится он потому,
|
||||
// что результат операции у провайдера не переспрашивается.
|
||||
type Recognition struct {
|
||||
Id string
|
||||
RecordID string
|
||||
Provider string
|
||||
Model string
|
||||
// ExternalID — идентификатор операции у провайдера. Заводится **до**
|
||||
// обращения к нему: окно между ответом провайдера и записью идентификатора —
|
||||
// то место, где теряется оплаченное.
|
||||
ExternalID string
|
||||
// SourceURI — адрес, по которому провайдер читает аудио.
|
||||
SourceURI string
|
||||
StartedAt *time.Time
|
||||
FinishedAt *time.Time
|
||||
}
|
||||
|
||||
// RecognitionOutcome — доменный результат распознавания, каким его отдаёт
|
||||
// адаптер. Формата провайдера здесь нет: разбор потока — обязанность адаптера, и
|
||||
// ни один шаг конвейера не знает, каким потоком и какими полями провайдер
|
||||
// отвечает.
|
||||
type RecognitionOutcome struct {
|
||||
// Replicas — реплики со временем от начала записи.
|
||||
Replicas []Replica
|
||||
// PlainText — плоский текст расшифровки.
|
||||
PlainText string
|
||||
// Raw — ответ провайдера целиком, как он пришёл, на хранение вложением.
|
||||
Raw []byte
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user