Ö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:
- Yüklemeyi Başlatma: Sunucuyu parçalı yükleme için hazırlamak üzere
POST /transaction/upload-chunk-init/çağrısı yapın - Parçaları Yükleme: Her dosya parçası için
POST /transaction/upload-chunk/çağrısını tekrarlı olarak yapın - Durumu Kontrol Etme: Parça yükleme ilerlemesini doğrulamak için
GET /transaction/upload-chunk-status/kullanın - 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
- Kullanıcı Kimlik Doğrulama: Kullanıcılar LDAP kimlik bilgileriyle giriş yapar
- Dizin Arama: Sistem yapılandırılmış LDAP dizininde kullanıcıyı arar
- Öznitelik Eşleme: Kullanıcı öznitelikleri (ad, e-posta, vb.) LDAP'tan uygulama alanlarına eşlenir
- Grup Yetkilendirme: LDAP grupları erişim kontrolü için uygulama rollerine eşlenir
- 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öneticicustomer_representative: Müşteri Temsilcisicustomer_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
- İstek Oluşturma: Kullanıcı bir oluşturma, güncelleme veya silme işlemi başlatır
- Değişiklik Kaydı: İşlem veritabanına
ChangeRequestolarak kaydedilir, asıl model değişmez - Onay Bekleme:
ChangeRequestpendingstatüsünde bekler - Onaylayıcı Kararı: Yetkili onaylayıcı isteği onaylar veya reddeder
- İş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,failedstatüleriyle işlem durumu takibi - Entegrasyon: Mixin yapısı sayesinde mevcut serializer ve view'lara entegrasyon
- Açık/Kapalı Modu:
MAKER_CHECKER_ENABLEDayarı 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:
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
action | string | Evet | approved veya rejected |
note | string | Hayır | Onaylayı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 |