# Team Planner - Требования к приложению

## Описание продукта

Приложение для команды разработки, позволяющее собирать бэклог идей, приоритизировать его, проводить брейнштормы, оценивать задачи и оставлять комментарии.

---

## Функциональные требования

### 1. Управление идеями

#### 1.1 Список идей
Таблица со следующими полями для каждой идеи:

| Поле | Описание | Тип |
|------|----------|-----|
| Статус | Текущее состояние идеи (Новая, В обсуждении, Одобрена, В работе, Готово, Отклонена) | Enum |
| Приоритет | Важность идеи (Критический, Высокий, Средний, Низкий) | Enum |
| Модуль | Где реализуется (Frontend, Backend, AI, Mobile, Infrastructure, Other) | Enum/Multi-select |
| Суть идеи | Краткое описание идеи | Text |
| Для кого | Целевая аудитория / пользователь | Text |
| Какую боль решает | Проблема, которую решает идея | Text |
| Роль AI | Что делает ИИ в рамках этой идеи (если применимо) | Text |
| Способ проверки | Быстрый способ валидации идеи / MVP | Text |
| Комментарии | Обсуждение и заметки | Text (список комментариев) |
| Цвет | Цветовая маркировка строки | Color |
| Оценка времени | AI-генерируемая оценка трудозатрат | Calculated |

#### 1.2 Редактирование идей
- **Inline-редактирование**: возможность редактировать любое поле прямо в таблице двойным кликом
- **Быстрое изменение статуса и приоритета** через dropdown
- **Автосохранение** изменений

#### 1.3 Drag & Drop
- Перемещение идей в списке для ручной сортировки
- Визуальная индикация при перетаскивании
- Сохранение порядка после перемещения

#### 1.4 Цветовая маркировка
- Возможность назначить цвет строке для визуального выделения
- Предустановленная палитра цветов
- Фильтрация по цвету

### 2. Сортировка и фильтрация

#### 2.1 Сортировка
- По любому полю (клик на заголовок колонки)
- Множественная сортировка (Shift + клик)
- Сохранение настроек сортировки

#### 2.2 Фильтры
- Фильтр по статусу
- Фильтр по приоритету
- Фильтр по модулю
- Фильтр по цвету
- Текстовый поиск по всем полям
- Сохранение пресетов фильтров

### 3. AI-оценка времени

#### 3.1 Управление командой
- Список членов команды с ролями:
  - Backend-разработчик
  - Frontend-разработчик
  - AI/ML-инженер
  - Аналитик
  - Тестировщик (QA)
  - DevOps
  - Дизайнер
  - Project Manager
- Количество сотрудников каждой роли

#### 3.2 Матрица производительности
Для каждого сотрудника/роли указывается время на задачи разной сложности:

| Сложность | Описание | Пример времени |
|-----------|----------|----------------|
| Trivial | Тривиальная задача | 1-2 часа |
| Easy | Лёгкая задача | 0.5-1 день |
| Medium | Средняя задача | 2-3 дня |
| Hard | Сложная задача | 1-2 недели |
| Epic | Эпик / большая фича | 2-4 недели |

#### 3.3 AI-функционал
- Анализ описания идеи
- Определение необходимых ролей для реализации
- Оценка сложности для каждой роли
- Расчёт общего времени с учётом состава команды
- Рекомендации по оптимизации

### 4. Комментарии

- Добавление комментариев к идее
- Ответы на комментарии (треды)
- Упоминание участников (@mention)
- История комментариев

---

## Технические требования

### Backend (NestJS)

#### Стек технологий
- **Framework**: NestJS
- **Language**: TypeScript
- **Database**: PostgreSQL
- **ORM**: TypeORM
- **API**: REST + WebSocket (для real-time обновлений)
- **AI Integration**: ai-proxy service тут лежит гайд по интеграции /Users/vigdorov/dev/gptunnel-service/INTEGRATION.md

### Frontend (React + TypeScript)

#### Стек технологий
- **Framework**: React 18+
- **Language**: TypeScript
- **State Management**: Zustand
- **UI Library**: MUI
- **Table**: TanStack Table (react-table)
- **Drag & Drop**: dnd-kit / react-beautiful-dnd
- **HTTP Client**: Axios / React Query
- **Styling**: Tailwind CSS / CSS Modules

## Нефункциональные требования

### Производительность
- Виртуализация списка при большом количестве идей (1000+)
- Оптимистичные обновления UI
- Кэширование данных

### UX
- Отзывчивый интерфейс (< 100ms на действие)
- Keyboard shortcuts для частых операций
- Responsive design (desktop-first)

### Безопасность
- Валидация входных данных
- Rate limiting для AI-запросов

### Авторизация
- **Keycloak** (auth.vigdorov.ru) — внешний Identity Provider
- Авторизация через редиректы на стандартную форму Keycloak
- Authorization Code Flow + PKCE
- JWT токены с валидацией через JWKS
- Автоматическое обновление токенов
- Защита всех API endpoints (кроме /health)
- Роли и права доступа НЕ требуются — просто аутентификация

---

## Открытые вопросы

1. Нужна ли многопользовательская работа и разграничение прав?
НЕТ
2. Требуется ли история изменений (audit log)?
НЕТ
4. Нужен ли экспорт данных (CSV, Excel)?
НЕТ
5. Интеграция с внешними системами (Jira, Trello)?
НЕТ
