хранилище переехало с PocketBase на SQLite со своим каталогом файлов

- база своя: два пула, захват одним UPDATE ... RETURNING, шаги схемы на goose
  под файловым замком, одна миграция начальной схемы вместо семи прежних
- транспорт переписан на net/http: свои слои, свой ограничитель частоты,
  отдача файла с проверкой владельца; панель /_/ и пространство /api/ исчезли
- по находкам ревью: журнал не пишет путь под корнем приложения, ключ бюджета
  читается справа налево, узнавание известного идёт читающим пулом
This commit is contained in:
av
2026-08-23 08:06:04 +03:00
parent 1edf8cb225
commit c9b7765646
118 changed files with 11668 additions and 6679 deletions
+6 -5
View File
@@ -87,10 +87,11 @@ func (r *RecognitionResult) GetError() string {
// Другой провайдер её не потребует, и смена провайдера не трогает доменную
// сущность вовсе.
//
// Сырой ответ хранится вложением, а не колонкой этой строки: шаг опроса читает
// её раз в несколько секунд, а хранилище читает запись целиком — ответ на
// многочасовую запись ехал бы в память при каждом опросе. Хранится он потому,
// что результат операции у провайдера не переспрашивается.
// Сохранённый ответ провайдера лежит **третьим файлом в подкаталоге записи**, а
// не колонкой этой строки: шаг опроса читает её раз в несколько секунд, а
// репозиторий читает строку целиком — ответ на многочасовую запись ехал бы в
// память при каждом опросе. Хранится он потому, что результат операции у
// провайдера не переспрашивается.
type Recognition struct {
Id string
RecordID string
@@ -115,6 +116,6 @@ type RecognitionOutcome struct {
Replicas []Replica
// PlainText — плоский текст расшифровки.
PlainText string
// Raw — ответ провайдера целиком, как он пришёл, на хранение вложением.
// Raw — ответ провайдера целиком, как он пришёл, на хранение отдельным файлом.
Raw []byte
}