add ai functions
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This commit is contained in:
148
REQUIREMENTS.md
148
REQUIREMENTS.md
@ -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)?
|
||||
**НЕТ** — не требуется
|
||||
|
||||
Reference in New Issue
Block a user