Фиксики
team08
RED
Service down
Connection failed
Timeout or DNS error
Today (9:00 MSK — 9:00 MSK)
0
Commits
0
PRs Merged
0
PRs Opened
0
Issues Opened
0
Issues Closed
All Time
97
Commits
14
PRs Merged
14
PRs Opened
0
Issues Opened
0
Issues Closed
$24.05
API Usage
6.4
Overall
6
ux
7
functionality
6
performance
ux (6/10)
Интерфейс достаточно понятный и минималистичный. Назначение продукта ясно с первого взгляда благодаря заголовку и подзаголовку. Однако есть существенные UX-проблемы: 1) Кнопка 'Войти' не работает через обычный клик - требуется специальный dispatchEvent, что может вызвать проблемы у пользователей; 2) Отсутствуют сообщения об ошибках при неправильных данных входа; 3) Кнопка 'Выйти' не работает; 4) В мобильной версии кнопка гамбургер-меню не открывает боковую панель; 5) При клике на диалог в истории не загружается содержимое беседы.
functionality (7/10)
Основная функциональность работает: регистрация пользователей успешна, ИИ-чат отвечает на вопросы по пожарной безопасности, ответы содержат ссылки на нормативные документы с процентом релевантности, история диалогов сохраняется. Гибридный поиск (вектор + граф) - интересная техническая деталь. Однако есть проблемы: форма входа не работает корректно, кнопка выхода не функционирует, кнопки 'Новый диалог' и 'Удалить диалог' не работают, клик по истории диалогов не загружает содержимое.
performance (6/10)
Начальная загрузка сайта завершилась ошибкой 502 Bad Gateway (потребовалось несколько попыток). После успешной загрузки страницы работают быстро. Ответы от ИИ приходят за 5-10 секунд, что приемлемо для такого типа сервиса. Нет видимых ошибок в консоли браузера после загрузки.
Findings (20)
high
bug
502 Bad Gateway при первой загрузке сайта
high
bug
Кнопка 'Войти' не отправляет форму при обычном клике
high
bug
Кнопка 'Выйти' не выполняет выход из системы
high
bug
Кнопка 'Удалить диалог' не удаляет диалог
high
bug
Кнопка 'Новый диалог' не создаёт новый чат
Commits & Code Churn
31 Jan — 6 Feb 2026PR Activity
31 Jan — 6 Feb 2026Languages
README
Expert Standards Assistant
ИИ-ассистент для ответов на сложные вопросы по стандартам с использованием Graph RAG
Описание проекта
Цели
Создать ИИ-ассистента, который даёт точные и обоснованные ответы на многоуровневые запросы по нормативным документам: связи между стандартами, влияние изменений параметров, учёт версионности и логические цепочки рассуждений.
Контекст
| Проблема | При работе со стандартами и нормативами инженеры сталкиваются со сложными запросами, требующими анализа связей между документами, учёта версий и понимания контекста. Обычный поиск и векторный RAG не могут дать точные ответы на такие вопросы, что приводит к потере времени и ошибкам в интерпретации. |
|---|---|
| У кого проявляется | Инженеры, технические руководители, специалисты по compliance в регулируемых отраслях (строительство, фармацевтика, энергетика, IT), где критично точное соблюдение стандартов. |
| Решение | ИИ-ассистент на основе Graph RAG, который понимает связи между документами, учитывает их версии и историю изменений, а также может отвечать на сложные вопросы с пояснением логической цепочки. |
Пример целевого пользователя (по профилю заказчика): инженер-проектировщик по пожарной безопасности в крупном застройщике — проверяет соответствие разделов ПД нормам (ФЗ-123, СП 4.13130, СП 1.13130 и др.), увязывает требования между документами, готовит материалы к экспертизе.
Технологии
| Категория | Технология |
|---|---|
| Язык (backend) | Python 3.12+ |
| Язык (frontend) | TypeScript 5.x |
| API Framework | FastAPI |
| UI Framework (legacy) | Gradio 4.x |
| UI Framework (new) | Vite 6.x + React 19 + Tailwind CSS 4 + shadcn/ui |
| База данных | PostgreSQL 14+ (pgvector) |
| Графовая БД | Neo4j 5.x |
| Векторный поиск | LangChain, OpenRouter embeddings API (text-embedding-3-small) |
| LLM | OpenRouter (настраиваемая модель) |
| Парсинг документов | pypdf, python-docx |
| Аутентификация | Passlib (bcrypt) |
| Тестирование | pytest, pytest-asyncio |
| Трассировка | LangSmith (langsmith SDK) |
| Линтинг | Ruff |
Структура проекта
src/
├── app.py # Точка входа (FastAPI + Gradio + SPA)
├── config.py # Конфигурация
├── logging_config.py # Loguru настройка, request context
├── prompts.py # Централизованные LLM-промпты
├── api/ # REST API v2 (018-vite-frontend)
│ ├── router.py # Главный роутер /api/v2
│ ├── deps.py # Зависимости (auth, db, admin)
│ ├── auth.py # Аутентификация (login, register, me, logout)
│ ├── chat.py # Чат-эндпоинт (RAG pipeline)
│ ├── sessions.py # Управление диалогами
│ └── admin.py # Админ-эндпоинты (users, docs, settings, neo4j)
├── models/ # Dataclass модели
│ ├── user.py
│ ├── session.py
│ ├── neo4j.py # Neo4jConnectionStatus, GraphStatistics
│ ├── document.py # Document, Chunk, ProcessingStatus
│ ├── rag.py # RAGResponse, SearchResult, RouteDecision
│ ├── graph.py # GraphNode, GraphPath, GraphSearchResult
│ ├── embedding.py # Embedding модели
│ └── evaluation.py # Модели для QA Evaluation
├── cli/ # CLI модули
│ ├── config.py # CLIConfig, ConfigurationError
│ └── qa_evaluator.py # QA Evaluation логика
├── services/ # Бизнес-логика
│ ├── auth_service.py
│ ├── user_service.py
│ ├── session_service.py
│ ├── settings_service.py
│ ├── neo4j_service.py # Singleton для Neo4j (graceful degradation)
│ ├── document_service.py # CRUD для документов
│ ├── parser_service.py # Парсинг PDF, DOCX, MD
│ ├── embedding_service.py # Генерация embeddings (OpenRouter API)
│ ├── embedding_providers/ # Embedding провайдер (OpenRouter)
│ ├── indexing_service.py # Pipeline обработки документов
│ ├── router_service.py # Маршрутизация запросов (vector/graph/hybrid)
│ ├── search_service.py # Векторный поиск в pgvector
│ ├── graph_search_service.py # Графовый поиск в Neo4j
│ ├── rrf_service.py # Reciprocal Rank Fusion
│ ├── related_concepts_extractor.py # Извлечение связанных понятий
│ ├── llm_service.py # Обёртка для LLM (OpenRouter)
│ ├── rag_service.py # RAG pipeline оркестратор
│ ├── tracing_service.py # LangSmith трассировка
│ └── evaluation_service.py # DeepEval метрики
├── data/ # Работа с БД
│ ├── database.py
│ └── migrations/ # SQL миграции
└── ui/ # Gradio компоненты (legacy)
├── handlers.py # Обработчики событий (RAG интеграция)
├── helpers.py # Вспомогательные функции (sync wrappers)
└── components/ # UI компоненты
├── auth.py
├── chat.py # Чат с отображением источников
└── admin.py # Админ-панель (пользователи, настройки, Neo4j)
frontend/ # Vite + React SPA (018-vite-frontend)
├── src/
│ ├── api/ # API-клиенты (auth, chat, sessions, admin)
│ ├── components/ # React-компоненты + shadcn/ui
│ ├── contexts/ # AuthContext (глобальное состояние)
│ ├── hooks/ # useAuth, useSessions
│ └── pages/ # LoginPage, ChatPage, admin/*
├── vite.config.ts # Vite конфигурация (base: /)
└── package.json # Зависимости (React 19, Tailwind 4, shadcn/ui)
uploads/ # Загруженные документы
specs/ # Спецификации фич
tests/ # Тесты
Установка и запуск
Требования
- Python 3.12+
- Docker & Docker Compose
- uv (рекомендуется) или pip
Быстрый старт (Docker)
# Клонирование репозитория
git clone <repo-url>
cd fixiki
# Копирование конфигурации
cp .env.example .env
# Заполните переменные в .env
# Запуск всех сервисов
make run
# Проверка статуса
make health-all
Приложение будет доступно по адресу: http://localhost:3000
Локальная разработка
# Установка зависимостей
uv sync
# Запуск инфраструктуры (PostgreSQL + Neo4j)
make infra
# Запуск приложения
make dev
Команды
| Команда | Описание |
|---|---|
make run |
Запуск всех контейнеров |
make stop |
Остановка контейнеров |
make dev |
Локальный запуск (требуется PostgreSQL) |
make test |
Запуск тестов |
make lint |
Линтинг и форматирование |
make health |
Проверка здоровья приложения |
make health-neo4j |
Проверка статуса Neo4j |
make logs |
Просмотр логов |
Статус разработки
| Фича | Название | Статус |
|---|---|---|
| 001 | UI и авторизация | ✅ Готово |
| 003 | Управление пользователями | ✅ Готово |
| 004 | Интеграция с Neo4j | ✅ Готово |
| 005 | Загрузка документов в векторную БД | ✅ Готово |
| 006 | RAG Router (чат с ИИ) | ✅ Готово |
| 007 | Graph RAG | ✅ Готово |
| 008 | Admin Search Mode | ✅ Готово |
| 009 | App Logging | ✅ Готово |
| 010 | Graph Search Keywords | ✅ Готово |
| 011 | Session Management UI | ✅ Готово |
| 012 | OpenRouter Embeddings API | ✅ Готово |
| 014 | LangSmith Tracing | ✅ Готово |
| 015 | CLI QA Evaluation | ✅ Готово |
| 016 | Prompt Management | ✅ Готово |
| 017 | Remove Local Embeddings | ✅ Готово |
| 018 | Vite Frontend (замена Gradio) | ✅ Готово |
Реализовано
- [x] Базовая структура проекта
- [x] UI на Gradio с авторизацией
- [x] Система аутентификации (регистрация, вход, сессии)
- [x] Админ-панель (управление пользователями, настройки)
- [x] Интеграция с Neo4j (health-check, статистика графа)
- [x] Graceful degradation при недоступности Neo4j
- [x] Загрузка документов (PDF, DOCX, MD) через админ-панель
- [x] Асинхронная обработка документов с FIFO очередью
- [x] Векторное индексирование (pgvector + OpenRouter embeddings API)
- [x] RAG pipeline с векторным поиском и генерацией ответов через LLM
- [x] Отображение источников (документ, раздел) в ответах
- [x] Роутер запросов (vector/graph) с graceful degradation
- [x] Graph RAG с графовым поиском в Neo4j
- [x] Интеллектуальная маршрутизация запросов (ключевые слова + LLM)
- [x] Reciprocal Rank Fusion (RRF) для объединения результатов
- [x] Извлечение и отображение связанных понятий
- [x] Переключение режима поиска для админов (vector/graph/hybrid/auto)
- [x] Структурированное логирование с loguru и request tracing
- [x] Оптимизация графового поиска по ключевым словам
- [x] Извлечение ключевых слов из запросов для улучшения поиска в Neo4j
- [x] Улучшенный UI управления сессиями (фиксированная высота, удаление диалогов)
- [x] Поддержка OpenRouter API для генерации эмбеддингов
- [x] Трассировка RAG-запросов через LangSmith (иерархические spans, метаданные)
- [x] CLI для автоматизированной проверки качества RAG (DeepEval метрики, Gradio API, JSON отчёты)
- [x] Централизация всех LLM-промптов в единый модуль
src/prompts.py - [x] Удаление локального провайдера эмбеддингов, упрощение архитектуры (только OpenRouter API)
- [x] Новый фронтенд на Vite + React 19 + Tailwind CSS + shadcn/ui (замена Gradio)
- [x] REST API v2 для фронтенда (auth, chat, sessions, admin)
- [x] SPA доступно на
/, Gradio legacy на/gradio
В работе
- [ ] Интеграция с нормативной базой по пожарной безопасности
- [ ] Community Detection (Louvain clustering)
Команда
| Роль | Участник | Зона ответственности |
|---|---|---|
| Hustler | Даниил Хромов | Продукт, гипотезы, валидация с пользователями |
| Hacker | Никита Овчинников | Архитектура, Graph RAG, бэкенд |
| Hipster | Владимир Писарев | Дизайн интерфейса, UX |
Документация
Разработка
- CLAUDE.md — руководство по разработке, команды, стиль кода
Фичи
| Фича | Спецификация | План | Задачи |
|---|---|---|---|
| 001 - UI и авторизация | spec.md | plan.md | tasks.md |
| 003 - Админ-панель | spec.md | plan.md | tasks.md |
| 004 - Neo4j интеграция | spec.md | plan.md | tasks.md |
| 005 - Загрузка документов | spec.md | plan.md | tasks.md |
| 006 - RAG Router | spec.md | plan.md | tasks.md |
| 007 - Graph RAG | spec.md | plan.md | tasks.md |
| 008 - Admin Search Mode | spec.md | plan.md | tasks.md |
| 009 - App Logging | spec.md | plan.md | tasks.md |
| 010 - Graph Search Keywords | spec.md | plan.md | tasks.md |
| 011 - Session Management UI | spec.md | plan.md | tasks.md |
| 012 - OpenRouter Embeddings | spec.md | plan.md | tasks.md |
| 014 - LangSmith Tracing | spec.md | plan.md | tasks.md |
| 015 - CLI QA Evaluation | spec.md | plan.md | tasks.md |
| 016 - Prompt Management | spec.md | plan.md | tasks.md |
| 017 - Remove Local Embeddings | spec.md | plan.md | tasks.md |
| 018 - Vite Frontend | spec.md | — | — |
Events History
Total: 125 events
C
feat(ChatMessage, CitationBadge, SourcesList): enhance citation interaction and UI
team08
02-06 02:41
C
refactor(router_service): change default routing strategy from vector to hybrid search
team08
02-06 01:31
C
refactor(evaluation): switch from multiprocessing to threading for batch evaluations
team08
02-05 20:36
C
feat(evaluation): enhance OpenRouterLLM for thread safety and synchronous operation
team08
02-05 19:55
C
feat(embedding): refactor OpenRouterEmbeddingProvider for thread safety and synchronous API calls
team08
02-05 19:44
Page 1 of 3