Files
transcriber/internal/entity/text.go
T
av 3a2da3004b приём и чтение записей сведены к одному контракту приложения
- адреса приложения переехали в своё пространство `/app/`, опрос готовности
  убран целиком: рубеж и причину остановки владелец узнаёт карточкой записи,
  текст — отдельным адресом названного вида
- заведена единая точка отображения доменной ошибки и слой, приводящий к той же
  форме отказы библиотеки: тело несёт машиночитаемый код рядом с сообщением
- у записи появились имя файла отправителя, длительность и размер своими
  колонками, а у ленты владельца — свой индекс: без него страница сканировала
  весь архив сервиса
2026-08-15 13:51:23 +03:00

59 lines
3.4 KiB
Go

package entity
// Виды текста записи. Расшифровка и вычитанный текст читаются по открытию одной
// записи и лежат строками `texts`, а не колонками: колонкой на каждый вид схема
// росла бы с каждым новым видом, а необратимый шаг схемы платится за каждую
// такую колонку отдельно.
const (
// TextKindTranscript — сырая расшифровка, как её отдал распознаватель.
TextKindTranscript = "transcript"
// TextKindLiterary — вычитанный текст. Его считает отдельная задача; здесь
// заведено только место, куда он ляжет.
TextKindLiterary = "literary"
)
// Виды текста, которыми приложение спрашивает текст записи.
//
// Перечень закрыт, и каждое значение называет ровно одну хранимую вещь. Назван
// он так, а не парой «вид текста плюс форма показа», потому что реплики со
// временем — не вид текста: они лежат структурой разбора и принадлежат записи, а
// не тексту. Пара из двух параметров обещала бы сочетания, которых не существует.
//
// Вычитанный текст назван здесь вперёд, хотя считает его отдельная задача:
// перечень без него пришлось бы расширять правкой публичного контракта — того
// самого, который согласован один раз.
const (
// TextViewTranscript — сырая расшифровка сплошным текстом.
TextViewTranscript = TextKindTranscript
// TextViewLiterary — вычитанный текст сплошным.
TextViewLiterary = TextKindLiterary
// TextViewReplicas — реплики со временем.
TextViewReplicas = "replicas"
)
// IsKnownTextView — принадлежит ли вид закрытому перечню. Незаданный вид
// известным не считается: умолчание сделало бы ответ функцией того, что успел
// записать конвейер, а не состояния записи.
func IsKnownTextView(view string) bool {
switch view {
case TextViewTranscript, TextViewLiterary, TextViewReplicas:
return true
}
return false
}
// AllTextKinds — закрытый перечень видов текста для схемы хранилища.
func AllTextKinds() []string {
return []string{TextKindTranscript, TextKindLiterary}
}
// Text — один вид текста одной записи. Пара «запись и вид» уникальна: повтор
// прерванного шага иначе завёл бы второй комплект строк, и вопрос «какой текст
// отдавать человеку» стал бы вопросом порядка записи, а не состояния.
type Text struct {
Id string
RecordID string
Kind string
Contents string
}