Skip to content

BISIT22/AIDG

Repository files navigation

AI Dashboard Generator

Веб-приложение на FastAPI, которое принимает CSV/XLS/XLSX, очищает данные, отправляет профиль набора данных в LLM, строит 5 графиков через Plotly и формирует PDF-отчёт.

Дополнительно реализованы три механики для аналитиков:

  • Chat with Data — чат с данными на естественном языке
  • Anomaly Radar — автоматический поиск аномалий и сильных корреляций
  • Forecast Oracle — быстрые прогнозные сигналы по числовым метрикам

Структура проекта

  • upload_station/ — приём файла и защита загрузки
  • cleaning_department/ — очистка, нормализация, типизация
  • ai_brain/ — промпты, LLM-адаптеры, парсинг ответа
  • chart_factory/ — blueprint, построение графиков, инсайты, галерея
  • report_studio/ — HTML-шаблон и генерация PDF
  • web_face/ — SPA-интерфейс на Alpine.js
  • shared_kernel/ — Pydantic-контракты, настройки, хранилище сессий
  • analysis_laboratory/ — аномалии и прогнозные сигналы
  • chat_operator/ — чатовый слой для вопросов к данным

Запуск локально

  1. Создайте .env на основе .env.example.
  2. Установите зависимости:
    pip install -r requirements.txt
  3. Запустите сервер:
    uvicorn app:app --reload
  4. Откройте http://localhost:8000.

Docker

docker build -t ai-dashboard-generator .
docker run --rm -p 8000:8000 --env-file .env ai-dashboard-generator

Переменные окружения

  • OPENAI_API_KEY
  • OPENAI_MODEL
  • YANDEX_API_KEY
  • YANDEX_FOLDER_ID
  • YANDEX_MODEL_URI
  • GENERIC_AI_API_KEY
  • GENERIC_AI_BASE_URL
  • GENERIC_AI_MODEL
  • ADMIN_API_KEY
  • JWT_SECRET_KEY
  • AI_PROVIDER
  • MAX_FILE_SIZE_MB
  • SESSION_TTL_MINUTES
  • RATE_LIMIT_REQUESTS
  • RATE_LIMIT_WINDOW_SECONDS
  • CHART_ROW_LIMIT
  • AI_TIMEOUT_SECONDS

Enterprise-улучшения

  • асинхронный конвейер обработки: POST /api/upload -> job_id, GET /api/job/{job_id} -> статус
  • облегчённый слой постоянного хранения на SQLite как переходный этап к PostgreSQL
  • хранение сессий, job, чатов и каталога отчётов
  • JWT RBAC с ролями analyst, manager, admin
  • типизированные API-ответы и endpoint проверки состояния: GET /api/health
  • rate limiting для upload endpoint
  • TTL-очистка слоя в памяти и безопасные имена директорий сессий
  • структурированное логирование и время ответа в X-Process-Time-Ms
  • fallback-план графиков при ошибке AI
  • устойчивое чтение CSV с несколькими кодировками
  • ограничение числа строк для charting, чтобы интерфейс не деградировал на больших файлах
  • универсальный provider-слой для LLM через AI_PROVIDER
  • поддержка OpenAI, Yandex и generic OpenAI-compatible API
  • admin endpoints с заголовком X-Admin-API-Key
  • provider SDK-контракты для chart planning, chat answering, insight generation

Подключение любой нейросети после продажи

Если у заказчика есть провайдер с OpenAI-compatible API, достаточно задать:

AI_PROVIDER=generic
GENERIC_AI_API_KEY=...
GENERIC_AI_BASE_URL=https://vendor.example.com/v1
GENERIC_AI_MODEL=vendor-model-name

После этого пайплайн будет работать без переписывания бизнес-логики.

Если у нового провайдера не OpenAI-compatible контракт, добавляется один новый адаптер в папку ai_brain/ и одна ветка в provider_registry.py.

Новые API второго этапа

  • POST /api/auth/demo-login — получить демонстрационный JWT
  • POST /api/upload — поставить файл в очередь
  • GET /api/job/{job_id} — проверить статус обработки
  • POST /api/chat/{session_id} — чат с данными
  • GET /api/catalog/session/{session_id} — каталог отчётов по сессии
  • GET /api/admin/session/{session_id} — инспекция полной сессии
  • GET /api/admin/job/{job_id} — инспекция job

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors