Chatbot Dashboard — веб-дашборд на Streamlit для анализа качества ответов чат-бота и метрик взаимодействия пользователей.
Проект включает витрину (UI) и парсер/пайплайн, который регулярно подтягивает логи, обрабатывает их и сохраняет агрегированные данные в data/.
- Мультистраничный дашборд (Streamlit navigation)
- Общий обзор (сводные метрики)
- Ошибки (ошибочные/подозрительные ответы)
- Анализ по группам (группировка похожих вопросов)
- Анализ по ключевым словам
- Вся статистика (страница для разработчиков)
- Термины / Сценарии использования (встроенная документация)
- Регулярный фоновой парсинг логов (отдельный сервис
parserили поток внутри Streamlit) - Кэширование и защита от параллельного запуска (file lock + state-файлы)
- Экспорт данных (например, Excel / JSON из интерфейса)
- Семантическая группировка вопросов (SentenceTransformers + эмбеддинги)
- UI (Streamlit)
Точка входа:main.py
Страницы:app_pages/*.py - Парсинг/обработка
Пайплайн:parsing/pipeline.py
Запускается:- либо внутри Streamlit (фоновой поток),
- либо отдельным воркером
parser_worker.py(рекомендуется для Docker).
data/— входные логи и результаты парсинга (в т.ч.result.json,result_YYYY-MM.json,.state/*, кэш группировщика)logs/— логи приложения/пайплайнаdashboard/— UI-утилиты, графики, экспорт, конфигиparsing/— обработка логов, группировка, метрики, кэширование
- Python >= 3.12
- Streamlit
- Pandas, NumPy
- Plotly, Matplotlib, Seaborn
- Statsmodels, SciPy, scikit-learn
- sentence-transformers, transformers
- torch (CPU wheel через uv index)
- datasets, evaluate, nltk, bert-score, rouge-score, sacrebleu
- wordcloud
- uv (локальная установка зависимостей и запуск)
- Docker / Docker Compose
- GNU Make
- (prod) Caddy (reverse proxy)
git clone <REPO_URL>
cd <REPO_DIR>pip install uvuv syncuv run streamlit run main.pyПриложение будет доступно:
http://localhost:8501
По умолчанию Streamlit может запускать фоновый пайплайн внутри себя.
Это управляется переменнойDISABLE_INTERNAL_PARSER(см. ниже).
Перед запуском убедитесь, что установлены:
- Docker
- Docker Compose
- GNU Make
Проверка:
docker --version
docker compose version
make --versionmake dev
Запуск в режиме разработки (docker-compose.dev.yml) — основной режим работы.
make devmake run
Запуск в продакшн-режиме (docker-compose.yml).
make runПосле запуска (dev/prod) UI доступен по адресу:
http://localhost:8501
make run— запуск prod (docker-compose.yml)make dev— запуск dev (docker-compose.dev.yml)make build— сборка образовmake rebuild— down + build + up (prod)make rebuild_dev— down + build + devmake down— остановка composemake clean— удалить контейнер/образmake view_logs— смотреть логи контейнераmake go_in_docker— зайти внутрь контейнераmake get_logs— скачать логи с удалённого сервера (если настроено)make get_data— скачать актуальные данныеdata/с удалённого сервера (если настроено)
Используются пайплайном и сервисами docker-compose:
-
DISABLE_INTERNAL_PARSER=1
Отключает фоновый парсер внутри Streamlit.
В Docker обычно включают (1) и запускают отдельный сервисparser. -
START_FROM=YYYY-MM(пример:2025-08)
Месяц/год, с которого начинать обработку логов. -
FORCE_REPARSE=true
Принудительно пересчитать результаты, даже если хэши логов не изменились.
Включать только при необходимости (может быть долго). -
TZ=...
Таймзона контейнеров.
.
├── main.py # Streamlit entrypoint + навигация по страницам
├── app_pages/ # Страницы Streamlit (General/Errors/Analysis/...)
├── dashboard/ # UI-утилиты, графики, экспорт, конфиги
├── parsing/ # пайплайн, парсинг логов, группировка, метрики, кэш
├── parser_worker.py # отдельный воркер для пайплайна (удобно для Docker)
├── data/ # логи/результаты/кэш
├── logs/ # логи приложения
├── Images/ # скриншоты
├── Dockerfile
├── docker-compose.yml # prod: app + parser + caddy
├── docker-compose.dev.yml # dev: app + parser
├── Caddyfile # reverse proxy (prod)
├── pyproject.toml # зависимости для uv
├── uv.lock # lock-файл uv
├── requirements.txt # зависимости (для Docker)
└── Makefile
Ниже — полный список зависимостей, которые реально зафиксированы в pyproject.toml.
Полный список зависимостей (148)
absl-py==2.3.1
aiohappyeyeballs==2.6.1
aiohttp==3.11.18
aiosignal==1.3.2
altair==5.5.0
altex==0.2.0
asn1crypto==1.5.1
attrs==25.1.0
beautifulsoup4==4.13.4
bert-score==0.3.13
blinker==1.9.0
boto3==1.39.2
botocore==1.39.2
cachetools==5.5.2
certifi==2025.1.31
cffi==1.17.1
charset-normalizer==3.4.1
choreographer==1.0.9
click==8.1.8
cloudpickle==3.0.0
colorama==0.4.6
contourpy==1.3.1
cryptography==45.0.5
cycler==0.12.1
datasets==3.6.0
dill==0.3.8
entrypoints==0.4
et-xmlfile==2.0.0
evaluate==0.4.3
faker==37.4.0
favicon==0.7.0
filelock==3.13.1
fonttools==4.56.0
frozenlist==1.6.0
fsspec==2024.6.1
gitdb==4.0.12
gitpython==3.1.44
hf-xet==1.1.5
htbuilder==0.9.0
huggingface-hub==0.34.3
idna==3.10
jinja2==3.1.4
jmespath==1.0.1
joblib==1.5.1
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
kaleido==0.2.1
kiwisolver==1.4.8
logistro==1.1.0
loguru==0.7.3
lxml==6.0.0
markdown==3.8.2
markdown-it-py==3.0.0
markdownlit==0.0.7
markupsafe==2.1.5
matplotlib==3.10.1
mdurl==0.1.2
memory-profiler==0.61.0
mpmath==1.3.0
multidict==6.4.3
multiprocess==0.70.16
narwhals==1.29.0
networkx==3.3
nltk==3.9.1
numpy==2.2.3
openpyxl==3.1.5
orjson==3.11.1
packaging==24.2
pandas==2.2.3
patsy==1.0.1
pillow==11.1.0
platformdirs==4.3.8
plotly==6.0.0
portalocker==3.2.0
prometheus-client==0.22.1
propcache==0.3.1
protobuf==5.29.3
psutil==7.0.0
pyarrow==18.1.0
pycparser==2.22
pydeck==0.9.1
pygments==2.19.1
pyjwt==2.10.1
pymdown-extensions==10.16
pyopenssl==25.1.0
pyparsing==3.2.1
python-dateutil==2.9.0.post0
pytz==2025.1
pyyaml==6.0.2
referencing==0.36.2
regex==2024.11.6
requests==2.32.3
rich==13.9.4
rouge-score==0.1.2
rpds-py==0.23.1
s3transfer==0.13.0
sacrebleu==2.5.1
safetensors==0.5.3
scikit-learn==1.6.1
scipy==1.15.3
seaborn==0.13.2
sentence-transformers==5.0.0
sentencepiece==0.2.0
setuptools==70.2.0
simplejson==3.20.1
six==1.17.0
smmap==5.0.2
snowflake-connector-python==3.16.0
snowflake-snowpark-python==1.33.0
sortedcontainers==2.4.0
soupsieve==2.7
st-annotated-text==4.0.2
st-theme==1.2.3
statsmodels==0.14.4
streamlit==1.47.1
streamlit-autorefresh==1.0.1
streamlit-avatar==0.1.3
streamlit-calendar-input==0.0.3
streamlit-camera-input-live==0.2.0
streamlit-card==1.0.2
streamlit-embedcode==0.1.2
streamlit-extras==0.7.5
streamlit-faker==0.0.4
streamlit-image-coordinates==0.3.1
streamlit-keyup==0.3.0
streamlit-toggle-switch==1.0.2
streamlit-vertical-slider==2.5.5
sympy==1.13.3
tabulate==0.9.0
tenacity==9.0.0
threadpoolctl==3.6.0
tokenizers==0.21.4
toml==0.10.2
tomlkit==0.13.3
torch>=2.0, <3.0
tornado==6.4.2
tqdm==4.67.1
transformers==4.54.1
typing-extensions==4.12.2
tzdata==2025.1
tzlocal==5.3.1
urllib3==2.3.0
validators==0.35.0
watchdog==6.0.0
wheel==0.45.1
wordcloud>=1.9.4
xxhash==3.5.0
yarl==1.20.0