add ai functions
Some checks reported errors
continuous-integration/drone/push Build encountered an error

This commit is contained in:
2026-01-15 01:59:16 +03:00
parent 739a7d172d
commit dea0676169
33 changed files with 4850 additions and 104 deletions

View File

@ -27,21 +27,33 @@
| Цвет | Цветовая маркировка строки | Color |
| Оценка времени | AI-генерируемая оценка трудозатрат | Calculated |
#### 1.2 Редактирование идей
#### 1.2 Автор идеи
- При создании идеи автоматически сохраняется автор (текущий пользователь)
- Автора идеи изменить нельзя (поле readonly)
- Отображение автора в таблице и детальном просмотре
#### 1.3 Редактирование идей
- **Inline-редактирование**: возможность редактировать любое поле прямо в таблице двойным кликом
- **Быстрое изменение статуса и приоритета** через dropdown
- **Автосохранение** изменений
#### 1.3 Drag & Drop
#### 1.4 Drag & Drop
- Перемещение идей в списке для ручной сортировки
- Визуальная индикация при перетаскивании
- Сохранение порядка после перемещения
#### 1.4 Цветовая маркировка
#### 1.5 Цветовая маркировка
- Возможность назначить цвет строке для визуального выделения
- Предустановленная палитра цветов
- Фильтрация по цвету
#### 1.6 Экспорт идеи
- Экспорт отдельной идеи в формате DOCX
- Включает: название, описание, статус, приоритет, модуль, целевую аудиторию, боль, роль AI, способ проверки
- Если есть AI-оценка — включается в документ (общее время, сложность, разбивка по ролям, рекомендации)
- Если есть ТЗ — включается в документ (markdown рендерится как форматированный текст)
- Комментарии к идее включаются в документ (автор, дата, текст)
### 2. Сортировка и фильтрация
#### 2.1 Сортировка
@ -89,6 +101,14 @@
- Расчёт общего времени с учётом состава команды
- Рекомендации по оптимизации
#### 3.4 Генерация мини-ТЗ
- **Генерация ТЗ**: создание структурированного технического задания на основе описания идеи
- **Структура ТЗ**: цель, функциональные требования, технические требования, критерии приёмки, зависимости и риски
- **Сохранение**: ТЗ сохраняется в базе данных для повторного использования
- **Просмотр**: возможность просмотреть сохранённое ТЗ по клику на кнопку
- **Редактирование**: возможность изменить сгенерированное ТЗ вручную
- **Интеграция с оценкой**: AI-оценка времени учитывает ТЗ для более точного расчёта
### 4. Комментарии
- Добавление комментариев к идее
@ -96,6 +116,101 @@
- Упоминание участников (@mention)
- История комментариев
### 5. Система прав доступа
#### 5.1 Роли пользователей
- **Администратор** — единственный пользователь с полными правами, логин задаётся в секретах кластера (K8s Secret)
- **Обычный пользователь** — новый пользователь после первого входа получает только права на просмотр
- Администратор может изменять права любого пользователя (кроме себя)
#### 5.2 Гранулярные права доступа
Каждое право настраивается отдельно:
| Право | Описание |
|-------|----------|
| `view_ideas` | Просмотр списка идей (по умолчанию: ✅) |
| `create_ideas` | Создание новых идей |
| `edit_own_ideas` | Редактирование своих идей |
| `edit_any_ideas` | Редактирование чужих идей |
| `delete_own_ideas` | Удаление своих идей |
| `delete_any_ideas` | Удаление чужих идей |
| `reorder_ideas` | Изменение порядка идей (drag & drop) |
| `add_comments` | Добавление комментариев |
| `delete_own_comments` | Удаление своих комментариев |
| `delete_any_comments` | Удаление чужих комментариев |
| `request_ai_estimate` | Запрос AI-оценки трудозатрат |
| `request_ai_specification` | Запрос AI-генерации ТЗ |
| `edit_specification` | Редактирование ТЗ |
| `delete_ai_generations` | Удаление AI-генераций (оценки, ТЗ) |
| `manage_team` | Управление командой (добавление/удаление участников) |
| `manage_roles` | Управление ролями команды |
| `export_ideas` | Экспорт идей в документы |
| `view_audit_log` | Просмотр истории действий |
#### 5.3 Панель администратора
- Доступна только администратору
- Таблица пользователей с их правами
- Чекбоксы для включения/выключения каждого права
- Применение изменений сохраняется немедленно
### 6. История действий (Аудит)
#### 6.1 Логирование действий
- Любые манипуляции с данными фиксируются: создание, редактирование, удаление идей, генерации AI, комментарии
- Сохраняется: кто сделал, что сделал, когда, старое значение, новое значение
#### 6.2 Формат записи аудита
| Поле | Описание |
|------|----------|
| id | Уникальный идентификатор записи |
| userId | ID пользователя |
| userName | Имя пользователя |
| action | Тип действия (create, update, delete, generate, restore) |
| entityType | Тип сущности (idea, comment, specification, estimate, team_member) |
| entityId | ID сущности |
| oldValue | Значение до изменения (JSON) |
| newValue | Значение после изменения (JSON) |
| timestamp | Дата и время действия |
#### 6.3 Просмотр истории
- Страница истории действий (только для админа или пользователей с правом `view_audit_log`)
- Фильтрация по пользователю, типу действия, типу сущности, дате
- Возможность просмотра diff (что изменилось)
- Восстановление удалённых данных из аудита
#### 6.4 Настройки хранения
- Срок хранения истории настраивается администратором
- По умолчанию: 30 дней
- Автоматическая очистка старых записей по cron job
### 7. Многопользовательская работа
#### 7.1 Real-time обновления (WebSocket)
- Автоматическое обновление данных у всех пользователей при изменениях
- События: создание/редактирование/удаление идей, новые комментарии, изменение порядка
- Визуальная индикация изменений другими пользователями
#### 7.2 Конкурентное редактирование
- При попытке редактировать идею, которую редактирует другой пользователь — предупреждение
- Показ кто сейчас редактирует запись
- Оптимистичная блокировка с version/updatedAt
#### 7.3 Присутствие пользователей
- Показ онлайн пользователей
- Аватары/иконки пользователей, работающих с приложением
### 8. Темная тема
#### 8.1 Переключение темы
- Переключатель светлая/тёмная тема в header
- Автоопределение системной темы (prefers-color-scheme)
- Сохранение выбора в localStorage
#### 8.2 Цветовая схема
- Все компоненты поддерживают обе темы
- Цвета статусов, приоритетов и маркировки адаптированы для тёмной темы
- MUI theme provider с dark mode
---
## Технические требования
@ -108,7 +223,10 @@
- **Database**: PostgreSQL
- **ORM**: TypeORM
- **API**: REST + WebSocket (для real-time обновлений)
- **WebSocket**: @nestjs/websockets + Socket.io
- **AI Integration**: ai-proxy service тут лежит гайд по интеграции /Users/vigdorov/dev/gptunnel-service/INTEGRATION.md
- **Document Generation**: docx (для экспорта)
- **Cron Jobs**: @nestjs/schedule (для очистки аудита)
### Frontend (React + TypeScript)
@ -137,25 +255,31 @@
### Безопасность
- Валидация входных данных
- Rate limiting для AI-запросов
- Проверка прав доступа на каждом endpoint
- Защита от конкурентных изменений (оптимистичная блокировка)
### Авторизация
### Авторизация и авторизация
- **Keycloak** (auth.vigdorov.ru) внешний Identity Provider
- Авторизация через редиректы на стандартную форму Keycloak
- Authorization Code Flow + PKCE
- JWT токены с валидацией через JWKS
- Автоматическое обновление токенов
- Защита всех API endpoints (кроме /health)
- Роли и права доступа НЕ требуются просто аутентификация
- **Гранулярные права доступа** см. раздел 5
- **Администратор** определяется через K8s Secret `ADMIN_EMAIL`
---
## Открытые вопросы
## Решённые вопросы
1. Нужна ли многопользовательская работа и разграничение прав?
НЕТ
**ДА** см. разделы 5 (Права доступа) и 7 (Многопользовательская работа)
2. Требуется ли история изменений (audit log)?
НЕТ
4. Нужен ли экспорт данных (CSV, Excel)?
НЕТ
5. Интеграция с внешними системами (Jira, Trello)?
НЕТ
**ДА** см. раздел 6 (История действий)
3. Нужен ли экспорт данных?
**ДА** экспорт отдельной идеи в DOCX (см. раздел 1.6)
4. Интеграция с внешними системами (Jira, Trello)?
**НЕТ** не требуется