# Contract Analiz Dökümanı Sözleşme ve dokümanların durumunu belirten **status** anahtarının farklı değerleri ve anlamları şunlardır: Statüler: - **active:** Sözleşme veya doküman aktif durumda, yani şu anda geçerli ve kullanımda. - **passive:** Sözleşme veya doküman pasif durumda, yani şu anda kullanılmıyor veya geçerli değil. - **inProgress:** Sözleşme veya doküman üzerinde çalışılıyor, henüz tamamlanmamış. - **completed:** Sözleşme veya doküman tamamlanmış, yani gerekli tüm işlemler bitmiş. - **on-hold:** Sözleşme veya doküman beklemeye alınmış, yani geçici bir süre için durdurulmuş. - **canceled:** Sözleşme veya doküman iptal edilmiş, yani artık geçerli veya devam ettirilmeyecek. ## GET /customer/get-documents-by-contracts Endpoint Analizi Bu API endpoint'i, belirli sözleşmelere bağlı dokümanları getirmek için kullanılır. Endpoint, özellikle müşterilere ait sözleşmelerle ilişkilendirilmiş dokümanları sorgulamak için tasarlanmıştır. Kullanıcı bu endpoint'e bir istek gönderdiğinde, sistem sözleşme bilgilerine göre ilgili dokümanları bulur ve döndürür. Bu işlem, müşteri hizmetleri ve sözleşme yönetimi süreçlerinde, müşterilerin ilgili dokümanlara hızlı ve kolay erişimini sağlamak için önemlidir. Endpoint, genellikle sözleşme ID'si veya benzer bir tanımlayıcı alır ve bu tanımlayıcıya bağlı dokümanları listeler. Yanıt olarak, ilgili dokümanların detayları (örneğin, doküman adı, türü, oluşturulma tarihi vb.) döndürülür. Bu endpoint'in kullanımı, müşteri ve sözleşme bilgilerinin doğru ve güncel tutulmasını gerektirir. Verilen örnek yanıt, bir JSON listesi içerir ve her bir obje sözleşme ve ona bağlı dokümanlar hakkında bilgiler içerir. Anahtarların açıklamaları: - **id:** Sözleşmenin benzersiz tanımlayıcısı. - **code:** Sözleşmenin kodu. - **status:** Sözleşmenin mevcut durumu (örneğin, "inProgress"). - **document:** İlgili dokümanların listesi. Her doküman için: - **code:** Dokümanın kodu. - **title:** Dokümanın başlığı headerdan gelen language göre. - **multilanguageText:** Çok dilli metin (eğer varsa). - **status:** Dokümanın durumu (örneğin, "not-started"). - **required:** Dokümanın zorunlu olup olmadığı. - **upload:** Yükleme bilgisi (eğer varsa). - **render:** Dokümanın render edilip edilmeyeceği. - **online-sign:** Online imza ile ilgili bilgiler içerir. - **documentGroups:** Doküman grupları (eğer varsa). **multilanguageText** anahtarının alabileceği değerler arasında "tr-TR" ve "en-EN" bulunmaktadır. Bu, dokümanın çok dilli destek sağladığını ve Türkçe ("tr-TR") ile İngilizce ("en-EN") dillerinde metin içeriği sunabileceğini gösterir. ## GET /customer/get-all-documents Endpoint Analizi GET /customer/get-all-documents endpoint'i, müşterilere ait tüm dokümanları listelemek için kullanılır. Bu endpoint, genellikle müşteri tarafından belirli bir referans anahtarı (referenceKey) ile sorgulanır ve müşteriye ait tüm dokümanları geri döndürür. Bu sorgulama, müşterilerin doküman yönetim sistemlerindeki dokümanlarına erişimini sağlamak ve bu dokümanların durumlarını, detaylarını ve diğer ilgili bilgileri görüntülemelerine olanak tanımak için tasarlanmıştır. Bu endpoint üzerinden yapılan sorgulamalar, müşteri hizmetleri, doküman yönetimi ve sözleşme yönetimi gibi iş süreçlerini desteklemek amacıyla kullanılabilir. Yanıtta yer alan anahtarlar ve bunların açıklamaları şu şekildedir: - **code:** Dokümanın kodunu belirtir. - **semver:** Dokümanın semantik versiyonunu ifade eder. - **status:** Dokümanın mevcut durumunu gösterir. - **minioUrl:** Dokümanın MinIO üzerinde saklandığı URL'yi ve erişim detaylarını içerir. - **id:** MinIO URL'sinin benzersiz tanımlayıcısı. - **status, isCanceled, isCompleted, isCompletedSuccessfully, isFaulted:** MinIO URL'sinin yükleme ve erişim durumları ile ilgili detayları ifade eder. - **minioObjectName:** Dokümanın MinIO'daki nesne adını belirtir. - **reference:** Dokümanın ilişkilendirildiği referans numarasını ifade eder. ## Geliştirme Talebi- Umutta bekliyor. Onaylandı. ### GET /customer/get-documents-by-contracts için geliştirme talebi GET /customer/get-documents-by-contracts endpoint'i için yeni eklenmesi gereken parametreler ve beklenen işlevsellikler şunlardır: 1. **code:** Kullanıcının girdiği code değerine göre sözleşme araması yapılacak. Örneğin, "login-contract" ifadesi girildiğinde bu ada sahip veya "login%" ifadesi girildiğinde bu adla başlayan tüm sözleşmeler listelenecek. 2. **startDate:** Kullanıcı tarafından seçilen başlangıç tarihi. Bu parametre null olabilir. Eğer null ise, sorgu endDate parametresine göre yapılacak.document tablosu içerisindeki createdate tarihine bakılır. 3. **endDate:** Kullanıcı tarafından seçilen bitiş tarihi. Bu parametre de null olabilir. Hem startDate hem de endDate null ise, tüm sözleşmeler listelenecek. document tablosu içerisindeki createdate tarihine bakılır. 4. **page:** Kullanıcının görüntülemek istediği sayfa numarası. 5. **pageSize:** Bir sayfada görüntülenmesi istenen öğe sayısı, örneğin "20". 6. **reference:** owner ve reference yi kontrol edip document customer numarasi ile document tablosu sorgulanır Geliştirme sonrası yukarıdaki parametreler response’da görüntülenmeli. **Örnek Response:** ```json [ { "id": "112f1b62-562a-4278-9a57-8a1bd88e1481", "code": "test-contract", "status": "inProgress", "document": [ { "createDate": "2024-01-01", "code": "doc-on-internet-subesi-bilgilendirme-metni", "title": "On İnternet Şubesi Bilgilendirme Metni", "multilanguageText": [ { "Language": "tr-TR", "Title": "On İnternet Şubesi Bilgilendirme Metni" }, { "Language": "en-EN", "Title": "On Internet Information" } ], "status": "not-started", "required": true, "upload": null, "render": true, "online-sign": { "sca-required": false, "allowed-clients": [ "mobile-ib", "web-ib", "dealer", "direct-sales" ], "document-model-template": [ { "name": "cont-on-internet-subesi-bilgilendirme-metni", "min-version": "1.0.0" } ] }, "version": "1.0.0" } ], "documentGroups": null }, { "id": "67834bf2-241a-473b-b73f-07f155b7f5b4", "code": "logindocs", "status": "inProgress", "document": [ { "createDate": "2024-01-01", "code": "doc-on-internet-subesi-bilgilendirme-metni", "title": "On İnternet Şubesi Bilgilendirme Metni", "multilanguageText": [ { "Language": "tr-TR", "Title": "On İnternet Şubesi Bilgilendirmetr" }, { "Language": "en-EN", "Title": "On Internet Information" } ], "status": "not-started", "required": true, "upload": null, "render": true, "online-sign": { "sca-required": false, "allowed-clients": [ "mobile-ib", "web-ib", "dealer", "direct-sales" ], "document-model-template": [ { "name": "cont-on-internet-subesi-bilgilendirme-metni", "min-version": "1.0.0" } ] }, "version": "1.0.0" } ], "documentGroups": null } ] ``` Örnek Response 2 ``` [ { "id": "112f1b62-562a-4278-9a57-8a1bd88e1481", "code": "test-contract", "status": "inProgress", "document": [ { "createDate": "2024-01-01", "code": "doc-on-internet-subesi-bilgilendirme-metni", "title": "On İnternet Şubesi Bilgilendirme Metni", "multilanguageText": [ { "Language": "tr-TR", "Title": "On İnternet Şubesi Bilgilendirme Metni" }, { "Language": "en-EN", "Title": "On Internet Information" } ], "status": "not-started", "required": true, "upload": null, "render": true, "online-sign": { "sca-required": false, "allowed-clients": [ "mobile-ib", "web-ib", "dealer", "direct-sales" ], "document-model-template": [ { "name": "cont-on-internet-subesi-bilgilendirme-metni", "min-version": "1.0.0" } ] }, "version": "1.0.0", "semver": "1.0.0", "minioUrl": { "result": "https://test-minio-api.burgan.com.tr/contract-management/2050953f-32d3-49e4-9bce-c1ee06a6edce%23%2325850175418%23%23doc-on-internet-subesi-bilgilendirme-metni%23%231.0.0%23%23doc-on-internet-subesi-bilgilendirme-metni.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=wUifnlQsiCEEfZ80%2F20240123%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240123T130506Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=30f989fe911e191da973a0e788e6d4237821534cb465ffecbbad5a4100102d3f", "id": 2, "status": 5, "isCanceled": false, "isCompleted": true, "isCompletedSuccessfully": true, "isFaulted": false }, "minioObjectName": "2050953f-32d3-49e4-9bce-c1ee06a6edce##25850175418##doc-on-internet-subesi-bilgilendirme-metni##1.0.0##doc-on-internet-subesi-bilgilendirme-metni.pdf", "reference": "25850175418" } ], "documentGroups": null }, { "id": "67834bf2-241a-473b-b73f-07f155b7f5b4", "code": "logindocs", "status": "inProgress", "document": [ { "createDate": "2024-01-01", "code": "doc-on-internet-subesi-bilgilendirme-metni", "title": "On İnternet Şubesi Bilgilendirme Metni", "multilanguageText": [ { "Language": "tr-TR", "Title": "On İnternet Şubesi Bilgilendirme Metni" }, { "Language": "en-EN", "Title": "On Internet Information" } ], "status": "not-started", "required": true, "upload": null, "render": true, "online-sign": { "sca-required": false, "allowed-clients": [ "mobile-ib", "web-ib", "dealer", "direct-sales" ], "document-model-template": [ { "name": "cont-on-internet-subesi-bilgilendirme-metni", "min-version": "1.0.0" } ] }, "version": "1.0.0", "semver": "1.0.0", "minioUrl": { "result": "https://test-minio-api.burgan.com.tr/contract-management/2050953f-32d3-49e4-9bce-c1ee06a6edce%23%2325850175418%23%23doc-on-internet-subesi-bilgilendirme-metni%23%231.0.0%23%23doc-on-internet-subesi-bilgilendirme-metni.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=wUifnlQsiCEEfZ80%2F20240123%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240123T130506Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=30f989fe911e191da973a0e788e6d4237821534cb465ffecbbad5a4100102d3f", "id": 2, "status": 5, "isCanceled": false, "isCompleted": true, "isCompletedSuccessfully": true, "isFaulted": false }, "minioObjectName": "2050953f-32d3-49e4-9bce-c1ee06a6edce##25850175418##doc-on-internet-subesi-bilgilendirme-metni##1.0.0##doc-on-internet-subesi-bilgilendirme-metni.pdf", "reference": "25850175418" } ], "documentGroups": null } ] ``` Base URL ``` {{baseUrl}}customer/get-documents-by-contracts?reference={{referanceKey}}&startDate=2024-01-01&endDate=2024-01-31&pageNum=1&pageSize=20 ``` ### GET /customer/get-all-documents endpoint'i için geliştirme talebi GET /customer/get-all-documents endpoint'i için eklenmesi düşünülen yeni parametreler şunlardır: - **code:** Belirli bir kodla başlayan veya o kodu içeren dokümanları filtrelemek için kullanılır. - **startDate** ve **endDate:** Belirli bir tarih aralığındaki dokümanları filtrelemek için kullanılır. Her ikisi de opsiyonel olup, belirtilmediğinde tüm dokümanlar listelenir. - **page** ve **pageSize:** Sonuçların sayfalandırılması için kullanılır, hangi sayfanın görüntüleneceğini ve bir sayfada kaç öğenin olacağını belirler. - **reference:** Belirli bir müşteri numarasına göre dokümanları filtrelemek için kullanılır. ### Test Senaryoları #### Test Senaryosu: Müşteri Dokümanlarının Sorgulanması(get-all-documents?) **Amaç** GET /customer/get-all-documents endpoint'inin yeni eklenen parametrelerle doğru şekilde çalışıp çalışmadığını test etmek. **Ön Koşullar** - Kullanıcı sisteme giriş yapmış olmalı ve dokümanları sorgulamak için gereken yetkilere sahip olmalıdır. **Test Adımları** **1.Adım:** Spesifik Bir Doküman Kodunu Sorgula - **Parametre:** code = "login-contract" - **Beklenen Sonuç:** Sadece "login-contract" koduna sahip dokümanlar listelenir. **2.Adım:** Belirli Bir Tarih Aralığında Doküman Sorgula - **Parametreler:** startDate = "2024-01-01", endDate = "2024-12-31" - **Beklenen Sonuç:** Belirtilen tarih aralığındaki dokümanlar listelenir. **3.Adım:** Sayfalama İşlemi Yap - **Parametreler:** page = 0, pageSize = 20 - **Beklenen Sonuç:** Belirtilen sayfa numarasındaki dokümanlar, belirlenen sayfa boyutuna göre listelenir. **4.Adım:** Belirli Bir Müşteriye Ait Dokümanları Sorgula - **Parametre:** reference = "12345678901" - **Beklenen Sonuç:** Belirtilen referans numarasına (müşteri TCKN/VKN) sahip müşteriye ait dokümanlar listelenir. **Test Verileri** - `code = "login-contract"` - `startDate = "2024-01-01"` - `endDate = "2024-12-31"` - `page = 0` - `pageSize = 20` - `reference = "12345678901"` **Sonrası Koşullar** Testler sonucunda endpoint'in beklendiği gibi çalıştığı ve yeni parametrelerle uyumlu olduğu doğrulanmalıdır. Herhangi bir hata veya eksiklik tespit edilirse, geliştirme ekibinden destek iste ----- #### Test Senaryosu: Sözleşmelere Bağlı Dokümanların Sorgulanması(get-documents-by-contracts?) **Amaç** GET /customer/get-documents-by-contracts endpoint'inin yeni eklenen parametrelerle doğru şekilde çalışıp çalışmadığını test etmek. **Ön Koşullar** - Kullanıcı sisteme giriş yapmış olmalı ve dokümanları sorgulamak için gereken yetkilere sahip olmalıdır. **Test Adımları** **1.Adım:** Belirli Bir Doküman Kodunu Sorgula - **Parametre:** code = "login-contract" - **Beklenen Sonuç:** Belirtilen code değerine sahip veya bu değerle başlayan tüm dokümanlar listelenir. **2.Adım:** Belirli Bir Tarih Aralığında Doküman Sorgula - **Parametreler:** startDate = "2024-01-01", endDate = "2024-12-31" - **Beklenen Sonuç:** Belirtilen tarih aralığındaki dokümanlar listelenir. **3.Adım:** Sayfalama İşlemi Yap - **Parametreler:** page = 0, pageSize = 20 - **Beklenen Sonuç:** Belirtilen sayfa numarasındaki dokümanlar, belirlenen sayfa boyutuna göre listelenir. **4.Adım:** Belirli Bir Referans Anahtarı ile Dokümanları Sorgula - **Parametre:** reference = "12345678901" - **Beklenen Sonuç:** Belirtilen referans anahtarıyla ilişkili tüm dokümanlar listelenir. **Test Verileri** - `code = "login-contract"` - `startDate = "2024-01-01"` - `endDate = "2024-12-31"` - `page = 0` - `pageSize = 20` - `reference = "12345678901"` **Sonrası Koşullar** Testler sonucunda endpoint'in beklendiği gibi çalıştığı ve yeni parametrelerle uyumlu olduğu doğrulanmalıdır. Herhangi bir hata veya eksiklik tespit edilirse, geliştirme ekibinden destek iste. --- #### Test Senaryosu: Önceden Onaylanmış Belgelerin Yeniden Kullanılması (Örnek Senaryo)--contract/Instance endpoint **Amaç:** Bir müşterinin farklı kontratlar için önceden onayladığı belgelerin durumunu doğru şekilde yönetmek. **Ön Koşullar:** Müşteri, bir önceki kontrat kapsamında belirli belgeleri onaylamış olmalı. Test Adımları: **1.Adım:** Müşterinin önceki kontrat için onayladığı belgelerin listesini al. **2.Adım:** Yeni bir kontrat sorgulaması yap ve müşterinin onaylaması gereken belgeleri iste. **3.Adım:** Sorgu sonucunda, önceki kontratta onaylanan belgelerin yeni kontrat için de "onaylandı" olarak işaretlendiğini kontrol et. **4.Adım:** Yalnızca yeni kontrat için gerekli ve henüz onaylanmamış belgelerin müşteriye sunulduğunu doğrula. **Beklenen Sonuç:** Sistem, müşterinin daha önce onayladığı belgeleri tanıyıp, yalnızca yeni veya henüz onaylanmamış belgeler için onay talep eder. Bu, müşterinin aynı belgeler için tekrar tekrar onay vermesinin önüne geçer ve süreci kolaylaştırır. **Örnek Test Senaryosu:** Önceden Onaylanmış Belgenin Yeniden Kullanımı **Amaç:** Müşterinin "cont-kiymetli-maden" kontratı için onayladığı vk5 belgesinin, "cont-hisse" kontratı sorgulandığında da geçerli olduğunun doğrulanması. Ön Koşullar: Müşteri, "cont-kiymetli-maden" kontratı için vk5 belgesini onaylamış olmalıdır. **Test Adımları:** **1.** "cont-hisse" kontratı için müşteri belgeleri sorgulama işlemi yap. **2.** Sorgu sonucunda, vk5 belgesinin "onaylandı" olarak işaretlendiğini ve yalnızca xy12 ve xy13 belgelerinin onay beklediğini kontrol et. **Beklenen Sonuç:** Sistem, "cont-kiymetli-maden" kontratı için önceden onaylanan vk5 belgesini tanır ve "cont-hisse" kontratı için bu belgeyi tekrar onaylama gerekliliğini ortadan kaldırır. Müşteriden yalnızca eksik olan xy12 ve xy13 belgeleri için onay talep edilir. -------------- # Contract Definition - **Bank Entity Radio Button:** - Burgan ve ON seçenekleri içeren bir radio button eklenecek. - Code alanı ile radio buton arasında uniq ilişki olacak. Örneğin, code "logindocs" yazılmışsa ve Burgan seçilmişse, başka bir zaman Burgan seçili olup "logindocs" eklenmeyecek. Sadece ON seçilirse eklenebilir. - **Metadata:** - Metadata alanı eklenmesi planlanmaktadır. - **Document Group List ve Required Document:** - Document Group List'te bulunan belge sayısına göre Required Document alanına maksimum o kadar adet sayı girilebilecektir. Örneğin, 5 belge varsa 6 yazılamayacaktır. - **Validation List ve Decision Table:** - Validation List'te "All Valid" seçiliyse, Decision Table kısmı kapatılacaktır. - **Contract Definition Title:** - Multi-language desteği eklenerek, Contract Definition başlığı eklenecektir. # Document Definition - **Code ve Versiyon Bilgisi:** - Code ile versiyon bilgisi uniq olacak şekilde tasarlanacaktır. Aynı bilgileri yazdığınızda uyarı alacaksınız. Örneğin, 1.0.1 versiyonu kabul edilecektir, böylece güncellemelerin önü açılacaktır. - Doc versiyon update işlemi otomatik olarak artacaktır.(update ekranında düşünülebilir diye ekledim.) - **Tag Definition Form ve Ekran Tasarımı:** - Tag, iki parametreli (code+değişken) olarak tasarlanacaktır. Örneğin, reference de kullanılabilir (data.document.metadata.field). - Tag oluşturacak bir ekran tasarlanacaktır. Definition'dan çekilecek. - `{ "code": "id-card", "contact": "reference" }` - **Allowed Client Bilgisi:** - Allowed Client bilgisi, veritabanından alınacaktır. Gateway'den gelen veriye göre listesi verilecektir. - **Versiyon Açıklaması:** - Versiyonun açıklaması üzerinden geçilecektir. - render altındaki Template engine vversiyonu. üsteki documan definationun versinu ------------------ # Template-Render API Dokümantasyonu ## `POST /template-render/render` Verilen verilerle bir şablon oluşturur. ### İstek Parametreleri: - `name` (Türü: string): Şablonun adını belirtir. - `render-id` (Türü: UUID): Render işlemi için benzersiz bir tanımlayıcı. - `render-data` (Türü: string): Render işlemi için gerekli veriler. - `render-data-for-log` (Türü: string): Loglama için kullanılacak render verileri. - `semantic-version` (Türü: string): Şablonun semantik versiyonunu belirtir. - `process-name` (Türü: string): İşlem adını belirtir. - `item-id` (Türü: string): İlgili öğenin tanımlayıcısı. - `action` (Türü: string): Yapılan işlemi tanımlar. - `identity` (Türü: string): Kullanıcının veya müşterinin kimliğini belirtir. - `customer` (Türü: string): Müşterinin adını belirtir. - `children-name` (Türü: string): Alt öğelerin adını belirtir. - `children` (Türü: string dizisi): İlgili alt öğelerin listesi. ### Örnek İstek: ```json { "name": "cont-on-internet-subesi-bilgilendirme-metni", "render-id": "{{$guid}}", "render-data": "", "render-data-for-log": "", "semantic-version": "{{minVersion}}", "process-name": "", "item-id": "string", "action": "string", "identity": "string", "customer": "string", "children-name": "string" } ``` ----------------- # Contract Instance API Dokümantasyonu ## `POST /contract/Instance` Sözleşme örneği oluşturur ve beklenen müşterinin kontrata bağlı eksik belgelerini response olarak döner. ### İstek Parametreleri: - **`contractName`** (Türü: string): Kontratın adını belirtir. - **`reference`** (Türü: string): Referans anahtarını ifade eder, genellikle müşterinin TCKN veya VKN bilgisidir. - **`owner`** (Türü: string): Kontratın sahibini gösterir, bu da genellikle referans anahtarına (TCKN veya VKN) karşılık gelir. - **`process`**: İşlemle ilgili bilgileri içeren bir nesne. - **`client`** (Türü: string): İşlemi yapan istemciyi belirtir. - **`user`** (Türü: string): İşlemi yapan kullanıcının kimliğini belirtir. - **`name`** (Türü: string): İşlemin adını belirtir. - **`state`** (Türü: string): İşlemin durumunu belirtir. - **`action`** (Türü: string): Yapılan işlemi tanımlar. ### Örnek İstek: ```json { "contractName": "cont-kiymetli-maden", "reference": "{{referenceKey}}", "owner": "{{referenceKey}}", "process": { "client": "ekyc-application", "user": "34455667789", "name": "ekyc-process", "state": "load-document", "action": "web-mobil-document-load" } } ```