Skip to content

Feature/teminat endpoints - #7

Merged
metehanboy merged 2 commits into
metehanboy:mainfrom
farukkornaz:feature/teminat-endpoints
Oct 8, 2026
Merged

metehanboy merged 2 commits into
metehanboy:mainfrom
farukkornaz:feature/teminat-endpoints

Conversation

@farukkornaz

Copy link
Copy Markdown
Contributor

Değişiklik Açıklaması

EPYS Teminat modülü servisleri yeni teminat kategorisi olarak eklendi: ep.teminat.<metod>(...). EPYS Teminat Modülü Web Servis Dokümanı v1.0'da (EPİAŞ, 26.09.2023) belgelenen 21 uç (hepsi POST) kapsanıyor. Kütüphane kodunda (src/epint/*.py) değişiklik yok; yalnızca swagger, test ve doküman eklendi.

Değişiklik Türü

  • Bug fix (hataları düzelten değişiklik)
  • Yeni özellik (geriye uyumlu değişiklik)
  • Breaking change (geriye uyumlu olmayan değişiklik)
  • Dokümantasyon güncellemesi
  • Kod refactoring
  • Performans iyileştirmesi
  • Test ekleme/güncelleme

İlgili Issue

Yok.

Değişiklik Detayları

Ne Değişti?

  • src/epint/endpoints/teminat/swagger.json: 21 uç, 104 tanım.
  • tests/test_teminat_category.py: 5 yeni test.
  • .claude/skills/epint/services/teminat.md: kategori dokümanı. SKILL.md, overview.md ve README kategori listelerine teminat satırı eklendi.
  • Versiyon 0.7.9 → 0.8.0 (ayrı commit).

Neden Değişti?

Teminat verileri (başlangıç, GÖGİ, ek, dengesizlik, risk, YEK, destekleme bedeli teminatları ve teminat raporu) epint üzerinden çekilemiyordu.

Teminat tarafında EPİAŞ'ın 6 ayrı mikroservisi var: gogi-collateral, collateral, imbalance-collateral, risk-collateral, rbs-collateral, res-collateral. Bunları tek bir teminat kategorisinde topladım.

Swagger'da basePath yok, path'ler servis önekiyle yazıldı (/gogi-collateral/rest/v1/...). Bir swagger tek basePath taşıyabiliyor. basePath: "/" verilirse buildurl URL'de // üretiyor.

Şemalar https://epys.epias.com.tr/<servis>/v2/api-docs adresinden alındı. index-ac ile aynı dönüşümler uygulandı:

  • Header parametreleri (TGT/ST/Accept-Language ve dahili mockedorganizationid) çıkarıldı.
  • operationId'ler kebab-case yapıldı.
  • RestResponse«X» adları RestResponseX olarak değiştirildi.
  • Çözülmemiş ${...} şablonlu açıklamalar silindi.

api-docs'ta dokümanda olmayan dahili uçlar da var (actuator, takasbank vb.); bunlar bilerek dahil edilmedi.

Nasıl Test Edildi?

  • Mevcut testler geçiyor
  • Yeni testler eklendi
  • Manuel test yapıldı (21 uç için oluşan prod/test URL'leri dokümanla karşılaştırıldı)
  • Test sonuçları eklendi

Test Sonuçları

$ python -m pytest tests/test_teminat_category.py -v
tests/test_teminat_category.py::test_teminat_exposes_all_documented_endpoints PASSED
tests/test_teminat_category.py::test_teminat_urls_match_documentation[prod-epys.epias.com.tr] PASSED
tests/test_teminat_category.py::test_teminat_urls_match_documentation[test-epys-prp.epias.com.tr] PASSED
tests/test_teminat_category.py::test_teminat_request_body_conversion PASSED
tests/test_teminat_category.py::test_teminat_response_rest_wrapper_is_unwrapped PASSED
5 passed

$ python -m pytest
93 passed, 3 warnings
# Uyarılar mevcut reconciliation-bpm swagger'ındaki operationId çakışmasından, teminat'tan değil.

$ black --check tests/test_teminat_category.py && isort --check tests/test_teminat_category.py
1 file would be left unchanged.

Ortam: Python 3.14.4, pytest 9.1.1 (yerel). CI 3.11/3.12'de çalıştıracak.

Kontrol Listesi

  • Kodumu formatladım (black, isort): yeni test dosyası için
  • Mevcut testler geçiyor
  • Yeni testler ekledim (eğer gerekiyorsa)
  • Dokümantasyonu güncelledim (eğer gerekiyorsa)
  • Commit mesajlarım açıklayıcı
  • Kod standartlarına uyuyorum
  • Type hints ekledim (mümkünse): kod değişikliği yok
  • Docstring'ler ekledim (mümkünse): kod değişikliği yok

Breaking Changes

  • Evet (aşağıda açıklayın)
  • Hayır

Ek Notlar

  • Lint kontrolü kırmızı görünebilir ama bu PR'dan kaynaklanmıyor. black --check tests, main'de zaten var olan tests/test_http_client.py ve tests/test_swagger_model.py dosyalarındaki 88 karakteri aşan satırlar yüzünden başarısız oluyor. main'in son commit'inde (38e2110) de "Lint (new code)" işi failure durumunda.
  • Yanıtların content altındaki yapısı api-docs şemasından alındı. Prod ile test ortamı arasında 3 küçük şema farkı vardı: yanıt şemaları prod'dan alındı, istek DTO'larına test ortamındaki ek alan (paymentDate) de eklendi.

Review Notları

  • Kategori adında imbalance-collateral gibi servis bazlı adlardan kaçınıldı: ep.imbalance_collateral, alias fuzzy eşleşmesi yüzünden reconciliation-imbalance'a gidiyor. ep.teminat doğru çözülüyor ve testle kontrol ediliyor.
  • Fuzzy parametre eşleştirmesiyle ilgili bir uyarı services/teminat.md'ye eklendi: uçta olmayan bir tarih alanı (ör. validityDate alan bir uca paymentDate) sessizce mevcut tarih alanına yazılıyor.

🤖 Generated with Claude Code

farukkornaz and others added 2 commits October 8, 2026 12:47
New teminat endpoint category is a feature release (minor bump).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@metehanboy
metehanboy merged commit e3bcd40 into metehanboy:main Oct 8, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants