Skip to content

Repository files navigation

KentLens

Belediye ve şehir verilerini operasyonel KPI'lara dönüştüren veri ve karar destek platformu

Python ETL · PostgreSQL · Star Schema · Power BI · FastAPI · Responsive Web

Canlı Web Uygulaması · English · Türkçe

Python PostgreSQL Power BI FastAPI Tests


Proje Özeti

KentLens; trafik, hava durumu, hava kalitesi ve ilçe verilerini tek bir analitik yapıda birleştirerek belediye ve şehir operasyonları için anlaşılır KPI'lar üretir.

Proje yalnızca bir dashboard değildir. Kaynak keşfinden veri kalitesi kurallarına, Python ETL süreçlerinden PostgreSQL star schema'ya, Power BI raporundan salt okunur FastAPI ve responsive web arayüzüne kadar uçtan uca bir veri ürünü olarak geliştirilmiştir.

Doğrulanan 2023 veri kapsamı

Veri alanı Kapsam
Trafik olayları 12.075 kayıt
İlçeler 39 ilçe
Günlük trafik ve hava verisi 365 gün
Saatlik hava kalitesi 8.760 kayıt
ETL ve API testleri 18 / 18 başarılı

Ürün Görünümü

Yönetici Özeti

KentLens Yönetici Özeti

Dashboard; karar vericilerin şehir hareketliliğini, çevresel göstergeleri, ilçe farklılıklarını ve veri kalitesini aynı rapor içinde incelemesini sağlar.

Diğer Analiz Sayfaları

Mobilite İlçe Karşılaştırma
KentLens Mobilite KentLens İlçe Karşılaştırma
Çevre Veri Kalitesi
KentLens Çevre KentLens Veri Kalitesi
İlçe Detayı KPI Sözlüğü
KentLens İlçe Detayı KentLens KPI Sözlüğü

Tanıtım Videosu

KentLens portföy tanıtım videosunu izle


Sistem Mimarisi

flowchart LR
    A[Açık Veri Kaynakları] --> B[Python ETL]
    B --> C[Temizleme ve Standardizasyon]
    C --> D{Veri Kalitesi Kuralları}
    D -->|Geçerli| E[PostgreSQL Star Schema]
    D -->|Sorunlu| F[Karantina Katmanı]
    E --> G[Salt Okunur Mart View'ları]
    G --> H[Power BI]
    G --> I[FastAPI]
    I --> J[Responsive Web Arayüzü]
    J --> K[Canlı API veya Doğrulanmış Snapshot]
Loading

Veri Hattı

KentLens veri hattı aşağıdaki aşamalardan oluşur:

  1. Kaynak tanımları ve veri sözleşmeleri
  2. Python ile veri alma ve profil çıkarma
  3. Temizleme, standartlaştırma ve alan doğrulama
  4. Kalite kurallarını geçemeyen kayıtların nedenleriyle karantinaya ayrılması
  5. PostgreSQL star schema'ya yükleme
  6. Power BI ve API için salt okunur semantik mart view'larının hazırlanması
  7. SQL sonuçlarının dashboard KPI'larıyla karşılaştırılması
  8. API, web ve UAT doğrulaması

Trafik olayları İstanbul ilçe sınırlarıyla yerel olarak eşleştirilir. Poligon dışında kalan köprü, tünel, kıyı veya İstanbul dışı kayıtlar tahmini bir ilçeye zorlanmak yerine karantinaya alınır.


Power BI Raporu

Power BI raporu aşağıdaki sayfaları içerir:

  • Yönetici Özeti
  • Mobilite
  • İlçe Karşılaştırma
  • Çevre
  • Veri Kalitesi
  • Drill-through İlçe Detayı
  • KPI Sözlüğü

Ana analiz sayfalarında filtre sıfırlama ve KPI bilgi düğmeleri bulunur. Dashboard metrikleri, SQL doğrulama sorgularıyla kontrol edilmiştir.


FastAPI Veri Katmanı

FastAPI yalnızca önceden tanımlanmış ve parametreli SELECT sorguları çalıştırır. Serbest SQL uç noktası bulunmaz.

Yöntem Amaç
GET /health Veritabanı ve salt okunur işlem kontrolü
GET /api/v1/executive-summary Trafik ve çevre yönetici KPI'ları
GET /api/v1/districts İstanbul ilçe listesi
GET /api/v1/mobility/districts İlçe trafik karşılaştırması
GET /api/v1/mobility/events Filtrelenebilir trafik olayları
GET /api/v1/environment/daily Günlük hava ve hava kalitesi verileri
GET /api/v1/data-quality Kaynak ve kalite kuralı bulguları

Güvenlik yaklaşımı

  • Ayrı ve salt okunur PostgreSQL API rolü
  • Her işlemde READ ONLY modu
  • Parametreli sorgular
  • Veri yazma ve tablo değiştirme yetkisi yok
  • Sorgu süresi sınırı
  • Parolaların yalnızca Git tarafından yok sayılan .env dosyasında tutulması
  • Açık veri kaynaklarının API yanıtlarında belirtilmesi

Web Arayüzü

Canlı KentLens Web Uygulaması

Responsive web deneyimi şu görünümleri içerir:

  • Genel Bakış
  • İlçeler
  • Çevre
  • Veri Kalitesi
  • Kaynaklar

Arayüz önce yerel FastAPI bağlantısını kullanır. API erişilemezse doğrulanmış 2023 snapshot verisine otomatik geçerek portföy modunda çalışmaya devam eder.


Kullanılan Teknolojiler

Veri ve analiz

  • Python
  • Pandas
  • SQL
  • PostgreSQL
  • Veri temizleme ve doğrulama
  • Veri kalite kuralları
  • Star schema ve semantik view'lar

Raporlama

  • Power BI
  • Power Query
  • DAX
  • Drill-through
  • KPI sözlüğü
  • Veri kalite raporlaması

Backend ve web

  • FastAPI
  • Swagger / OpenAPI
  • PostgreSQL read-only roller
  • Responsive web arayüzü
  • Snapshot fallback

İş analizi ve kalite

  • Problem tanımı
  • User story ve acceptance criteria
  • As-is / To-be süreç analizi
  • Fonksiyonel analiz
  • Test senaryoları
  • UAT kontrol listesi
  • Veri sözlüğü ve kaynak dokümantasyonu

Hızlı Başlangıç

Python ortamı

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .

Kaynak profili

.\scripts\profile_sources.ps1

ETL

.\scripts\run_etl.ps1

İşlenmiş veriler data/processed, kalite kurallarını geçemeyen kayıtlar ise neden alanlarıyla data/quarantine altında tutulur.

PostgreSQL

Proje kökündeki .env.example dosyasını .env olarak kopyalayın ve yerel parola değerlerini belirleyin.

.\scripts\start_postgres.ps1
.\scripts\load_postgres.ps1
.\scripts\setup_readonly_logins.ps1

PostgreSQL varsayılan olarak localhost:5434 üzerinde çalışır.

FastAPI

.\scripts\start_api.ps1
  • Swagger UI: http://127.0.0.1:8000/docs
  • Health check: http://127.0.0.1:8000/health

Web

cd web
npm install
npm run dev

Arayüz: http://localhost:3000


Test ve Doğrulama

.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe -m ruff check backend
.\.venv\Scripts\python.exe -m scripts.check_api_db_security

Web tarafı:

cd web
npm run lint
npm test

Proje kapsamında:

  • ETL ve API testleri 18/18 başarılıdır
  • Dashboard KPI'ları SQL sorgularıyla doğrulanmıştır
  • Veri kalitesi hataları karantina akışıyla izlenebilir durumdadır
  • MVP, proje sahibi tarafından UAT kontrolüyle kabul edilmiştir

Proje Yapısı

KentLens/
├── backend/       # FastAPI ve API testleri
├── config/        # Veri kaynakları ve kalite kuralları
├── data/          # Ham, işlenmiş ve karantina veri alanları
├── database/      # DDL, migration ve analitik SQL
├── diagrams/      # ER, star schema ve süreç diyagramları
├── docs/          # İş analizi, veri sözlüğü, test ve UAT
├── etl/           # Veri alma, temizleme ve yükleme süreçleri
├── notebooks/     # Keşifsel veri analizi
├── powerbi/       # Power Query, DAX, PBIX ve ekran görüntüleri
├── reports/       # ETL, veri kalitesi ve doğrulama raporları
├── scripts/       # Çalıştırma komutları
├── web/           # Responsive karar destek arayüzü
└── tests/         # Uçtan uca veri ve kalite testleri

Dokümantasyon

Veri ve mimari

İş analizi ve kalite

Operasyon ve doğrulama


Kapsam ve Sınırlılıklar

  • MVP veri aralığı 2023 yılıyla sınırlıdır.
  • Canlı web sürümü, yerel API bulunmadığında doğrulanmış snapshot kullanır.
  • Dashboard bir belediye üretim sistemi değil, açık veri tabanlı karar destek ve portföy ürünüdür.
  • Kaynak verilerindeki eksik veya coğrafi olarak belirsiz kayıtlar tahmini değerlerle doldurulmaz; karantinaya alınır.
  • Üretilen göstergeler bağlamdan bağımsız kesin politika önerileri olarak yorumlanmamalıdır.

Projenin Amacı

KentLens; SQL ve Power BI becerilerini tek başına göstermek yerine, veri kaynaklarından karar verici arayüzüne kadar uzanan izlenebilir, test edilmiş ve dokümante edilmiş bir veri ürünü ortaya koymayı amaçlar.

About

End-to-end urban data platform combining Python ETL, PostgreSQL, Power BI, FastAPI, and data quality workflows.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages