162 lines
6.4 KiB
Markdown
162 lines
6.4 KiB
Markdown
# План разработки Team Planner
|
||
|
||
> **Это основной источник истины для всех планов по проекту.**
|
||
> Обновляй этот файл при изменении планов или завершении задач.
|
||
|
||
---
|
||
|
||
## Обзор фаз
|
||
|
||
| Фаза | Название | Статус | Описание |
|
||
|------|----------|--------|----------|
|
||
| 0 | Инициализация | ⏳ В процессе | Настройка проектов, инфраструктура |
|
||
| 1 | Базовый функционал | ⏸️ Ожидает | CRUD идей, таблица, редактирование |
|
||
| 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
|
||
- [ ] Создать базовую структуру папок
|
||
|
||
### Инфраструктура
|
||
- [ ] Настроить ESLint + Prettier для обоих проектов
|
||
- [ ] Создать общий docker-compose
|
||
|
||
---
|
||
|
||
## Фаза 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
|
||
|
||
---
|
||
|
||
## Фаза 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 в первой колонке
|
||
- [ ] Визуальная индикация при перетаскивании
|
||
- [ ] Сохранение порядка на сервер
|
||
|
||
### 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 после значимых изменений
|