Ana içeriğe geç
Version: 1.2.1

Özellikler

Bu belge Teydex KYC sisteminde bulunan isteğe bağlı özellikleri ve yapılandırma seçeneklerini açıklar.


Parçalı Yükleme (Chunking)

Parçalı yükleme, büyük dosyaların daha küçük parçalar halinde yüklenmesine olanak tanıyan isteğe bağlı bir özelliktir. Bu özellik, kararsız bağlantılar üzerinden yapılan yüklemeler için güvenilirliği ve kullanıcı deneyimini iyileştirir.

Parçalı Yükleme Ne Zaman Kullanılır

  • Büyük dosya yüklemeleri (genellikle > 5MB)
  • Kararsız ağ bağlantıları
  • Bant genişliği kısıtlamaları olan mobil ortamlar
  • Yükleme sürdürme özelliği gerektiren ortamlar

Yapılandırma

Parçalı yükleme, yapılandırma ayarları aracılığıyla etkinleştirilebilir. Etkinleştirildiğinde, sistem dosya yüklemelerini tek büyük istek yerine otomatik olarak parçalar halinde işler.

Nasıl Çalışır

Parçalı yükleme işlemi belirli bir API sırası takip eder:

  1. Yüklemeyi Başlatma: Sunucuyu parçalı yükleme için hazırlamak üzere POST /transaction/upload-chunk-init/ çağrısı yapın
  2. Parçaları Yükleme: Her dosya parçası için POST /transaction/upload-chunk/ çağrısını tekrarlı olarak yapın
  3. Durumu Kontrol Etme: Parça yükleme ilerlemesini doğrulamak için GET /transaction/upload-chunk-status/ kullanın
  4. Yüklemeyi Sonlandırma: Yüklemeyi tamamlamak ve dosyayı yeniden birleştirmek için POST /transaction/upload-chunk-finalize/ çağrısı yapın

API Uç Noktaları

1. Parçalı Yüklemeyi Başlatma

Uç Nokta: POST /transaction/upload-chunk-init/ Amaç: Sunucuyu dosya parçalarını almaya hazırlar ve yükleme oturumu detaylarını döndürür.

İstek Gövdesi

{
"filename": "document.jpg",
"file_size": 2048576,
"chunk_size": 1024,
"total_chunks": 2000
}

Yanıt Gövdesi

{
"upload_id": "abc123-def456-ghi789",
"chunk_size": 1024,
"expires_at": "2024-01-15T10:30:00Z"
}

2. Dosya Parçası Yükleme

Uç Nokta: POST /transaction/upload-chunk/ Amaç: Tekil dosya parçalarını meta verilerle birlikte yükler.

İstek Gövdesi (multipart/form-data)

upload_id: abc123-def456-ghi789
chunk_number: 1
chunk_data: [ikili veri]
chunk_hash: sha256_hash_of_chunk

Yanıt Gövdesi

{
"upload_id": "abc123-def456-ghi789",
"chunk_number": 1,
"status": "received",
"next_chunk": 2
}

3. Yükleme Durumunu Kontrol Etme

Uç Nokta: GET /transaction/upload-chunk-status/ Amaç: Parçalı yükleme ilerlemesinin mevcut durumunu döndürür.

Sorgu Parametreleri

  • upload_id: Yükleme oturumu kimliği

Yanıt Gövdesi

{
"upload_id": "abc123-def456-ghi789",
"total_chunks": 2000,
"uploaded_chunks": 1500,
"missing_chunks": [1501, 1502, 1505],
"status": "in_progress"
}

4. Yüklemeyi Sonlandırma

Uç Nokta: POST /transaction/upload-chunk-finalize/ Amaç: Yükleme işlemini tamamlar ve parçaları nihai dosyada birleştirir.

İstek Gövdesi

{
"upload_id": "abc123-def456-ghi789",
"file_hash": "sha256_hash_of_complete_file"
}

Yanıt Gövdesi

{
"upload_id": "abc123-def456-ghi789",
"status": "completed",
"file_url": "/media/uploads/document.jpg",
"file_size": 2048576
}

Faydalar

  • Güvenilirlik: Başarısız yüklemeler son başarılı parçadan sürdürülebilir
  • Performans: Mobil ağlarda büyük dosyaların daha iyi işlenmesi
  • Kullanıcı Deneyimi: Büyük yüklemeler için ilerleme göstergesi
  • Bant Genişliği Verimliliği: Başarısız yüklemeler baştan başlamayı gerektirmez

LDAP Kimlik Doğrulama

LDAP (Lightweight Directory Access Protocol) entegrasyonu, kurumların mevcut dizin hizmetlerini Teydex sisteminde kullanıcı kimlik doğrulama ve yetkilendirme için kullanmalarına olanak tanır.

LDAP Ne Zaman Kullanılır

  • Mevcut Active Directory veya LDAP altyapısına sahip kurumsal ortamlar
  • Merkezi kullanıcı yönetimi gereksinimleri
  • Tek oturum açma (SSO) entegrasyon ihtiyaçları
  • Dizin gruplarından eşlenen rol tabanlı erişim kontrolü gerektiren organizasyonlar

Nasıl Çalışır

  1. Kullanıcı Kimlik Doğrulama: Kullanıcılar LDAP kimlik bilgileriyle giriş yapar
  2. Dizin Arama: Sistem yapılandırılmış LDAP dizininde kullanıcıyı arar
  3. Öznitelik Eşleme: Kullanıcı öznitelikleri (ad, e-posta, vb.) LDAP'tan uygulama alanlarına eşlenir
  4. Grup Yetkilendirme: LDAP grupları erişim kontrolü için uygulama rollerine eşlenir
  5. Oturum Oluşturma: Uygun izinlerle yerel oturum oluşturulur

Desteklenen Özellikler

  • Kullanıcı Kimlik Doğrulama: Kimlik bilgilerini LDAP dizinine karşı doğrulama
  • Öznitelik Eşleme: LDAP özniteliklerini uygulama kullanıcı alanlarına eşleme
  • Grup Tabanlı Yetkilendirme: LDAP gruplarını uygulama rollerine eşleme
  • Esnek Yapılandırma: Yapılandırılabilir arama tabanları, filtreler ve bağlama kimlik bilgileri

Yapılandırma

LDAP kimlik doğrulama ortam değişkenleri aracılığıyla yapılandırılır. Detaylı yapılandırma seçenekleri ve örnekler için setup.md dosyasındaki LDAP Entegrasyon bölümüne bakın.

LDAP gruplarından eşlenebilecek kullanılabilir uygulama rolleri:

  • api_user: API Kullanıcısı
  • read_only: Salt Okunur (varsayılan rol)
  • administrator: Yönetici
  • customer_representative: Müşteri Temsilcisi
  • customer_representative_manager: Müşteri Temsilcisi Müdürü

Maker Checker

Maker Checker, belirli işlemlerin gerçekleştirilmeden önce yetkili bir onaycı tarafından onaylanmasını zorunlu kılan bir iş akışı mekanizmasıdır. Bu mekanizma, kritik veri değişikliklerinde ikinci bir gözün devreye girmesini sağlayarak hata ve yetkisiz işlem riskini minimize eder.

Maker Checker Ne Zaman Kullanılır

  • Yönetim paneli üzerinde veri oluşturulması, güncellenmesi veya silinmesi gereken durumlar.
  • İki aşamalı onay gerektiren iş süreçleri.
  • Değişiklik geçmişi tutulması gereken organizasyonlar.
  • Aynı kullanıcının hem işlemi başlatıp hem de onaylamaması gereken güvenlik gereksinimleri.

Nasıl Çalışır

  1. İstek Oluşturma: Kullanıcı bir oluşturma, güncelleme veya silme işlemi başlatır
  2. Değişiklik Kaydı: İşlem veritabanına ChangeRequest olarak kaydedilir, asıl model değişmez
  3. Onay Bekleme: ChangeRequest pending statüsünde bekler
  4. Onaylayıcı Kararı: Yetkili onaylayıcı isteği onaylar veya reddeder
  5. İşlem Gerçekleşme: Onay durumunda asıl işlem tetiklenir, ret durumunda hiçbir değişiklik yapılmaz

Desteklenen Özellikler

  • Oluşturma Onayı: Yeni kayıt oluşturma işlemlerini onay akışına dahil etme
  • Güncelleme Onayı: Mevcut kayıt güncelleme işlemlerini onay akışına dahil etme
  • Silme Onayı: Kayıt silme işlemlerini onay akışına dahil etme
  • Değişiklik Takibi: Güncelleme işlemlerinde hangi alanların değiştiğini eski ve yeni değerleriyle kayıt altına alma
  • Durum Yönetimi: pending, approved, rejected, failed statüleriyle işlem durumu takibi
  • Entegrasyon: Mixin yapısı sayesinde mevcut serializer ve view'lara entegrasyon
  • Açık/Kapalı Modu: MAKER_CHECKER_ENABLED ayarı ile mekanizma ortam bazında açılıp kapatılabilmesi
  • Aksiyon Bağımsızlığı: CRUD işlemleri haricinde tetiklenecek diğer fonksiyonların onaya bağlı olarak çalışması.

Entegrasyon

1. Servis Fonksiyonu

Onaylandığında çalışacak iş mantığını içeren servis fonksiyonları tanımlanır. Bu fonksiyonlar yalnızca onay geldiğinde tetiklenir.

# myapp/services.py

class MyModelService:
@staticmethod
def create(**kwargs) -> MyModel:
return MyModel.objects.create(**kwargs)

@staticmethod
def update(instance_id: str, **kwargs) -> MyModel:
instance = MyModel.objects.get(pk=instance_id)
for key, value in kwargs.items():
setattr(instance, key, value)
instance.save()
return instance

@staticmethod
def delete(instance_id: str, **kwargs) -> None:
MyModel.objects.filter(pk=instance_id).delete()

2. Serializer

ChangeRequestSerializerMixin eklenerek create, update ve destroy metodları onay akışına dahil edilir.

Özelleştirilmiş bir süreç varsa SerializerMixin kullanıımı önerilmez.

# myapp/serializers.py
from maker_checker.mixins import ChangeRequestSerializerMixin
from .services import MyModelService

class MyModelSerializer(ChangeRequestSerializerMixin, serializers.ModelSerializer):
change_request_action_create = MyModelService.create
change_request_action_update = MyModelService.update

class Meta:
model = MyModel
fields = [...]


class MyModelDeleteSerializer(ChangeRequestSerializerMixin, serializers.Serializer):
change_request_action_delete = MyModelService.delete

3. View

ChangeRequestCreateViewMixin, ChangeRequestUpdateViewMixin veya ChangeRequestDeleteViewMixin eklenerek ihtiyaç duyulan metodlar için Mixin sınıfları onay akışına dahil edilir.

# myapp/views.py
from maker_checker.mixins import ChangeRequestCreateViewMixin, ChangeRequestUpdateViewMixin, ChangeRequestDeleteViewMixin

class MyModelViewSet(ChangeRequestCreateViewMixin, ChangeRequestUpdateViewMixin, ChangeRequestDeleteViewMixin, viewsets.ModelViewSet):
serializer_class = MyModelSerializer
queryset = MyModel.objects.all()

4. Yapılandırma

# settings.py
MAKER_CHECKER_ENABLED = True # False yapılırsa onay akışı devre dışı kalır, varsayılan olarak False olarak ayarlıdır.

API

ChangeRequest Listesi

GET /change-requests/

ChangeRequest Detayı

GET /change-requests/{id}/

Onaylama / Reddetme

POST /change-requests/{id}/resolve/

İstek gövdesi:

AlanTipZorunluAçıklama
actionstringEvetapproved veya rejected
notestringHayırOnaylayıcı notu

Örnek:

{ "action": "approved" }
{ "action": "rejected", "note": "Eksik bilgi mevcut." }

ChangeRequest Statüleri

StatüAçıklama
pendingİşlem onay bekliyor
approvedİşlem onaylandı ve gerçekleştirildi
rejectedİşlem reddedildi
failedİşlem onaylandı ancak gerçekleştirilemedi