2.4 KiB
2.4 KiB
План: Мульти-пользовательские промпты
v1.0.86+
Схема БД
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> + кнопок «Сохранить»/«По умолчанию»:
Компоненты:
<select>— выпадающий список промптов (имя + время создания)- Кнопка «Новый» — очищает поля, ждёт ввода имени + текста
- Кнопка «Дублировать» — копирует выбранный с именем «Копия ...»
- Кнопка «Удалить» — с подтверждением
<input>— поле имени промпта<textarea>— тело промпта (как сейчас)- Кнопка «Сохранить» — сохраняет текущий
Формат времени:
"21.06.2026 14:30" (DD.MM.YYYY HH:MM)
Порядок реализации
- Фаза 1 — БД: таблица
prompts - Фаза 2 — prompt.cfm: API list/save/delete/duplicate
- Фаза 3 — index.cfm: UI с селектом, новым/дубль/удалить/сохранить
- Фаза 4 — миграция: текущий промпт из localStorage → первый промпт в БД
Примечания
- Пока
user_id = "0000"(тестовый) - Keycloak:
user_id= sub из JWT - Таблица одна на всех юзеров, ID самодостаточен
- localStorage пока оставить как fallback