STORAGE.md переписан: хранилище — абстракция, реализация SQLite, настройки JSON; не файлы
This commit is contained in:
@@ -84,6 +84,12 @@ fun events(after: Instant): Flow<Event>
|
||||
**Самого кэша.** Хранилища на стороне клиента библиотека не даёт и не предлагает.
|
||||
Это пишем мы. Библиотека умеет только «спроси, что новее» и «подпишись с момента».
|
||||
|
||||
Заодно **нет и абстракции хранилища** — ни интерфейса «дай сообщения диалога»,
|
||||
ни готовой реализации под клиента. И то и другое наше, см. `STORAGE.md`.
|
||||
|
||||
Полезное: в самом `agentik` хранилище построено на **SQLDelight 2.3.2** — это
|
||||
SQLite, умеющий и JVM, и Android. Тот же подход берём и мы, а не выдумываем.
|
||||
|
||||
---
|
||||
|
||||
## 3. Где схема может порваться
|
||||
@@ -127,9 +133,20 @@ fun events(after: Instant): Flow<Event>
|
||||
|
||||
---
|
||||
|
||||
## 4. Что ещё нужно решить (не решено)
|
||||
## 4. Где хранить — РЕШЕНО
|
||||
|
||||
**Хранилище — абстракция, реализация — SQLite.** Подробно: `STORAGE.md`.
|
||||
|
||||
Клиент просит «дай сообщения диалога» и не знает, где они лежат. Реализацию
|
||||
можно будет заменить (это понадобится на Android) — экраны не тронутся.
|
||||
Ни одного упоминания SQLite вне реализации: если в экране встретилось
|
||||
`sqlite` / `SQL` / `query` — абстракция прохудилась.
|
||||
|
||||
База — один файл в каталоге клиента. Настройки — **отдельно, JSON**:
|
||||
их правит человек руками, в базу для этого лазить не должно быть нужно.
|
||||
|
||||
Осталось решить:
|
||||
|
||||
- **Где хранить кэш** — обычный файл на диске или лёгкая база.
|
||||
- **Сколько держать** и когда чистить старые диалоги.
|
||||
- **Что делать с прерванным ответом** в кэше (см. 3.2).
|
||||
- Связывать ли кэш с диалогом по `id` диалога — он стабилен, так что связка простая.
|
||||
@@ -169,7 +186,8 @@ fun events(after: Instant): Flow<Event>
|
||||
|
||||
## 6. Порядок действий (предложение)
|
||||
|
||||
1. Определиться, где хранится кэш (раздел 4).
|
||||
1. Описать абстракцию хранилища — интерфейсы (`STORAGE.md`, §1). Где лежит —
|
||||
решено: SQLite, абстракция сверху.
|
||||
2. Определиться с прерванным ответом (3.2) — иначе схема даст сбой на первом же «Стоп».
|
||||
3. При открытии диалога: кэш → спросить «новее» → догрузить → нарисовать.
|
||||
4. Подписка на живой поток — тоже «с момента».
|
||||
|
||||
Reference in New Issue
Block a user