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

- 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
// Виды текста записи. Расшифровка и вычитанный текст читаются по открытию одной
// записи и лежат строками `texts`, а не колонками: колонкой на каждый вид схема
// росла бы с каждым новым видом, а необратимый шаг схемы платится за каждую
// такую колонку отдельно.
const (
// TextKindTranscript — сырая расшифровка, как её отдал распознаватель.
TextKindTranscript = "transcript"
// TextKindLiterary — вычитанный текст. Его считает отдельная задача; здесь
// заведено только место, куда он ляжет.
TextKindLiterary = "literary"
)
// AllTextKinds — закрытый перечень видов текста для схемы хранилища.
func AllTextKinds() []string {
return []string{TextKindTranscript, TextKindLiterary}
}
// Text — один вид текста одной записи. Пара «запись и вид» уникальна: повтор
// прерванного шага иначе завёл бы второй комплект строк, и вопрос «какой текст
// отдавать человеку» стал бы вопросом порядка записи, а не состояния.
type Text struct {
Id string
RecordID string
Kind string
Contents string
}