план: мульти-пользовательские промпты

This commit is contained in:
“Naeel”
2026-06-21 09:43:52 +04:00
parent bf1cf9c402
commit e98a8729f8
+57
View File
@@ -0,0 +1,57 @@
# План: Мульти-пользовательские промпты
**v1.0.86+**
## Схема БД
```sql
CREATE TABLE IF NOT EXISTS prompts (
id TEXT PRIMARY KEY, -- {user_id}_{timestamp}, например "0000_20260621143000"
user_id TEXT NOT NULL, -- "0000" для тестов, потом Keycloak ID
name TEXT NOT NULL, -- имя промпта
content TEXT NOT NULL, -- тело промпта
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now()
);
```
## API: prompt.cfm
| action | Метод | Что |
|--------|-------|-----|
| `list&user_id=0000` | GET | Список промптов юзера |
| `save` | POST `{id?, user_id, name, content}` | Создать (без id) или обновить (с id) |
| `delete&id=...` | GET/POST | Удалить промпт |
| `duplicate&id=...` | GET/POST | Копия с новым ID = user_id + now |
Ответ всегда JSON `{ok: true/false, ...}`.
## UI (index.cfm)
Вместо текущего `<textarea>` + кнопок «Сохранить»/«По умолчанию»:
### Компоненты:
1. `<select>` — выпадающий список промптов (имя + время создания)
2. Кнопка «Новый» — очищает поля, ждёт ввода имени + текста
3. Кнопка «Дублировать» — копирует выбранный с именем «Копия ...»
4. Кнопка «Удалить» — с подтверждением
5. `<input>` — поле имени промпта
6. `<textarea>` — тело промпта (как сейчас)
7. Кнопка «Сохранить» — сохраняет текущий
### Формат времени:
"21.06.2026 14:30" (DD.MM.YYYY HH:MM)
## Порядок реализации
1. **Фаза 1** — БД: таблица `prompts`
2. **Фаза 2** — prompt.cfm: API list/save/delete/duplicate
3. **Фаза 3** — index.cfm: UI с селектом, новым/дубль/удалить/сохранить
4. **Фаза 4** — миграция: текущий промпт из localStorage → первый промпт в БД
## Примечания
- Пока `user_id = "0000"` (тестовый)
- Keycloak: `user_id` = sub из JWT
- Таблица одна на всех юзеров, ID самодостаточен
- localStorage пока оставить как fallback