feat: partner (/outher) yüzeyi — ⚠️ DERLENMEDİ, CI doğrulaması gerekiyor - #1
Merged
Conversation
Mevcut hasta personasinin yanina ikinci bir persona ekler. Tamamen eklemeli; mevcut yuzey hic degismedi, breaking change yok. 24 uc: doctors, slots, appointments, diets, laboratory, measures. Transport ve partnerToken altyapisi zaten hazirdi; yalnizca tiplenmis metotlar eklendi. Okuma/yazma hasta referansi ayrildi: okuma icin identityNumber/phoneNumber yeterli, yazma icin ad/soyad/telefon zorunlu. healthInformation deprecated -- paylasilan tuketici tenant'ina yaziyor, last/list ile geri okunamiyor. PartnerResources.cs ayri dosyada: mevcut Resources.cs 636 satir, 28 metot daha eklemek onu ~1100'e cikarirdi. DIKKAT -- BU KOD DERLENMEDI VE TEST EDILMEDI. Bu makinede yalnizca .NET runtime 8.0.29 var, SDK yok, bu yuzden derleme ve test calistirilamadi. CI'da dogrulanmasi gerekiyor. Derleyici olmadan yapilabilen tek dogrulama yapildi: 6 dilin partner kaynaklarindan /outher path literalleri cikarilip karsilastirildi -- altisi da ayni 24 ucu kullaniyor -- ve bu kume sunucudaki gercek apiouther route'lariyla karsilastirildi, fark cikmadi. Bu path yazim hatalarini kapatir, tip ve derleme hatalarini KAPATMAZ.
SDK artik tek persona sunuyor. 0.6.0'da client.partner.* altinda duran
company-kapsamli /outher yuzeyi kok seviyeye tasindi; hasta girisi gerektiren
ne varsa kaldirildi. 6 grup / 28 uc, hepsi /outher uzerinde.
Neden simdi yapilabildi: api tarafinda a2df42a53 ("Partner (/outher) yuzeyi")
hasta uclarinin company-kapsamli muadillerini acti. Kalan bosluk yok.
Yuzey
- client.partner.<grup> -> client.<grup>. Yol, govde ve davranis aynen
korundu; bu bir yeniden adlandirma. Partner oneki siniflardan ve
girdi tiplerinden dusuruldu.
- Kaldirilanlar: auth (11 metot), payments (5), skin, meals, addresses (4)
ve 0.6.0'da kokte duran hasta-persona gruplari. Hicbirinin company
kapsamli karsiligi yok; gerekcesi DESIGN.md 1.2'de.
Kimlik dogrulama
- partnerToken artik istemcinin tek kimlik bilgisi; clientId/clientSecret
kaldirildi.
- TokenStore tek bir partner token tutuyor ve her istekte okunuyor, boylece
uzun omurlu bir surec yeniden kurulmadan token dondurebiliyor.
- Sessiz yenileme yok. Partner token'i disaridan uretiliyor ve buradan
yenilenemiyor: 401 / resultType 4 artik retry'siz AuthenticationError.
Bu, resultType 4'un hasta SDK'sindaki anlaminin tam tersi, o yuzden
sunucu mesajina ne yapilmasi gerektigi ekleniyor.
- Token yokken istek gonderilmiyor; dispatch oncesi hata veriliyor. Aksi
halde geriye yalnizca anlamsiz bir 401 donuyordu.
- partnerToken ile tokenStore birlikte verilirse kurulum hatasi. Ikisinden
hangisinin kastedildigini tahmin etmek kimlik bilgisi hatalarinin cikis
noktasi.
Yapilandirma
- apiVersion secenegi eklendi (v3 varsayilan, v4). Tum yollar surumden
bagimsiz oldugu icin v4'e gecmek kod degil yapilandirma degisikligi.
DESIGN.md spec 1.0.0'a cikarildi -- 12. bolum 0.6.x -> 1.0.0 gecis rehberi --
ve 6 depoya birebir kopyalandi. README'ler ve CHANGELOG'lar yeni yuzeye gore
yeniden yazildi; ornekler ve canli duman testi partner akisina cevrildi.
0.6.0 bu depoya derlenmeden girmisti (DERLENMEDI). Bu sefer derlendi ve
testler calistirildi.
Dogrulama: dotnet build + 23 test.
Surum 1.0.0 (.csproj).
Yayin oncesi 6 SDK ../api kaynagina karsi denetlendi. 28 ucun tamami v3 ve v4
route tablolarinda mevcut, dogru scope grubunda (27 apiouther + setAuthScopeInfo,
healthInformation teusan) ve gonderilen govdeler FormRequest kurallariyla
ortusuyor. Iki uyusmazlik cikti.
1) doctors.search artik searchParams'i bos haritaya dusurmuyor
Sunucu kurali `required|array`; PHP'nin `required` kurali BOS diziyi reddediyor
(Illuminate ValidatesAttributes::validateRequired -> count($value) < 1). JSON
`{}` PHP tarafinda `[]` olarak cozuldugu icin, searchParams verilmediginde
gonderilen istek filtresiz arama degil garantili 422'ydi.
JS'de `input.searchParams ?? {}` varsayilani kaldirildi ve DoctorSearchInput.
searchParams zorunlu yapildi -- degisiklik bu cagriyi yapan bir testi hemen
yakaladi. Diger 5 SDK'da parametre zaten zorunluydu; hepsine en az bir anahtar
gerektigi belgelendi.
2) healthInformation notu duzeltildi
DESIGN.md ve 6 README, `identity` alaninin dogrulama sirasinda null'landigi bir
API hatasini anlatiyordu. O hata 2026-07-21'de api tarafinda duzeltilmis
(65b15f39c); not artik yanlisti.
Gercekte kalan durum daha gevsek ve bilinmeye deger: eslesme
PatientUsersModel::patientUserFindWithOr uzerinden `identity OR phone_number`
seklinde GLOBAL kullanici tablosunda yapiliyor ve ilk satir aliniyor. Yani tek
basina telefon, gonderilen TCKN'den farkli birini cozebilir. Ayni gruptaki
apiouther okumalari bunun tam tersi: kendi sirketine kapali ve belirsizlikte
hata veriyor. Not buna gore yeniden yazildi.
Tel uzerinde baska degisiklik yok; 28 ucun method/path/govdesi aynen duruyor.
Uc bagimsiz HTTP yigini (js fetch, python httpx, go net/http) calisma aninda
28 cagrinin tamaminda birebir ayni govdeyi uretiyor.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Mevcut hasta personasının yanına ikinci bir persona ekler. Tamamen eklemeli — mevcut yüzey hiç değişmedi, breaking change yok.
Yüzey — 24 uç
Transport ve partner token altyapısı zaten hazırdı; yalnızca tiplenmiş metotlar eklendi.
src/Bulutklinik.Sdk/PartnerResources.csayrı dosyada: mevcutResources.cs636 satır, 28 metot daha eklemek onu ~1100'e çıkarırdı.tests/Bulutklinik.Sdk.Tests/PartnerTests.csyazıldı.Derleyici olmadan yapılabilen doğrulama
Path yazım hatası, derleyicisi olmayan bir dilde en olası ve en sessiz hata. Makineyle kapatıldı:
/outher/...path literalleri çıkarıldı → altısı da aynı 24 ucu kullanıyorapioutherroute'larıyla (routes/v3/outher.php) karşılaştırıldı → fark yok; SDK'de olup sunucuda olmayan ⌀, tersi ⌀Bu, path hatalarını kapatır — tip ve derleme hatalarını kapatmaz.
Tasarım kararları
Okuma/yazma hasta referansı ayrıldı. Okuma için identityNumber/phoneNumber yeterli; yazma için ad/soyad/telefon zorunlu (hasta partner'ın şirketinde yoksa sunucu oluşturur).
healthInformationdeprecated. Paylaşılan tüketici tenant'ına yazdığı içinlast/listile geri okunamıyor. Mevcut teusan entegrasyonları için duruyor.Ölçüm kapsamı. Partner yalnız kendi şirketinde kayıtlı ölçümleri görür — kiracı izolasyonunun doğal sonucu.
Testlerin kanıtlaması beklenenler (CI'da)
patientile yan yana düzleşiyor-labson ekiyle değişmeden gidip geliyorBağımlılık
Sunucu tarafı: greenglobaltr/BulutApi#1911