STORAGE.md переписан: хранилище — абстракция, реализация SQLite, настройки JSON; не файлы
This commit is contained in:
+28
-4
@@ -267,8 +267,25 @@
|
||||
- **R40.** **Живой поток тоже надо просить «с этого момента».** У подписки на события
|
||||
есть тот же параметр «после»; без него после переподключения пропустим события.
|
||||
|
||||
- **R41.** **Решение:** кэш делаем. Схема — из R35. Где хранится (файл или лёгкая
|
||||
база) — **не решено**, см. раздел 9.
|
||||
- **R41.** **Решение:** кэш делаем. Схема — из R35.
|
||||
- **R41.1.** **Хранилище — абстракция.** Клиент просит «дай сообщения диалога»,
|
||||
«сохрани настройки» — и не знает, где это лежит. Реализацию можно заменить
|
||||
(понадобится на Android) — экраны не тронутся. Подробно: `STORAGE.md`.
|
||||
- **R41.2.** **Ни одного упоминания базы вне реализации.** Если в экране или
|
||||
в логике клиента встретилось `sqlite` / `SQL` / `query` — абстракция
|
||||
прохудилась. Тот же признак, что и с цветами числом в коде.
|
||||
- **R41.3.** **Реализация — SQLite**, тот же подход, что в `agentik`:
|
||||
**SQLDelight 2.3.2** (умеет и JVM, и Android). **Не файлы.**
|
||||
- **R41.4.** **Три отдельные абстракции, не одна на всё:** сообщения диалога;
|
||||
настройки; снимок списка диалогов. Разная жизнь — разными интерфейсами.
|
||||
- **R41.5.** **Настройки — JSON-файл, не в базе.** Их правит человек руками:
|
||||
сломался адрес агента — открыл, увидел, исправил. С базой для этого нужен
|
||||
инструмент. Там же тема и выбранная группа.
|
||||
- **R41.6.** **Секреты в JSON не пишем.** Пароль/ключ — в системное хранилище
|
||||
паролей, в настройках только ссылка.
|
||||
- **R41.7.** **Картинки — файлами, не в базе.** В сообщении картинка едет
|
||||
массивом байт; держать её в базе нельзя — база распухнет и станет тяжёлой
|
||||
для копирования. В базе — ссылка на файл.
|
||||
|
||||
### 8.3. Что не выносим
|
||||
|
||||
@@ -283,11 +300,18 @@
|
||||
- Нужны ли вложения (картинки) в этом клиенте.
|
||||
- Как именно различать агентов (см. R21–R22): цвета или картинки достаточно?
|
||||
- Нужен ли картинке размер/форма — показывать кружком без изменений или обрезать.
|
||||
- Где хранится список агентов — в файле на диске или спрашивать сервер.
|
||||
- Где хранится список агентов — в контроле настроек (JSON) или спрашивать сервер.
|
||||
- Как выглядит показ хода работы агента в свёрнутом виде.
|
||||
- **Где хранится кэш сообщений** — обычный файл на диске или лёгкая база (R41).
|
||||
- Сколько держать в кэше и когда чистить (старые диалоги).
|
||||
- Что делать с куском прерванного ответа в кэше (R39): хранить или выбрасывать.
|
||||
- **Группы — только на устройстве или на сервере?** Сервер про них не знает
|
||||
(`STORAGE.md`, §7). Если только у нас — раскладка не поедет между десктопом
|
||||
и телефоном.
|
||||
- **Меняем ли API: превью последнего сообщения и число непрочитанных.**
|
||||
Взять неоткуда, в макете они нарисованы (`STORAGE.md`, §6).
|
||||
- **Бейдж — число или точка.** Точка сервер не трогает вообще (`STORAGE.md`, §6.2).
|
||||
- **Где каталог клиента** — `~/.agentik/` или системный («Документы»).
|
||||
На Android понятие «домашний каталог» своё.
|
||||
|
||||
## 10. Как проверяем
|
||||
|
||||
|
||||
Reference in New Issue
Block a user