Mimari
Proje katmanlari sorumluluklara ayrilmistir.
selection_service/
core/
earthquake_api.py Public facade
pipeline.py Pipeline engine and report generation
config.py Standard columns, scoring map, presets
error_handle.py Domain error hierarchy
services/
provider_registry.py Active provider registry
earthquake_query_service.py
waveform_download_service.py
providers/
afad_provider.py
peer_provider.py
providers_factory.py
interfaces.py
afad/
processing/
criteria.py SearchCriteria, ScoringWeights, SelectionConfig
strategies/ base, tbdy, eurocode
mappers.py Provider column mappers
dedup.py Cross-provider event/record de-duplication
result_handle.py Result type and decorators
utility/
path_utils.py
data/
NGA-West2_flatfile.csv
stations.xlsx
Facade
EarthquakeAPI kullanicinin ana giris noktasidir.
api = EarthquakeAPI([ProviderName.PEER], [strategy])
result = api.run_sync(criteria, strategy.get_name())
Facade su servisleri bir araya getirir:
ProviderRegistryEarthquakeQueryServiceWaveformDownloadService
Query service
EarthquakeQueryService provider listesini ve stratejileri kullanarak
pipeline context olusturur.
Ana sorumluluklar:
- strateji adini cozmek
- sync/async pipeline calistirmak
- mevcut DataFrame uzerinde
re_selectionyapmak
Pipeline
EarthquakePipeline adimlari:
_validate_inputs_fetch_data_syncveya_fetch_data_async_combine_data_apply_strategy_finalize_result
Her adim Result modeliyle basarili/basarisiz sonucu tasir.
Provider ve mapper ayrimi
Provider veri kaynagini bilir; mapper kolon standardizasyonunu bilir.
Ornek:
PeerWest2Provider: flatfile okur ve filtre uygular.PEERColumnMapper: PEER kolonlariniSTANDARD_COLUMNSile hizalar.AFADDataProvider: AFAD API'den veri ceker.AFADColumnMapper: AFAD API yanitini standart kolona cevirir.ESMProvider: ESM flatfile servisini sorgular, desteklenmeyen filtreleri yanita uygular.ESMColumnMapper: ESM flatfile kolonlarini (RotD50 PGA/PGV/PGD, Mw oncelikli buyukluk) standart kolona cevirir.
Download yetenegi
IDataFetcher sadece veri cekme sozlesmesidir. Download destekleyen provider
ek olarak IWaveformDownloader uygular. supports_download(provider) bu ayrimi
runtime'da kontrol eder.
Bu sayede PEER gibi download desteklemeyen provider'lar download metodu uygulamak zorunda kalmaz.