Внутренняя аналитическая платформа для инвестиционной компании. Управление клиентами, портфелями, риск-аналитика и ИИ-ассистент на базе LLM.
Карточка инструмента — часть 1

Карточка инструмента — часть 2

- Портфели и позиции — создание, редактирование, добавление и удаление позиций; расчёт текущей стоимости по рыночным ценам
- Риск-аналитика — коэффициент Шарпа, Сортино, VaR, CVaR, граница эффективности Марковица (500 портфелей Монте-Карло)
- ИИ-агент — LangGraph-агент на базе OpenAI / Anthropic с инструментами: поиск по инструментам, фундаменталы, аналитика портфеля, веб-поиск
- Раскрытие информации — краулер e-disclosure.ru, скачивание и парсинг PDF-отчётов эмитентов
- Отчёты — генерация PDF и Excel по портфелю клиента
- Разделение ролей —
admin(полный доступ) иanalyst(просмотр + добавление/удаление позиций) - Брокерский API — интеграция с T-Invest (T-Bank) для получения рыночных данных
nginx (:80)
├── / → frontend (React 19 + Vite)
└── /api → backend (FastAPI)
FastAPI
├── /api/v1/auth — авторизация (JWT)
├── /api/v1/admin/* — управление пользователями, настройки (только admin)
└── /api/v1/* — клиенты, портфели, инструменты, ИИ, отчёты, раскрытие
Хранилища:
├── Microsoft SQL Server 2022 — основная БД
└── Redis 7 — кэш рыночных данных (TTL 5–30 мин)
Требования: Docker Desktop
git clone https://github.com/snowfallite/RiskNova.git
cd RiskNova
docker-compose up --buildПри первом запуске автоматически:
- создаются все таблицы
- загружаются тестовые данные (5 клиентов, 10 инструментов, 5 портфелей)
| Сервис | URL |
|---|---|
| Frontend | http://localhost:3000 |
| API | http://localhost:8000 |
| API Docs | http://localhost:8000/docs |
| MSSQL | localhost:1433 |
| Логин | Пароль | Роль |
|---|---|---|
admin |
admin123 |
Администратор |
analyst |
analyst123 |
Аналитик |
Создайте файл .env в корне проекта (или переопределите через docker-compose):
# База данных
DB_HOST=localhost
DB_PORT=1433
DB_NAME=risknova
DB_USER=sa
DB_PASSWORD=RiskNova_Pass123!
DB_DRIVER=ODBC Driver 18 for SQL Server
# Redis
REDIS_URL=redis://localhost:6379
# JWT
SECRET_KEY=your-secret-key-change-in-production
ACCESS_TOKEN_EXPIRE_MINUTES=480
# T-Invest (опционально)
TINVEST_TOKEN=your_tbank_token
# AI (настраивается в интерфейсе через Настройки → ИИ)
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
TAVILY_API_KEY=| Слой | Технология |
|---|---|
| Backend | Python 3.12, FastAPI, SQLAlchemy 2 (async), LangGraph |
| Frontend | React 19, TypeScript, Vite, Zustand, React Query, Tailwind CSS |
| База данных | Microsoft SQL Server 2022 |
| Кэш | Redis 7 |
| Деплой | Docker Compose (api + frontend + mssql + redis + nginx) |
| ИИ | LangChain / LangGraph, OpenAI, Anthropic Claude |
| Брокер | T-Invest API (T-Bank) |
Host: localhost
Port: 1433
Database: risknova
Login: sa
Password: RiskNova_Pass123!
SQL-скрипты для ручного развёртывания находятся в docs/sql/.
RiskNova/
├── src/
│ ├── api/v1/
│ │ ├── admin/ # Эндпоинты только для администратора
│ │ └── analyst/ # Эндпоинты для всех авторизованных
│ ├── models/ # SQLAlchemy ORM-модели
│ ├── services/ # Бизнес-логика (аналитика, ИИ, краулер, отчёты)
│ └── core/ # БД, безопасность, конфигурация
├── front/
│ ├── pages/ # React-страницы
│ ├── api/ # API-клиенты (React Query)
│ └── store/ # Zustand-хранилища
├── scripts/
│ └── seed.py # Наполнение БД при старте
├── docs/
│ ├── sql/ # DDL и seed SQL-скрипты
│ ├── listings.md # Листинги кода для документации
│ └── sources.md # Список источников (ГОСТ)
└── docker-compose.yml







