Files
team-planner/ROADMAP.md
2026-01-14 01:10:01 +03:00

8.0 KiB
Raw Blame History

План разработки 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
  • Добавить валидацию
  • Написать тесты

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
  • Сводка по ролям
  • Таблица участников
  • Модалка добавления/редактирования
  • Матрица производительности (время на задачи по сложности)

Фаза 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
  • Сохранение пресетов фильтров
  • Темная тема

Принципы разработки

  1. Вертикальная разработка — делаем полный flow (BE → FE) для каждой фичи
  2. Инкрементальность — сначала базовое, потом улучшаем
  3. Тестирование — покрываем критичный функционал
  4. Документирование — обновляем CONTEXT.md после значимых изменений