Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
Live Demo: https://kaluginvit.github.io/Portfolio/finance-data-screener/ — preloaded public sample data (MOEX, CBR), no backend required. Приложение для сбора и анализа финансовых данных с помощью LLM. Пользователь вводит запрос на русском языке — система автоматически определяет источник, строит URL запроса и возвращает структурированные данные с графиком.Read the full README ↗
Live Demo: https://kaluginvit.github.io/Portfolio/finance-data-screener/ — preloaded public sample data (MOEX, CBR), no backend required.
Приложение для сбора и анализа финансовых данных с помощью LLM. Пользователь вводит запрос на русском языке — система автоматически определяет источник, строит URL запроса и возвращает структурированные данные с графиком.
audit_runs с duration и телом ответаBrowser (React SPA)
│
nginx :80
│
FastAPI :8000 ──── PostgreSQL :5432
│
├── POST /ai/plan_and_collect ──► ProxyAPI (gpt-4o-mini + instructor)
│
├── POST /datasets/{id}/collect ──► MoexCollector | CbrCollector | RbcCollector
│
└── AuditMiddleware → audit_runs
| Слой | Технологии |
|---|---|
| Backend | FastAPI 0.115, Python 3.12, SQLAlchemy 2.0 async, Alembic, PostgreSQL 16 |
| Frontend | React 18, TypeScript, Vite, Tailwind CSS, Recharts, TanStack Table |
| LLM | gpt-4o-mini через ProxyAPI + instructor для строгого JSON |
| Инфра | Docker Compose — 3 сервиса |
# 1. Клонировать репозиторий
git clone <repo-url>
cd <repo-folder>
# 2. Создать файл .env
cp .env.example .env
# Открыть .env и вписать свой PROXYAPI_KEY
# 3. Поднять все сервисы
docker compose up --build
Примечание:
.env.exampleсодержитCOMPOSE_PROJECT_NAME=screener— это задаёт имя проекта Docker Compose и гарантирует корректную работу независимо от имени директории.
После запуска откройте http://localhost
Первый билд занимает ~5–8 минут (скачивание образов + npm install + pip install). Повторный запуск — ~30 секунд.
Скопируйте .env.example в .env и заполните:
POSTGRES_USER=screener
POSTGRES_PASSWORD=screener_pass
POSTGRES_DB=screener_db
PROXYAPI_KEY=your_key_here # обязательно
PROXYAPI_BASE_URL=https://api.proxyapi.ru/openai/v1
Перейдите в раздел «Наборы данных» → кнопка «Создать» → введите название.
Раздел «Сбор» → выберите набор → введите запрос на русском:
Все акции MOEX с объёмом торгов > 1 млрд рублей за сегодня
Курсы валют ЦБ РФ на сегодня
Последние финансовые новости
LLM покажет план (источник, URL, поля, фильтры). При needs_review=false — нажмите «Собрать».
Раздел «Витрина» → выберите набор → таблица + график + экспорт в JSON/CSV.
Раздел «Журнал» — timeline всех API-запросов с бейджами метода/статуса и длительностью.
Swagger UI: http://localhost:8000/docs
| Метод | Эндпоинт | Описание |
|---|---|---|
| GET | /health | Проверка работоспособности |
| POST | /datasets | Создать набор данных |
| GET | /datasets | Список всех наборов |
| GET | /datasets/{id} | Один набор |
| POST | /datasets/{id}/collect | Запустить сбор данных |
| GET | /datasets/{id}/records | Записи набора |
| POST | /ai/plan_and_collect | Построить план через LLM |
| GET | /audit | Журнал всех запросов |
# Запустить тесты внутри контейнера
docker compose -p screener exec backend pytest tests/ -v
Покрытие: 18 тестов — /health, CRUD датасетов, аудит.
├── backend/
│ ├── app/
│ │ ├── api/ # FastAPI роутеры (datasets, ai, audit)
│ │ ├── collectors/ # MoexCollector, CbrCollector, RbcCollector
│ │ ├── middleware/ # AuditMiddleware
│ │ ├── models/ # SQLAlchemy модели
│ │ ├── schemas/ # Pydantic схемы
│ │ ├── services/ # LLM-сервис (instructor + ProxyAPI)
│ │ └── main.py
│ ├── alembic/ # Миграции БД
│ ├── tests/ # pytest тесты
│ ├── entrypoint.sh # alembic upgrade head → uvicorn
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── api/ # axios клиент
│ │ ├── components/ # Badge, Layout, DatasetCard, PlanPreview, ReviewBanner
│ │ └── pages/ # Datasets, Collect, Showcase, Audit
│ └── nginx.conf # проксирует /api/ → backend:8000
├── docker-compose.yml
├── .env.example
└── README.md
PostgreSQL 16 работает в контейнере postgres (порт 5432, данные в Docker volume pgdata).
docker compose -p screener exec postgres psql -U screener -d screener_db
-- Наборы данных
SELECT id, name, source, created_at FROM datasets ORDER BY created_at DESC;
-- Записи датасета
SELECT id, source, collected_at, data FROM records
WHERE dataset_id = '<uuid>' ORDER BY collected_at DESC LIMIT 10;
-- Аудит последних 20 запросов
SELECT endpoint, method, status_code, duration_ms, created_at
FROM audit_runs ORDER BY created_at DESC LIMIT 20;
-- Запросы с ручной проверкой
SELECT query, needs_review, confidence, created_at
FROM agent_runs WHERE needs_review = true ORDER BY created_at DESC;
-- Ошибки (status >= 400)
SELECT endpoint, method, status_code, error, created_at
FROM audit_runs WHERE status_code >= 400 ORDER BY created_at DESC;
# Журнал аудита (последние 100 запросов)
curl http://localhost/api/audit
# Записи датасета
curl http://localhost/api/datasets/<id>/records
This is the beginning of the README. Read the rest at the original. Read the full README ↗