/
alexefan136
/
flowstack
Обзор
Документация
Войти
/
alexefan136
/
flowstack
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
ui/src/lib/data.ts
250 строк
15 KB
Alexander Efanov
Обновление репозитория
15 июл 2026, 12:19
15 июл 2026, 12:19
76704c6
Код
Авторство
О чём код?
// Добавить к существующим импортам import type { KnowledgeDoc, KnowledgeGap, GraphNode, GraphEdge } from './knowledge'; export const plugins = [ { id: 'p1', name: 'Confluence Sync', nameRu: 'Синхронизация с Confluence', category: 'Knowledge Source', catRu: 'Источник знаний', installs: '12.4k', rating: 4.8, icon: 'book-open', color: 'from-blue-500 to-cyan-500', desc: 'Двусторонняя синхронизация с Atlassian Confluence' }, { id: 'p2', name: 'GitHub Integration', nameRu: 'Интеграция с GitHub', category: 'Integration', catRu: 'Интеграция', installs: '28.1k', rating: 4.9, icon: 'git-branch', color: 'from-gray-700 to-gray-900', desc: 'Подключение репозиториев, PR и задач' }, { id: 'p3', name: 'Code Executor', nameRu: 'Исполнитель кода', category: 'Skill', catRu: 'Навык', installs: '15.7k', rating: 4.7, icon: 'code', color: 'from-purple-500 to-pink-500', desc: 'Песочница для выполнения кода на 12+ языках' }, { id: 'p4', name: 'Jira Connector', nameRu: 'Коннектор Jira', category: 'Integration', catRu: 'Интеграция', installs: '9.3k', rating: 4.6, icon: 'puzzle', color: 'from-blue-600 to-indigo-600', desc: 'Создание и управление задачами Jira через чат' }, { id: 'p5', name: 'PDF Parser Pro', nameRu: 'PDF-парсер Pro', category: 'Parser', catRu: 'Парсер', installs: '7.8k', rating: 4.8, icon: 'file-text', color: 'from-red-500 to-orange-500', desc: 'Продвинутое извлечение PDF с распознаванием таблиц' }, { id: 'p6', name: 'Voice Channel', nameRu: 'Голосовой канал', category: 'Channel', catRu: 'Канал', installs: '4.2k', rating: 4.5, icon: 'mic', color: 'from-emerald-500 to-teal-500', desc: 'Голосовая интеграция через Twilio и Deepgram' }, { id: 'p7', name: 'Browser Automation', nameRu: 'Автоматизация браузера', category: 'Skill', catRu: 'Навык', installs: '11.2k', rating: 4.7, icon: 'globe', color: 'from-indigo-500 to-purple-500', desc: 'Веб-автоматизация на базе Playwright' }, { id: 'p8', name: 'Legal Domain Pack', nameRu: 'Юридический пакет', category: 'Domain', catRu: 'Домен', installs: '3.1k', rating: 4.9, icon: 'shield', color: 'from-amber-500 to-red-500', desc: 'Проверка договоров, анализ NDA, комплаенс' }, ]; export const knowledgeDocs = [ { title: 'ADR-042: Переход на Rust для сервиса-шлюза', type: 'Решение', freshness: 98, views: 342, updated: '2 ч', author: 'А. Петров', tags: ['архитектура', 'rust'] }, { title: 'Runbook: Процедура переключения БД при отказе', type: 'Runbook', freshness: 94, views: 1205, updated: '1 д', author: 'SRE-команда', tags: ['операции', 'sre'] }, { title: 'Дорожная карта продукта Q2 2026', type: 'Документ', freshness: 87, views: 891, updated: '3 д', author: 'Продукт', tags: ['roadmap', 'продукт'] }, { title: 'Лучшие практики аутентификации API', type: 'Документ', freshness: 72, views: 567, updated: '1 нед', author: 'Безопасность', tags: ['безопасность', 'api'] }, { title: 'Онбординг клиента v2', type: 'Сценарий', freshness: 65, views: 234, updated: '2 нед', author: 'Поддержка', tags: ['онбординг'] }, { title: 'Миграция с устаревшего платёжного шлюза', type: 'Решение', freshness: 41, views: 128, updated: '2 мес', author: 'Финансы', tags: ['миграция', 'legacy'] }, ]; export const flows = [ { id: 'research', name: 'Исследование и синтез', runs: 847, success: 96, icon: '🔬', desc: 'Найти, проанализировать и синтезировать информацию' }, { id: 'review', name: 'Критический обзор', runs: 423, success: 98, icon: '🎯', desc: 'Глубокий критический анализ с контраргументами' }, { id: 'f3', name: 'Мультиагентские дебаты', runs: 156, success: 94, icon: '🗣️', desc: 'Структурированные дебаты между несколькими агентами' }, { id: 'f4', name: 'Генерация кода', runs: 1289, success: 92, icon: '💻', desc: 'Создание production-ready кода' }, { id: 'f5', name: 'Извлечение из документов', runs: 567, success: 99, icon: '📄', desc: 'Извлечение структурированных данных из документов' }, { id: 'f6', name: 'Реагирование на инциденты', runs: 89, success: 100, icon: '🚨', desc: 'Автоматический разбор и реагирование на инциденты' }, ]; export const agents = [ { id: 'a1', name: 'Исследователь', icon: '🔍', status: 'active', tasks: 142, cost: '$234.50', description: 'Глубокое исследование и синтез из базы знаний' }, { id: 'a2', name: 'Ревьюер кода', icon: '👨💻', status: 'active', tasks: 89, cost: '$156.20', description: 'Анализ качества кода и рекомендации' }, { id: 'a3', name: 'Аналитик', icon: '📊', status: 'active', tasks: 67, cost: '$98.40', description: 'Анализ данных и получение инсайтов' }, { id: 'a4', name: 'Писатель', icon: '✍️', status: 'idle', tasks: 234, cost: '$312.80', description: 'Создание и редактирование контента' }, { id: 'a5', name: 'Критик', icon: '🎯', status: 'idle', tasks: 45, cost: '$67.10', description: 'Критический обзор и «адвокат дьявола»' }, { id: 'a6', name: 'Планировщик', icon: '📋', status: 'active', tasks: 28, cost: '$42.90', description: 'Декомпозиция задач и планирование проекта' }, ]; export const notifications = [ { id: 'n1', icon: 'alert-triangle', color: 'bg-amber-500/20 text-amber-300', title: 'Превышение бюджета', text: 'Workspace "Инженерия" достиг 85% месячного бюджета', time: '2 ч назад', unread: true }, { id: 'n2', icon: 'sparkles', color: 'bg-violet-500/20 text-violet-300', title: 'Семантический кеш', text: 'Сэкономлено $234 на этой неделе (хит 41%)', time: '5 ч назад', unread: true }, { id: 'n3', icon: 'check', color: 'bg-emerald-500/20 text-emerald-300', title: 'Оценка завершена', text: 'Ночная оценка прошла успешно: relevance 0.95', time: '8 ч назад', unread: true }, { id: 'n4', icon: 'bot', color: 'bg-cyan-500/20 text-cyan-300', title: 'Агент завершил задачу', text: 'Исследователь завершил "Бенчмарк конкурентов"', time: '12 ч назад', unread: false }, { id: 'n5', icon: 'package', color: 'bg-pink-500/20 text-pink-300', title: 'Обновление плагина', text: 'Доступна новая версия Confluence Sync v2.2', time: '1 д назад', unread: false }, ]; export const chartData = { '7d': { labels: ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'], tokens: [245, 312, 289, 401, 378, 156, 198], cost: [12.4, 15.8, 14.2, 19.6, 18.9, 7.8, 9.9], stats: { s1: ['1 284', '12.4%'], s2: ['2.4M', '8.2%'], s3: ['$1 847', '3.1%'], s4: ['94.2%', '2.8%'] }, label: 'Последние 7 дней' }, '30d': { labels: ['Нед 1', 'Нед 2', 'Нед 3', 'Нед 4'], tokens: [1480, 1620, 1540, 1780], cost: [78.4, 85.2, 81.6, 92.3], stats: { s1: ['14 284', '18.2%'], s2: ['24.1M', '14.6%'], s3: ['$7 842', '9.1%'], s4: ['93.8%', '1.2%'] }, label: 'Последние 30 дней' }, '90d': { labels: ['Март', 'Апрель', 'Май'], tokens: [4200, 4850, 5420], cost: [215, 247, 283], stats: { s1: ['41 284', '24.8%'], s2: ['72.4M', '22.1%'], s3: ['$21 847', '18.4%'], s4: ['92.4%', '4.6%'] }, label: 'Последние 90 дней' } }; export const knowledgeDocsFull: KnowledgeDoc[] = [ { id: 'd1', title: 'ADR-042: Переход на Rust для сервиса-шлюза', type: 'Решение', freshness: 98, views: 342, updated: '2 ч', author: 'А. Петров', tags: ['архитектура', 'rust', 'gateway'], summary: 'Обоснование перехода с Python на Rust для HTTP-шлюза с точки зрения производительности и безопасности типов.', content: 'Контекст: Текущий Python-шлюз демонстрирует проблемы с производительностью при >10k RPS. Решение: Перейти на Rust/Axum для предсказуемой latency и compile-time гарантий. Последствия: Необходим переобучение команды, но долгосрочные выгоды перевешивают.', }, { id: 'd2', title: 'Runbook: Процедура переключения БД при отказе', type: 'Runbook', freshness: 94, views: 1205, updated: '1 д', author: 'SRE-команда', tags: ['операции', 'sre', 'database'], summary: 'Пошаговая инструкция по переключению на standby-реплику при отказе primary базы данных.', }, { id: 'd3', title: 'Дорожная карта продукта Q2 2026', type: 'Документ', freshness: 87, views: 891, updated: '3 д', author: 'Продукт', tags: ['roadmap', 'продукт', 'q2-2026'], }, { id: 'd4', title: 'Лучшие практики аутентификации API', type: 'Документ', freshness: 72, views: 567, updated: '1 нед', author: 'Безопасность', tags: ['безопасность', 'api', 'auth'], }, { id: 'd5', title: 'Онбординг клиента v2', type: 'Сценарий', freshness: 65, views: 234, updated: '2 нед', author: 'Поддержка', tags: ['онбординг', 'клиент'], }, { id: 'd6', title: 'Миграция с устаревшего платёжного шлюза', type: 'Решение', freshness: 41, views: 128, updated: '2 мес', author: 'Финансы', tags: ['миграция', 'legacy', 'payments'], }, { id: 'd7', title: 'ADR-038: Версионирование REST API', type: 'Решение', freshness: 88, views: 456, updated: '5 д', author: 'А. Петров', tags: ['архитектура', 'api', 'versioning'], }, { id: 'd8', title: 'ADR-041: Стратегия гибридного поиска', type: 'Решение', freshness: 91, views: 623, updated: '4 д', author: 'ML-команда', tags: ['архитектура', 'search', 'rag'], }, { id: 'd9', title: 'Спецификация событий Event Sourcing', type: 'Спецификация', freshness: 76, views: 389, updated: '10 д', author: 'А. Смирнов', tags: ['event-sourcing', 'спецификация'], }, { id: 'd10', title: 'Runbook: Отказ зоны EU-West', type: 'Runbook', freshness: 35, views: 98, updated: '6 мес', author: 'SRE-команда', tags: ['sre', 'disaster-recovery'], }, ]; export const knowledgeGaps: KnowledgeGap[] = [ { id: 'g1', title: 'Отсутствует runbook для отказа Redis-кластера', severity: 'critical', domain: 'Операции', description: 'Для критического компонента инфраструктуры нет процедуры восстановления.', detectedDaysAgo: 2, relatedDocs: ['d2'], }, { id: 'g2', title: 'Конфликт стратегий версионирования API в ADR-038 vs ADR-041', severity: 'high', domain: 'Архитектура', description: 'Два ADR предлагают несовместимые подходы к версионированию.', detectedDaysAgo: 5, relatedDocs: ['d7', 'd8'], }, { id: 'g3', title: 'Нет документации по новому биллинг-микросервису', severity: 'high', domain: 'Инженерия', description: 'Микросервис запущен в production без ADR и runbook.', detectedDaysAgo: 7, }, { id: 'g4', title: 'Устаревшая документация по комплаенсу (GDPR)', severity: 'medium', domain: 'Юридический', description: 'Последнее обновление 6 месяцев назад, возможны несоответствия новым требованиям.', detectedDaysAgo: 14, }, { id: 'g5', title: 'Отсутствуют тесты для edge-case в парсере PDF', severity: 'low', domain: 'Качество', description: 'Покрыто 78% сценариев, отсутствуют тесты для вложенных таблиц.', detectedDaysAgo: 21, }, ]; export const graphNodes: GraphNode[] = [ { id: 'n1', label: 'ADR-042', type: 'decision', x: 400, y: 250, size: 24, color: '#8b5cf6' }, { id: 'n2', label: 'Rust', type: 'concept', x: 200, y: 150, size: 16, color: '#06b6d4' }, { id: 'n3', label: 'Gateway', type: 'entity', x: 600, y: 150, size: 16, color: '#06b6d4' }, { id: 'n4', label: 'Performance', type: 'concept', x: 150, y: 350, size: 16, color: '#10b981' }, { id: 'n5', label: 'Security', type: 'concept', x: 650, y: 350, size: 16, color: '#10b981' }, { id: 'n6', label: 'ADR-038', type: 'decision', x: 300, y: 420, size: 14, color: '#8b5cf6' }, { id: 'n7', label: 'ADR-041', type: 'decision', x: 500, y: 420, size: 14, color: '#8b5cf6' }, { id: 'n8', label: 'Python', type: 'concept', x: 100, y: 80, size: 10, color: '#ec4899' }, { id: 'n9', label: 'Type Safety', type: 'concept', x: 700, y: 80, size: 10, color: '#ec4899' }, { id: 'n10', label: 'RAG', type: 'entity', x: 50, y: 400, size: 10, color: '#8b5cf6' }, { id: 'n11', label: 'BM25', type: 'entity', x: 750, y: 400, size: 10, color: '#8b5cf6' }, ]; export const graphEdges: GraphEdge[] = [ { source: 'n1', target: 'n2', label: 'использует', weight: 3 }, { source: 'n1', target: 'n3', label: 'реализует', weight: 3 }, { source: 'n1', target: 'n4', label: 'решает', weight: 2 }, { source: 'n1', target: 'n5', label: 'решает', weight: 2 }, { source: 'n1', target: 'n6', label: 'наследует', weight: 1 }, { source: 'n1', target: 'n7', label: 'наследует', weight: 1 }, { source: 'n2', target: 'n8', label: 'заменяет', weight: 2 }, { source: 'n3', target: 'n9', label: 'гарантирует', weight: 2 }, { source: 'n4', target: 'n10', weight: 1 }, { source: 'n7', target: 'n11', weight: 2 }, ];