Проект генерирует синтетические JSONL-логи пайплайна, загружает их в DuckDB идемпотентно и строит аналитический отчёт по этапам, ошибкам и LLM-вызовам.
generate_logs.py— генератор синтетических логов.analytics/ingest.py— загрузка JSONL-логов в DuckDB, пропуск битых строк, идемпотентность.analytics/report.py— аналитический отчёт по данным из DuckDB.configs/— настройки пайплайна, SQL-схемы, SQL отчётов и тестовые данные.models/— Pydantic-модели лог-событий, отчётов и тест-кейсов.tests/— pytest-проверки парсинга, event id и аналитических метрик.Dockerfile,docker-compose.yml— контейнерный запуск полного пайплайна.run.sh— единая точка запуска локального или Docker-пайплайна.
Требования:
- Python
3.13 uv
Полный локальный запуск:
./run.sh localТо же через make:
make runКоманда генерирует sample_logs/app.log, пересоздаёт локальную analytics.duckdb,
дважды запускает ingest для проверки идемпотентности и печатает отчёт.
Требования:
- Docker
- Docker Compose v2
Полный запуск в контейнере:
./run.sh dockerИли через make:
make docker-runОтдельные Docker-команды:
make docker-compose-config
make docker-buildВ Docker Compose база DuckDB хранится в volume, путь задаётся через DUCKDB_PATH.
Полный локальный CI:
make ciОтдельные проверки:
make lint
make test
make test-ingest
make test-metricsmake ci выполняет:
uv syncruff- pytest по каждому файлу тестов
- полный локальный pipeline через
run.sh local
GitHub Actions дополнительно проверяет Docker Compose, сборку Docker-образа и полный Docker pipeline.
Генерируемые файлы не коммитятся:
sample_logs/*.logpipeline.loganalytics.duckdb*.duckdb.wal- cache-папки Python/ruff/pytest
make help
make generate
make ingest
make report
make clean