Разработчик
Азамат Давлетбаев
тел.: +79273059459
tg: @Azamat_dav
Исходный код: github.com/azamat-davletbaev/GeoPulse
Что это
GeoPulse — демонстрационная веб-система мониторинга добычи нефти. На карте показаны семь скважин месторождения Volve (норвежский шельф, Северное море): устья, траектории стволов и забои. По каждой скважине строится помесячный график добычи нефти и воды; доступны сводные отчёты в Excel и CSV.
Система построена как событийный пайплайн: данные импортируются через Apache Kafka, хранятся в PostgreSQL и ClickHouse, а фронтенд получает готовые агрегаты через REST API.
Откуда данные
Используется открытый набор данных Volve, опубликованный компанией Equinor (совместно с партнёрами по лицензии) под открытой лицензией Equinor Open Data Licence (CC BY-NC-SA 4.0). Источник: equinor.com/energy/volve-data-sharing.
Из набора берутся две части: архив Production data (суточная добыча по скважинам) и текстовые выгрузки траекторий из WellWellbore (координаты и инклинометрия стволов). Данные используются без изменения; конвертация координат из ED50/UTM31N в WGS84 выполняется в приложении.
Архитектура
Excel + WITSML (данные Volve)
│
▼
Ingestion.Service ──► Kafka ──┬─► Consumer ──► PostgreSQL (точечные данные)
парсер/издатель │ wells, daily_production,
│ well_trajectories
├─► CHIngest ──► ClickHouse gp (сырые события)
└─► DLQ (некорректные события)
ClickHouse gp.production_daily ──► Aggregator (таймер 60 с) ──► gp.monthly_production
│
▼
GeoPulse.WebAPI (REST + статика web/)
│
▼
Фронт web/ (Leaflet + ECharts)
Стек
- ASP.NET Core (.NET 10) — REST API и раздача статического фронта;
- EF Core — доступ к PostgreSQL и миграции;
- PostgreSQL — точечные данные (скважины, суточная добыча, траектории);
- ClickHouse — сырые события и помесячные агрегаты аналитики;
- Apache Kafka — событийная шина между импортом и потребителями;
- ClosedXML — генерация отчётов Excel;
- Leaflet и ECharts — карта и графики (локальные vendor-файлы, без CDN).
Как разрабатывался
Проект собран по этапной схеме с участием AI-агента в роли разработчика. Человек выступал архитектором и ревьюером: формулировал требования и контракты, принимал результат каждого этапа, а агент писал и правил код, тесты и документацию.
Рабочий цикл: фиксировались канонические имена и схемы, тесты служили контрактом (контрактные и интеграционные тесты писались вместе с функциональностью), каждый этап закрывался контрольными числами и проходил приёмку. Решения и ограничения документировались в README. Такой подход позволяет воспроизводимо двигаться небольшими приёмками без переписывания уже проверенного кода.