Provider Gelistirme
Yeni provider eklerken amac, provider'in ham verisini STANDARD_COLUMNS
semasina donusturmek ve pipeline'a IDataFetcher olarak sunmaktir.
1. Provider enum'una ekle
src/selection_service/enums/enums.py:
class ProviderName(str, Enum):
AFAD = "AFAD"
PEER = "PEER"
FDSN = "FDSN"
ESM = "ESM"
NEW_PROVIDER = "NEW_PROVIDER"
2. Mapper yaz
BaseColumnMapper sinifini kullanarak ham kolonlari standart kolonlara esle.
from selection_service.processing.mappers import BaseColumnMapper
class NewProviderColumnMapper(BaseColumnMapper):
def __init__(self, **kwargs):
super().__init__({
"raw_event": "EVENT",
"raw_mag": "MAGNITUDE",
"raw_station": "STATION",
})
Mapper sonunda DataFrame STANDARD_COLUMNS sirasi ile donmelidir.
3. Provider yaz
Provider IDataFetcher sozlesmesini karsilamalidir.
from selection_service.providers.interfaces import IDataFetcher
from selection_service.processing.result_handle import Result
class NewProvider(IDataFetcher):
def get_name(self) -> str:
return "NEW_PROVIDER"
def map_criteria(self, criteria):
return {}
def fetch_data_sync(self, criteria):
df = ...
return Result.ok(df)
async def fetch_data_async(self, criteria):
df = ...
return Result.ok(df)
4. Factory kaydi ekle
ProviderFactory.create_provider() icinde yeni provider'i olustur.
ColumnMapperFactory icin mapper kaydi ekle veya runtime'da
ColumnMapperFactory.register(...) kullan.
5. Test ekle
En az su testler eklenmelidir:
- mapper standart kolonlari uretiyor
- provider kriterleri dogru map ediyor
- sync fetch basarili durumda DataFrame donduruyor
- hata durumunda
Result.failveyaProviderErrorakisi korunuyor - pipeline coklu provider ile kolon kaybi yasamiyor
6. Dokuman guncelle
Yeni provider:
docs/concepts.mddocs/provider-development.mdREADME.md- API referans sayfalari
icinde listelenmelidir.
Ornek: ESM provider'i
providers/esm_provider.py (2.2.0) bu adimlarin tam bir ornegidir:
ESMColumnMapperham flatfile kolonlarindanSTANDARD_COLUMNSuretir; birim donusumleri (Arias cm/s -> m/s) ve eksik deger yedekleri (Rjb bos ise Repi) mapper'dadir.map_criteriasunucuya gidecek sorguyu (query) ve yanita uygulanacak filtreleri (filters) ayri dondurur; servisin desteklemedigi kriterler boylece kaybolmaz.- HTTP oturumu (
session) ve dosya yoneticisi disaridan verilebilir; testler ag olmadan sahte oturumla calisir (tests/test_EsmProvider.py). - Download destegi icin
IWaveformDownloaderda uygulanir.
FDSN notu
FDSN event, istasyon ve waveform aramalari ProviderName.FDSN ile etkindir.
Event katalogu varsayilan olarak USGS, istasyon/dataselect servisleri IRIS
uzerinden HTTPS ile calisir. Ozel kurulumlar icin base_url ve
data_base_url ayri ayri aktarilabilir.