Files
voidea/docs/backlog/hotkeys-system-note.md

122 lines
3.4 KiB
Markdown

# Hotkeys System - VoIdea
**Дата:** 2026-05-10
**Статус:** Backlog (часть WebUI)
---
## Обзор
Настраиваемая система горячих клавиш для быстрого управления приложением.
---
## Структура хранения
### База данных (primary)
```sql
CREATE TABLE user_hotkeys (
id UUID PRIMARY KEY,
user_id UUID REFERENCES users(id),
action VARCHAR(50) NOT NULL,
key_combination VARCHAR(100) NOT NULL,
modifier VARCHAR(20),
created_at TIMESTAMP,
updated_at TIMESTAMP
);
```
### localStorage (backup for offline)
```javascript
// Ключ: 'voidea_hotkeys'
{
"new_idea": "ctrl+n",
"save": "ctrl+s",
"search": "/"
}
```
---
## Синхронизация
1. При входе → загрузить настройки из БД
2. При изменении → обновить БД и localStorage
3. При оффлайн → использовать localStorage
4. При восстановлении → sync БД → localStorage
---
## Дефолтные горячие клавиши
| Действие | Клавиша | Описание |
|----------|---------|----------|
| Новая идея | `Ctrl+N` | Создать новую идею |
| Сохранить | `Ctrl+S` | Сохранить текущее |
| Поиск | `/` | Фокус на поиск |
| Навигация вверх | `J` или `↑` | Предыдущая идея |
| Навигация вниз | `K` или `↓` | Следующая идея |
| Отправить на анализ | `Ctrl+Enter` | Запустить ИИ-анализ |
| Настройки | `Ctrl+,` | Открыть настройки |
| Помощь | `?` | Показать справку |
| Отмена | `Escape` | Закрыть модалку |
| Undo | `Ctrl+Z` | Отменить действие |
| Redo | `Ctrl+Shift+Z` | Повторить действие |
---
## UI настройки
### Страница настроек
```
├── Настройки
│ ├── Горячие клавиши
│ │ ├── Список действий
│ │ ├── Поле ввода (нажмите клавишу)
│ │ ├── Сброс на дефолт
│ │ └── Сохранить
```
### Ввод новой комбинации
1. Клик на поле ввода
2. Нажатие клавиши/комбинации
3. Автоматическое сохранение
4. Валидация (не конфликтует с системой)
---
## Обработка конфликтов
1. **Системные клавиши** (Ctrl+Alt+Del) — запрещено переназначать
2. **Браузерные** (Ctrl+T) — предупреждение
3. **Между пользователями** — индивидуально
---
## Поддерживаемые модификаторы
- `Ctrl` / `Cmd` (Mac)
- `Alt` / `Option`
- `Shift`
- Комбинации: `Ctrl+Shift+N`
---
## TODO
- [ ] Создать модель user_hotkeys
- [ ] Реализовать хуки для клавиш
- [ ] Добавить UI настроек
- [ ] Синхронизация БД ↔ localStorage
- [ ] Обработка конфликтов
- [ ] Тесты
- [ ] Документация для пользователей
---
*Создано: 2026-05-10*
*Часть WebUI (Block 4)*