GeoPulse Месторождение Volve — о проекте

Разработчик

Азамат Давлетбаев

тел.: +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)

Стек

Как разрабатывался

Проект собран по этапной схеме с участием AI-агента в роли разработчика. Человек выступал архитектором и ревьюером: формулировал требования и контракты, принимал результат каждого этапа, а агент писал и правил код, тесты и документацию.

Рабочий цикл: фиксировались канонические имена и схемы, тесты служили контрактом (контрактные и интеграционные тесты писались вместе с функциональностью), каждый этап закрывался контрольными числами и проходил приёмку. Решения и ограничения документировались в README. Такой подход позволяет воспроизводимо двигаться небольшими приёмками без переписывания уже проверенного кода.