This commit is contained in:
2026-01-14 01:10:01 +03:00
parent 24c5581d7b
commit 2ce092aa59
40 changed files with 2001 additions and 297 deletions

View File

@ -6,9 +6,9 @@
## Текущий статус
**Этап:** Фаза 1 (Frontend) завершена
**Фаза MVP:** Готов к тестированию базового функционала
**Последнее обновление:** 2025-12-31
**Этап:** Фаза 2 — Drag & Drop ✅, Авторизация ✅, далее цвета/комментарии/команда
**Фаза MVP:** Базовый функционал + авторизация готовы
**Последнее обновление:** 2026-01-14
---
@ -35,6 +35,15 @@
| 2025-12-29 | **Фаза 1:** Frontend — Удаление идей |
| 2025-12-31 | Исправлен баг: Select в inline-редактировании закрывался при клике (MenuProps.disablePortal) |
| 2025-12-31 | Локализация интерфейса на русский язык |
| 2026-01-13 | **Фаза 2:** Backend — PATCH /api/ideas/reorder endpoint (ReorderIdeasDto, транзакция) |
| 2026-01-13 | **Фаза 2:** Frontend — Drag & Drop с dnd-kit (DraggableRow, drag handle) |
| 2026-01-13 | **Фаза 2:** Исправлены баги D&D: setNodeRef, сортировка по order, оптимистичные обновления, DragOverlay |
| 2026-01-13 | Добавлены Selenium E2E тесты (tests/e2e/) — Фаза 1 ✅, Фаза 2 частично |
| 2026-01-13 | **Авторизация:** Backend Auth модуль (JWT + Keycloak JWKS) |
| 2026-01-13 | **Авторизация:** Frontend AuthProvider (keycloak-js, auto token refresh) |
| 2026-01-14 | E2E тесты переписаны с Selenium на Playwright (tests/e2e/*.spec.ts) |
| 2026-01-14 | **Фаза 2:** Улучшен Drag & Drop — добавлен @dnd-kit/modifiers, исправлен race condition с drag handle, restrictToVerticalAxis |
| 2026-01-14 | **Production:** Настроен Keycloak для production (team-planner.vigdorov.ru), обновлён Dockerfile с Keycloak переменными |
---
@ -42,7 +51,7 @@
> Смотри [ROADMAP.md](ROADMAP.md) для полного плана разработки
**Сейчас:** Тестирование Фазы 1, затем Фаза 2 (Drag&Drop, цвета, комментарии)
**Сейчас:** Фаза 2 — цветовая маркировка, комментарии, управление командой
---
@ -57,9 +66,24 @@ team-planner/
├── ARCHITECTURE.md # Архитектура, API, UI
├── ROADMAP.md # План разработки
├── docker-compose.yml # PostgreSQL и сервисы
├── tests/
│ ├── package.json # Зависимости для тестов
│ ├── playwright.config.ts # Конфигурация Playwright
│ └── e2e/ # Playwright E2E тесты
│ ├── auth.setup.ts # Авторизация для тестов (Keycloak)
│ ├── phase1.spec.ts # Тесты Фазы 1 (11 тестов)
│ └── phase2.spec.ts # Тесты Фазы 2 (D&D, цвета, комментарии, команда)
├── backend/ # NestJS API
│ ├── src/
│ │ ├── ideas/ # Модуль идей (готов)
│ │ ├── auth/ # Модуль авторизации ✅
│ │ │ ├── jwt.strategy.ts # JWT валидация через JWKS
│ │ │ ├── jwt-auth.guard.ts # Глобальный guard
│ │ │ └── decorators/public.decorator.ts # @Public() для открытых endpoints
│ │ ├── ideas/ # Модуль идей (готов + reorder)
│ │ │ ├── dto/
│ │ │ │ └── reorder-ideas.dto.ts # DTO для изменения порядка
│ │ │ ├── ideas.controller.ts # PATCH /ideas/reorder
│ │ │ └── ideas.service.ts # reorder() с транзакцией
│ │ ├── team/ # Модуль команды (Фаза 2)
│ │ ├── comments/ # Модуль комментариев (Фаза 2)
│ │ └── ai/ # AI-оценка (Фаза 3)
@ -67,14 +91,20 @@ team-planner/
└── frontend/ # React приложение
├── src/
│ ├── components/
│ │ ├── IdeasTable/ # Таблица идей с inline-редактированием
│ │ ├── AuthProvider/ # Keycloak авторизация ✅
│ │ ├── IdeasTable/
│ │ │ ├── IdeasTable.tsx # Таблица с DndContext
│ │ │ ├── DraggableRow.tsx # Сортируемая строка (useSortable)
│ │ │ ├── columns.tsx # Колонки + drag handle
│ │ │ └── ...
│ │ ├── IdeasFilters/ # Фильтры
│ │ └── CreateIdeaModal/ # Модалка создания
│ ├── hooks/
│ │ └── useIdeas.ts # React Query хуки
│ │ └── useIdeas.ts # React Query хуки + useReorderIdeas
│ ├── services/
│ │ ├── api.ts # Axios instance
│ │ ── ideas.ts # API методы для идей
│ │ ├── api.ts # Axios + auth interceptors
│ │ ── keycloak.ts # Keycloak instance ✅
│ │ └── ideas.ts # API методы + reorder()
│ ├── store/
│ │ └── ideas.ts # Zustand store
│ └── types/
@ -95,6 +125,8 @@ team-planner/
| Drag & Drop | dnd-kit | Современный, хорошая поддержка |
| Data Fetching | React Query | Кэширование, оптимистичные обновления |
| Язык интерфейса | Русский | Требование проекта |
| Авторизация | Keycloak | Внешний IdP, OIDC, редиректы |
| E2E тесты | Playwright | Быстрее Selenium, лучше API, auto-wait |
---
@ -111,3 +143,6 @@ team-planner/
- Многопользовательский режим НЕ нужен
- Экспорт и интеграции НЕ нужны
- Warning о React Compiler и TanStack Table можно игнорировать
- **Drag & Drop:** dnd-kit с useSortable + @dnd-kit/modifiers (restrictToVerticalAxis), DragHandle через React Context, CSS.Translate для совместимости с таблицами, reorder через транзакцию
- **Keycloak:** auth.vigdorov.ru, realm `team-planner`, client `team-planner-frontend`
- **Production URL:** https://team-planner.vigdorov.ru (добавлен в Valid redirect URIs и Web origins клиента Keycloak)