# ТЕХНИЧЕСКОЕ ЗАДАНИЕ: PMO AI Assistant ## Автоматизация проектного офиса с использованием искусственного интеллекта --- ## 1. РЕШАЕМАЯ ЗАДАЧА ### 1.1. Бизнес-контекст Проектный офис компании ведет множество параллельных проектов, по которым регулярно проводятся встречи различных типов (рабочие, оперативные советы, управляющие советы). Текущие проблемы: - **Ручное ведение протоколов** занимает 30-60% времени встречи - **Потеря контекста** между встречами — ответственные не помнят статус предыдущих мероприятий - **Отсутствие единой базы знаний** по проектам — сложно найти информацию по похожим встречам - **Разрозненность данных** — транскрибации в одном месте, протоколы в другом, мероприятия в третьем - **Сложность контроля исполнения** — нет автоматического отслеживания просроченных задач ### 1.2. Целевое состояние Создать **единый AI-powered сервис** для проектного офиса, который: - Автоматически транскрибирует аудио встреч (или принимает текстовые исходники) - Генерирует структурированные протоколы трех типов с учетом истории проекта - Обеспечивает семантический поиск по всем встречам ("найди встречи, где обсуждали риски по модулю авторизации") - Формирует актуальный статус проекта и диаграмму Ганта на основе всех мероприятий - Позволяет редактировать протоколы как текст, так и через AI-чат - Экспортирует протоколы в DOCX для рассылки подписантам ### 1.3. Описание сервиса **PMO AI Assistant** — это веб-приложение (SPA + REST API), которое: - Работает в браузере (Chrome, Firefox, Edge, Safari последних версий) - Не требует установки на рабочие станции пользователей - Интегрируется с корпоративными ВКС (MTS Link, Bitrix24, Яндекс.Телемост) для автоматической загрузки транскрибаций - Использует LLM (OpenAI-совместимые API) для генерации протоколов - Хранит данные в PostgreSQL с поддержкой векторного поиска (pgvector) - Может работать как с облачными, так и с локальными моделями векторизации --- ## 2. СТРАНИЦЫ SPA И ФУНКЦИОНАЛ ### 2.1. Структура приложения ``` / → Дашборд (обзор всех проектов) /projects → Таблица проектов (список) /projects/:id → Карточка проекта (детали) /meetings → Таблица встреч (список) /meetings/:id → Карточка встречи (работа с протоколом) /settings → Настройки системы /settings/prompts → Управление промптами /settings/users → Управление пользователями /settings/integrations → Настройки интеграций (ВКС) ``` ### 2.2. Детальное описание страниц #### **Дашборд (/)** **Назначение:** Быстрый обзор состояния всех проектов и недавних встреч. **Элементы:** - **Карточки проектов** (Bento Grid): - Краткое имя проекта - Текущий этап (цветовой индикатор) - AI-статус (краткое резюме от ИИ) - Количество активных/просроченных мероприятий - Дата последней встречи - **Лента последних встреч** (Timeline): - Дата, проект, тип встречи - Краткое резюме (первые 2 предложения) - Статус протокола (черновик / утвержден) - **Виджет "Требует внимания"**: - Просроченные мероприятия - Проекты без встреч > 14 дней - Нерешенные вопросы с высоким приоритетом #### **Таблица проектов (/projects)** **Назначение:** Управление списком проектов, быстрый поиск. **Элементы:** - **Таблица с колонками:** - Краткое имя (кликабельно → переход в карточку) - Полное наименование - Этап (badge с цветом) - Ответственный ПМ - AI-статус (краткий текст) - Дата создания - Действия (⋮ меню: редактировать, архивировать) - **Панель фильтров (слева):** - Текстовый поиск (по всем полям) - Фильтр по этапу (multi-select) - Фильтр по ответственному - Фильтр по дате создания - **Кнопка "+ Новый проект"** (открывает модальное окно) #### **Карточка проекта (/projects/:id)** **Назначение:** Детальная информация о проекте, история встреч, визуализация. **Вкладки:** 1. **Обзор:** - Карточка проекта (все поля, редактируемые) - AI-статус (большой блок, кнопка "Обновить статус") - Диаграмма Ганта (Mermaid.js, интерактивная) - Статистика: всего встреч, активных мероприятий, просроченных 2. **Встречи:** - Таблица встреч этого проекта (отфильтрованная) - Кнопка "+ Новая встреча" 3. **Мероприятия:** - Сводная таблица всех мероприятий по проекту - Фильтры: статус, ответственный, срок - Экспорт в Excel #### **Таблица встреч (/meetings)** **Назначение:** Управление всеми встречами, семантический поиск. **Элементы:** - **Таблица с колонками:** - Дата - Проект (ссылка) - Тип встречи (badge) - Место - Ответственный - Краткое резюме (первые 100 символов) - Статус протокола - **Панель фильтров:** - **Векторный поиск** (текстовое поле: "О чем были встречи?") - Фильтр по проекту - Фильтр по дате (range picker) - Фильтр по ответственному - Фильтр по типу встречи - **Кнопка "+ Новая встреча"** #### **Карточка встречи (/meetings/:id)** **Назначение:** Основная рабочая область — загрузка исходников, генерация и редактирование протокола. **Вкладки:** 1. **Исходник:** - Если аудио: плеер + кнопка "Транскрибировать" (показывает прогресс) - Если текст: редактор транскрибации (textarea с подсветкой синтаксиса) - Кнопка "Сохранить исходник" 2. **Резюме:** - Блок с универсальным резюме (генерируется автоматически) - Кнопка "✏️ Редактировать" (переключает в режим редактирования) - Кнопка "Перегенерировать" 3. **Протокол:** - **Три кнопки генерации** (с иконками): - 📋 Протокол встречи - ⚡ Протокол оперативного совета - 👔 Протокол управляющего совета - **Markdown редактор** (md-editor-v3): - Split view (редактор + превью) - Панель инструментов (жирный, списки, таблицы) - Возможность вставки таблиц (для перечня мероприятий) - **AI-чат (справа, collapsible):** - Выделяешь текст в протоколе → пишешь в чат: "Сделай более формальным" - ИИ стримит ответ, можно принять или отклонить - **Кнопки действий:** - 💾 Сохранить черновик - ✅ Утвердить протокол (триггерит обновление статуса проекта) - 📥 Экспорт в DOCX #### **Настройки (/settings)** **Вкладки:** 1. **Проекты:** Управление справочником проектов (CRUD) 2. **Пользователи:** Управление доступами (роли: admin, pmo, viewer) 3. **Промпты:** Редактирование системных промптов для генерации протоколов 4. **Интеграции:** Настройка API-ключей для ВКС (MTS Link, Bitrix24, Яндекс.Телемост) 5. **Векторизация:** Выбор режима (OpenAI API / Локальная модель) --- ## 3. ИТОГОВЫЙ ФУНКЦИОНАЛ (MVP) ### 3.1. Функционал первого этапа (MVP) ✅ Управление проектами (CRUD, поиск, фильтры) ✅ Управление встречами (CRUD, загрузка аудио/текста) ✅ Транскрибация аудио через Whisper API (синхронно) ✅ Генерация универсального резюме встречи ✅ Генерация протоколов трех типов (с учетом истории проекта) ✅ Редактирование протоколов в Markdown ✅ AI-чат для редактирования выделенного текста (стриминг) ✅ Экспорт протокола в DOCX ✅ Векторный поиск по встречам (OpenAI embeddings / локальная модель) ✅ AI-статус проекта (генерируется при утверждении протокола) ✅ Диаграмма Ганта (Mermaid.js) ✅ Интеграция с одной ВКС (например, Яндекс.Телемост) ### 3.2. Функционал второго этапа ⏳ Очереди задач (BullMQ + Redis) для асинхронной транскрибации и генерации ⏳ WebSocket-уведомления о готовности транскрибации ⏳ Интеграция с остальными ВКС (MTS Link, Bitrix24) ⏳ Расширенная аналитика (дашборды, графики) ⏳ Мобильная адаптация ⏳ Мультиязычность (i18n) --- ## 4. АРХИТЕКТУРА И СТЕК ТЕХНОЛОГИЙ ### 4.1. Backend - **Runtime:** Node.js 20+ (LTS) - **Framework:** Express.js 4.x - **ORM:** Drizzle ORM (TypeScript-first, легкая, с декларативными миграциями) - **База данных:** PostgreSQL 15+ с расширением `pgvector` - **Валидация:** Zod (для runtime-проверок) - **ИИ-клиент:** OpenAI SDK (официальный) - **Локальная векторизация:** @xenova/transformers (Hugging Face, ONNX Runtime) - **Генерация DOCX:** docx (библиотека для создания Word-документов) - **Аутентификация:** JWT (jsonwebtoken + bcrypt) - **Логирование:** pino (быстрый структурированный логгер) ### 4.2. Frontend - **Framework:** Vue 3 (Composition API, `