docs: применены находки вычитки по разведке PocketBase
- сняты повтор слова в записке разведки и та же строка в цитате ADR, убран термин «чекпоинт», разведена цепочка местоимений в паспорте - oidc-login: «зачем» перестало повторять тело, задача заявила пункт 3 «Завершения» цели multi-user — он не был закрыт ни одной её задачей
This commit is contained in:
@@ -23,8 +23,8 @@ PocketBase заменяет SQLite с goqu и goose и берёт на себя
|
||||
|
||||
И раздел про файлы:
|
||||
|
||||
> Сегодняшняя раскладка `data/files` с именами-UUID панели не видна. Путь строкой
|
||||
> она покажет строкой — прослушать и скачать запись по ней нельзя. Способа
|
||||
> Сегодняшняя раскладка `data/files` с именами-UUID панели не видна. Путь она
|
||||
> покажет строкой — прослушать и скачать запись по ней нельзя. Способа
|
||||
> сослаться на файл, уже лежащий на диске мимо её каталога, нет.
|
||||
|
||||
Там же то, что связывает файлы с сохранностью архива:
|
||||
|
||||
+3
-3
@@ -59,9 +59,9 @@
|
||||
ни языковую модель: и речь, и выводы из текста считает внешний сервис.
|
||||
- **Управление учётными записями.** Пользователей заводит и проверяет внешний
|
||||
провайдер, свою регистрацию и свои пароли не делаем. Одно исключение появилось
|
||||
2026-08-11 вместе с решением про PocketBase: в её панель администратора
|
||||
владелец входит своим паролем, потому что закрыть её провайдером она не
|
||||
умеет.
|
||||
2026-08-11 вместе с решением про PocketBase: в панель администратора владелец
|
||||
входит своим паролем, потому что подпустить к ней внешнего провайдера
|
||||
PocketBase не даёт.
|
||||
- **Живая расшифровка.** Работаем с готовой записью, поток в реальном времени не
|
||||
обрабатываем.
|
||||
- **Диктофон.** Запись звука делает телефон, а приложение принимает готовый
|
||||
|
||||
@@ -69,8 +69,8 @@ pb_data/storage/<коллекция>/<запись>/<имя>_<10 случайн
|
||||
Проверено загрузкой файла в 200 КБ: имя `sample.ogg` превратилось в
|
||||
`sample_uztrv6wvz3.ogg`, рядом лёг файл атрибутов.
|
||||
|
||||
Сегодняшняя раскладка `data/files` с именами-UUID панели не видна. Путь строкой
|
||||
она покажет строкой — прослушать и скачать запись по ней нельзя. Способа сослаться
|
||||
Сегодняшняя раскладка `data/files` с именами-UUID панели не видна. Путь она
|
||||
покажет строкой — прослушать и скачать запись по ней нельзя. Способа сослаться
|
||||
на файл, уже лежащий на диске мимо её каталога, нет.
|
||||
|
||||
Поле помечается защищённым, и тогда файл не отдаётся по прямой ссылке: без токена
|
||||
@@ -103,6 +103,7 @@ pb_data/storage/<коллекция>/<запись>/<имя>_<10 случайн
|
||||
- **Оставить вход у приложения, а PocketBase взять только хранилищем.**
|
||||
Отвергнуто: пользователей панель в этом случае не показывает вовсе, и одна из
|
||||
трёх частей вопроса остаётся без ответа навсегда, а не до какой-то задачи.
|
||||
- **Отказаться от перевода.** Отвергнуто человеком на чекпоинте 2026-08-11:
|
||||
- **Отказаться от перевода.** Отвергнуто человеком 2026-08-11 при выборе из трёх
|
||||
способов:
|
||||
вместе с панелью отказ выбрасывал бы уход CGO и встроенное резервное
|
||||
копирование, которых у сервиса-архива нет никаких.
|
||||
|
||||
+2
-2
@@ -24,8 +24,8 @@
|
||||
- [🐞 Убирать записанный файл, когда приём отказал на середине](items/orphan-file-on-failed-intake.md) — Отказ чтения метаданных и отказ записи на диск оставляют файл в каталоге хранения без задачи и без учёта: сопоставить его не с чем, удалять приходится руками.
|
||||
- [🧹 Задать таймауты обращениям к внешним сервисам](items/external-call-timeouts.md) — Ни у Telegram, ни у Object Storage, ни у SpeechKit нет таймаута: молчащий собеседник держит шаг конвейера до истечения часового захвата.
|
||||
- [🔬 Очередь задач: своя таблица или готовая библиотека](items/job-queue-choice.md) — Очередь написана вручную: захват двумя запросами без транзакции, протухание временем, опрос раз в секунду вхолостую тремя воркерами.
|
||||
- [🧹 Перевести хранилище и файлы записей на встроенный PocketBase](items/pocketbase-storage.md) — Записи, метаданные и файлы лежат порознь, и владелец не видит их ничем: панель PocketBase покажет и то и другое, только если они переедут к ней.
|
||||
- [✨ Пускать в приложение только после входа через OIDC](items/oidc-login.md) — HTTP API открыт наружу без аутентификации: любой из интернета заводит задачи за наши деньги и читает чужие расшифровки по идентификатору. Ответ провайдера разбирает PocketBase, а не наш код.
|
||||
- [🧹 Перевести хранилище и файлы записей на встроенный PocketBase](items/pocketbase-storage.md) — Записи, метаданные и файлы лежат порознь, и владелец не видит их ничем, кроме консоли на сервере: панель PocketBase покажет и то и другое, только если они переедут к ней.
|
||||
- [✨ Пускать в приложение только после входа через OIDC](items/oidc-login.md) — HTTP API открыт наружу без аутентификации: любой из интернета заводит задачи за наши деньги и читает чужие расшифровки по идентификатору.
|
||||
- [✨ Привязать запись к владельцу и отдавать только свои](items/record-ownership.md) — У задачи и файла нет владельца, поэтому знание UUID задачи и есть право её читать.
|
||||
- [✨ Сопоставить пользователя Telegram с учётной записью](items/telegram-account-link.md) — Белый список сверяется с именем пользователя Telegram, которое владелец меняет в любой момент, а записи из бота ни с кем не связаны.
|
||||
- [✨ Свести приём и чтение записей к одному контракту для приложения](items/json-api-for-spa.md) — Сегодняшний API отвечает 404 на любую ошибку чтения и 500 на любую ошибку приёма: строить на нём экраны нечем.
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
|
||||
- **Тип:** feature
|
||||
- **Категория:** Очередь
|
||||
- **Зачем:** HTTP API открыт наружу без аутентификации: любой из интернета заводит задачи за наши деньги и читает чужие расшифровки по идентификатору. Ответ провайдера разбирает PocketBase, а не наш код.
|
||||
- **Зачем:** HTTP API открыт наружу без аутентификации: любой из интернета заводит задачи за наши деньги и читает чужие расшифровки по идентификатору.
|
||||
- **Теги:** goal:multi-user, question
|
||||
|
||||
Двигает пункт 1 «Завершения» цели: неаутентифицированный запрос к записям не
|
||||
проходит ни к странице, ни к API.
|
||||
Двигает пункты 1 и 3 «Завершения» цели: неаутентифицированный запрос к записям
|
||||
не проходит ни к странице, ни к API; вход идёт через OIDC у Authelia, а выход из
|
||||
сессии работает.
|
||||
|
||||
Провайдер — Authelia по OIDC. Своей регистрации и своих паролей не делаем, это
|
||||
граница из [паспорта](../../docs/passport.md). Разграничения записей по владельцу
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
- **Тип:** chore
|
||||
- **Категория:** Очередь
|
||||
- **Зачем:** Записи, метаданные и файлы лежат порознь, и владелец не видит их ничем: панель PocketBase покажет и то и другое, только если они переедут к ней.
|
||||
- **Зачем:** Записи, метаданные и файлы лежат порознь, и владелец не видит их ничем, кроме консоли на сервере: панель PocketBase покажет и то и другое, только если они переедут к ней.
|
||||
|
||||
PocketBase встраивается библиотекой в тот же бинарник и приносит хранилище,
|
||||
учётные записи и панель администратора разом. Конвейер и оба входа работают
|
||||
|
||||
Reference in New Issue
Block a user