fixes
This commit is contained in:
20
docs/CLAUDE.md
Normal file
20
docs/CLAUDE.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Telegram TUI
|
||||||
|
|
||||||
|
## Prompt
|
||||||
|
|
||||||
|
Проект - TUI интерфейс для телеграмма
|
||||||
|
|
||||||
|
Порядок чтения:
|
||||||
|
1) DEVELOPMENT.md - правило работы (обязательно)
|
||||||
|
2) CONTEXT.md - текущий статус
|
||||||
|
3) ROADMAP.md - план и задачи
|
||||||
|
4) REQUIREMENTS.md / ARCHITECTURE.md - по необходимости
|
||||||
|
5) E2E_TESTS.md - перед написанием тестов
|
||||||
|
|
||||||
|
После работы обнови CONTEXT.md файл
|
||||||
|
|
||||||
|
После прочтения скажи "Жду инструкций"
|
||||||
|
|
||||||
|
## Архитектура
|
||||||
|
пока нет, никак не ограничиваю
|
||||||
|
|
||||||
102
docs/DEVELOPMENT.md
Normal file
102
docs/DEVELOPMENT.md
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
# Правила локальной разработки
|
||||||
|
|
||||||
|
> **Обязательно к прочтению перед началом работы!**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Инструменты
|
||||||
|
|
||||||
|
### MCP серверы
|
||||||
|
- **Serena** — для работы с кодом (символьная навигация, редактирование)
|
||||||
|
- **Context7** — для получения актуальной документации по библиотекам
|
||||||
|
|
||||||
|
Используй эти инструменты для эффективной работы с кодовой базой.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Правила работы
|
||||||
|
|
||||||
|
### 1. Никогда не запускай сервисы самостоятельно
|
||||||
|
|
||||||
|
**ЗАПРЕЩЕНО** запускать `cargo run`, `cargo build` и подобные команды.
|
||||||
|
|
||||||
|
**Вместо этого попроси пользователя запустить:**
|
||||||
|
|
||||||
|
```
|
||||||
|
Запусти, пожалуйста:
|
||||||
|
cargo run
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Тестирование — только ручное
|
||||||
|
|
||||||
|
После завершения задачи:
|
||||||
|
1. Опиши сценарии для проверки
|
||||||
|
2. Попроси пользователя проверить вручную
|
||||||
|
3. Дождись фидбека
|
||||||
|
|
||||||
|
**Формат:**
|
||||||
|
```
|
||||||
|
Готово! Проверь, пожалуйста:
|
||||||
|
|
||||||
|
1. Открой cargo run
|
||||||
|
2. понавигируйся в списке чатов кнопками h j k l
|
||||||
|
3. Нажми Enter для открытия чата
|
||||||
|
4. Убедись, что чат прогурзился
|
||||||
|
|
||||||
|
Напиши, если что-то не работает.
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Работа поэтапно
|
||||||
|
|
||||||
|
Делай работу **небольшими итерациями**:
|
||||||
|
|
||||||
|
1. **Один этап = одна логическая единица**
|
||||||
|
- Один endpoint
|
||||||
|
- Один компонент
|
||||||
|
- Одна фича
|
||||||
|
|
||||||
|
2. **После каждого этапа:**
|
||||||
|
- Сообщи что сделано
|
||||||
|
- Дай сценарий проверки
|
||||||
|
- Дождись подтверждения
|
||||||
|
|
||||||
|
3. **Не делай сразу много:**
|
||||||
|
- ❌ Весь CRUD за раз
|
||||||
|
- ✅ Сначала GET, проверили, потом POST, проверили...
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Чеклист перед началом работы
|
||||||
|
|
||||||
|
- [ ] Прочитал CONTEXT.md
|
||||||
|
- [ ] Прочитал ROADMAP.md (понял текущую фазу)
|
||||||
|
- [ ] Понял задачу
|
||||||
|
- [ ] Готов работать поэтапно
|
||||||
|
- [ ] Помню: не запускаю сервисы сам, прошу пользователя
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Пример правильного workflow
|
||||||
|
|
||||||
|
```
|
||||||
|
Пользователь: Сделай endpoint для получения списка идей
|
||||||
|
|
||||||
|
Агент:
|
||||||
|
1. Читает документацию через Context7 (NestJS, TypeORM)
|
||||||
|
2. Использует Serena для навигации по коду
|
||||||
|
3. Создаёт endpoint GET /api/ideas
|
||||||
|
4. Сообщает:
|
||||||
|
|
||||||
|
"Создал endpoint GET /api/ideas.
|
||||||
|
|
||||||
|
Запусти backend:
|
||||||
|
cd backend && npm run dev
|
||||||
|
|
||||||
|
Проверь:
|
||||||
|
curl http://localhost:4001/api/ideas
|
||||||
|
|
||||||
|
Должен вернуться пустой массив: { data: [], meta: {...} }"
|
||||||
|
|
||||||
|
5. Ждёт фидбек
|
||||||
|
6. Переходит к следующему этапу
|
||||||
|
```
|
||||||
78
docs/REQUIREMENTS.md
Normal file
78
docs/REQUIREMENTS.md
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# TTUI - Требование к приложению
|
||||||
|
|
||||||
|
## Описание приложения
|
||||||
|
|
||||||
|
Терминальный интерфейс для telegram
|
||||||
|
|
||||||
|
## Функциональные требования
|
||||||
|
|
||||||
|
### Интерфейс
|
||||||
|
|
||||||
|
┌─ TTUI ───────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ 1:All │ 2:Personal │ 3:Work │ 4:Bots │
|
||||||
|
├──────────────────────┬───────────────────────────────────────────────────────┤
|
||||||
|
│ 🔍 Search... │ 👤 Mom (online) │
|
||||||
|
├──────────────────────┼───────────────────────────────────────────────────────┤
|
||||||
|
│ 📌 Saved Messages │ Today, Dec 21│
|
||||||
|
│ ▌ Mom (2)│ │
|
||||||
|
│ Boss │ Mom ────────────────────────────────────────── 14:20 │
|
||||||
|
│ Rust Community │ Привет! Ты покормил кота? │
|
||||||
|
│ Durov │ │
|
||||||
|
│ News Channel │ You ─────────────────────────────────────── 14:22 ✓✓ │
|
||||||
|
│ Spam Bot │ Да, конечно. Купил ему корм. │
|
||||||
|
│ Wife │ Скоро буду дома. │
|
||||||
|
│ Team Lead │ │
|
||||||
|
│ DevOps Chat (9)│ Mom ────────────────────────────────────────── 14:23 │
|
||||||
|
│ Server Alerts │ Отлично, захвати хлеба. │
|
||||||
|
│ Gym Bro │ │
|
||||||
|
│ Design Team │ You ─────────────────────────────────────── 14:25 ✓ │
|
||||||
|
│ Project X │ Ок. │
|
||||||
|
│ HR │ │
|
||||||
|
│ Mom's Friend │ │
|
||||||
|
│ Taxi Bot │ │
|
||||||
|
│ │ │
|
||||||
|
│ │ │
|
||||||
|
│ │ │
|
||||||
|
│ │ │
|
||||||
|
│ │ │
|
||||||
|
├──────────────────────┼───────────────────────────────────────────────────────┤
|
||||||
|
│ [User: Online] │ > **message** │
|
||||||
|
└──────────────────────┴───────────────────────────────────────────────────────┘
|
||||||
|
**commands**
|
||||||
|
|
||||||
|
|
||||||
|
### Список желаемого
|
||||||
|
1) футер - список папок в телеграме
|
||||||
|
2) список с чатами - лички и группы, сверху инпут для поиска чата
|
||||||
|
3) основной контент - открытый чат с сообщениями из чата, если никакой чат не открыт, то контент пустой, ничего не показываем. Снизу - инпут для ввода сообщения в чат, который открыт
|
||||||
|
4) снизу списка чата статус онлайн или нет сам пользователь приложения
|
||||||
|
5) при открытии чата должна загружаться история чата, а так же подгружаться новые сообщения от собеседника.
|
||||||
|
6) выделяем сообщения собеседника его никнеймом, группируем его сообщения и разделяем наши сообщения и сообщения собеседника, как на интерфейсе сверху
|
||||||
|
7) отображаем наше сообщение символом `✓`, если телеграм подтвердил, что сообщение отправлено, и выделяем `✓✓` если собеседник прочитал его
|
||||||
|
8) при навигации в чате выделяем строку курсивом, при выборе чата (то есть его открытии) ставим в начало символ ▌
|
||||||
|
9) `(2)` — счетчик непрочитанных (можно красить в красный/зеленый).
|
||||||
|
10) `muted` — статус чата (серый цвет).
|
||||||
|
11) `@` — пинг/меншн.
|
||||||
|
12) с видео/картинками/голосовые пока ничего не делаем, ренденим заглушку (с упоминанием что это картинка или видео и тд)
|
||||||
|
|
||||||
|
### Управление
|
||||||
|
1) ctrl+c или command+c - выход из программы
|
||||||
|
2) "h j k l" - влево, вниз, вверх, вправо (навигация в левом столбце) vim-style управление
|
||||||
|
3) стрелки - управление, так же как и "h j k l"
|
||||||
|
4) "command + 1", "command + 2" и так далее - переключение между папками, которые созданы в телеграме
|
||||||
|
5) из интерфейса "**message**" - это инпут для ввода сообщения в открытый чат
|
||||||
|
6) ctrl + s - фокус в инпут поиска чата
|
||||||
|
7) `**commands**` - сюда вставь описания команд, которые есть в приложении
|
||||||
|
|
||||||
|
## Технологии
|
||||||
|
Пишем на rust-е
|
||||||
|
|
||||||
|
1) ratatui - для tui интерфейса
|
||||||
|
2) rust-tdlib - для подключения апи телеграма
|
||||||
|
|
||||||
|
## Нефункциональные требования
|
||||||
|
|
||||||
|
### Производительность
|
||||||
|
1) программа должна выдавать 60 фпс
|
||||||
|
2) интерфейс не должен мерцать
|
||||||
|
3) минимальное разрешение - 600 символов, максимального нет, не ограничиваем
|
||||||
Reference in New Issue
Block a user