8.4 KiB
8.4 KiB
План разработки Team Planner
Это основной источник истины для всех планов по проекту. Обновляй этот файл при изменении планов или завершении задач.
Обзор фаз
| Фаза | Название | Статус | Описание |
|---|---|---|---|
| 0 | Инициализация | ✅ Завершена | Настройка проектов, инфраструктура |
| 1 | Базовый функционал | ✅ Завершена | CRUD идей, таблица, редактирование |
| 1.5 | Авторизация | ✅ Завершена | Keycloak, JWT, защита API |
| 2 | Расширенный функционал | ✅ Завершена | Drag&Drop, цвета, комментарии, команда |
| 3 | AI-интеграция | ⏸️ Ожидает | Оценка времени, рекомендации |
Фаза 0: Инициализация ✅
Backend
- Создать NestJS проект (
nest new backend) - Настроить TypeORM + PostgreSQL
- Создать docker-compose для PostgreSQL
- Настроить базовую структуру модулей
- Добавить глобальную валидацию (class-validator)
- Настроить CORS
Frontend
- Создать React проект (Vite + TypeScript)
- Установить и настроить MUI
- Установить Zustand
- Установить TanStack Table
- Установить dnd-kit
- Настроить Axios + React Query
- Создать базовую структуру папок
Инфраструктура
- Создать общий docker-compose
- Настроить ESLint + Prettier для обоих проектов
Фаза 1: Базовый функционал ✅
Backend — Модуль Ideas
- Создать сущность Idea (entity)
- Создать DTO (CreateIdeaDto, UpdateIdeaDto, QueryIdeasDto)
- Реализовать IdeasService
- Реализовать IdeasController
- GET /api/ideas (с пагинацией, фильтрами, сортировкой)
- POST /api/ideas
- PATCH /api/ideas/:id
- DELETE /api/ideas/:id
- Добавить валидацию
- E2E тесты (Playwright)
Frontend — Таблица идей
- Создать типы (types/idea.ts)
- Создать API-сервис (services/ideas.ts)
- Создать Zustand store (store/ideas.ts)
- Создать компонент IdeasTable
- Отображение колонок
- Пагинация
- Сортировка (клик по заголовку)
- Создать компоненты фильтров
- Фильтр по статусу
- Фильтр по приоритету
- Фильтр по модулю
- Текстовый поиск
- Inline-редактирование ячеек
- Double-click для редактирования
- Автосохранение при blur/Enter
- Оптимистичные обновления
- Создать модалку создания идеи
- Добавить skeleton loader
- Добавить empty state
- Удаление идей
- Локализация интерфейса на русский язык
Фаза 1.5: Авторизация ✅
Keycloak интеграция для защиты приложения
Настройка Keycloak (auth.vigdorov.ru)
- Создать realm
team-planner - Создать client
team-planner-frontend(public, PKCE) - Настроить Valid Redirect URIs
- Создать тестового пользователя
Backend — Auth модуль
- Установить passport, passport-jwt, jwks-rsa
- Создать JwtStrategy (валидация через JWKS)
- Создать JwtAuthGuard (глобальный guard)
- Создать @Public() декоратор
- Добавить env переменные (KEYCLOAK_REALM_URL)
- Защитить все endpoints (кроме /health)
Frontend — AuthProvider
- Установить keycloak-js
- Создать keycloak.ts сервис
- Создать AuthProvider компонент
- onLoad: 'login-required'
- PKCE (S256)
- Автообновление токена
- Добавить interceptors в api.ts
- Authorization header
- Обработка 401
- Обернуть App в AuthProvider
Фаза 2: Расширенный функционал ✅
Backend — Дополнения
- PATCH /api/ideas/reorder (изменение порядка)
- Модуль Comments
- Сущность Comment
- GET /api/ideas/:id/comments
- POST /api/ideas/:id/comments
- DELETE /api/comments/:id
- Модуль Team
- Сущность TeamMember
- CRUD endpoints
- GET /api/team/summary
Frontend — Drag & Drop ✅
- Интегрировать dnd-kit в таблицу
- Drag handle в первой колонке
- Визуальная индикация при перетаскивании (DragOverlay)
- Сохранение порядка на сервер (оптимистичные обновления)
- Сортировка по order по умолчанию
Frontend — Цветовая маркировка ✅
- Добавить поле color в таблицу
- Цветовой фон строки
- Picker для выбора цвета
- Фильтр по цвету
Frontend — Комментарии ✅
- Раскрывающаяся панель под строкой
- Список комментариев
- Форма добавления комментария
- Удаление комментариев
Frontend — Управление командой ✅
- Страница /team (табы навигации)
- Сводка по ролям
- Таблица участников
- Модалка добавления/редактирования
- Матрица производительности (время на задачи по сложности)
E2E тестирование ✅
- Playwright тесты для Фазы 1 (17 тестов)
- Playwright тесты для Фазы 2 (37 тестов)
- data-testid во всех компонентах
- Гайд E2E_TESTING.md
Фаза 3: AI-интеграция ⏸️
Backend — Модуль AI
- Интегрировать ai-proxy service
- POST /api/ai/estimate
- Получить идею и состав команды
- Сформировать промпт
- Отправить запрос в AI
- Распарсить ответ
- Сохранить оценку
- Rate limiting для AI-запросов
Frontend — AI-оценка
- Кнопка "Оценить AI" в строке/детали идеи
- Модалка с результатом оценки
- Общее время
- Сложность
- Разбивка по ролям
- Рекомендации
- Отображение оценки в таблице
- Loading state для AI-запросов
Backlog (после MVP)
- WebSocket для real-time обновлений
- Виртуализация списка (1000+ идей)
- Keyboard shortcuts
- Сохранение пресетов фильтров
- Темная тема
Принципы разработки
- Вертикальная разработка — делаем полный flow (BE → FE) для каждой фичи
- Инкрементальность — сначала базовое, потом улучшаем
- Тестирование — покрываем критичный функционал E2E тестами (см. E2E_TESTING.md)
- Документирование — обновляем CONTEXT.md после значимых изменений
- data-testid — все новые компоненты сразу получают data-testid для тестов