внутренняя модель перестроена вокруг аудиозаписи

- audiorecords вместо transcribe_jobs: приложения (texts, structures,
  recognitions, record_events, topics) живут своими коллекциями, ссылки на
  исходник и на приведённую копию перестали переставляться
- рубеж называет достигнутое, отказ стал признаком остановки с причиной, а
  сторожей стало двое: число отказов и время в рубеже
- воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг
  выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
This commit is contained in:
av
2026-08-14 20:20:33 +03:00
parent d079f03350
commit 1576d06735
84 changed files with 8973 additions and 2865 deletions
+28
View File
@@ -0,0 +1,28 @@
package entity
// StructureVersion — версия вида структуры реплик. Разбор сохранённого ответа
// провайдера изменится раньше, чем архив пересчитают, и по номеру видно, какой
// разбор её построил.
const StructureVersion = 1
// Replica — одна реплика с временем от начала записи.
//
// Говорящий сегодня не размечается: связь реплики с разбором говорящего у
// провайдера не выяснена. Поле заведено, потому что структура строится из
// сохранённого ответа и пересчитается без повторной оплаты, когда связь
// выяснится.
type Replica struct {
StartMs int64 `json:"start_ms"`
EndMs int64 `json:"end_ms"`
Speaker string `json:"speaker,omitempty"`
Text string `json:"text"`
}
// Structure — реплики записи со временем. Лежит своей строкой, пара «запись и
// версия разбора» уникальна.
type Structure struct {
Id string
RecordID string
Version int
Replicas []Replica
}