# **Kredi Kartı Ekstreleri İçin Teknik Analiz Dokümanı** ### Kapsam Bu doküman, kredi kartı ekstrelerinin bankanın Kontrat Yönetim Sistemi ile entegre edilmesi, verilerin güvenli bir şekilde saklanması ve müşterilere sunulması amacıyla geliştirilen Kafka tabanlı iletişim altyapısının teknik detaylarını ve ilgili topic'leri açıklamaktadır. --- ## 1. Topic Tanımlamaları ### 1.1. contract-document-create Bu topic, bir kredi kartı ekstresinin Kontrat Yönetim Sistemine eklenmesi sürecini başlatmak için kullanılır. Mesaj, eklenecek dokümanın detaylarını ve ilgili bilgileri içerir. **Örnek Mesaj:** ```json { "data": { "channel": "kafka-ui-test", "contractCode": null, "contractInstanceId": null, "customerNo": 20187045, "documentCode": "doc-upload-0908", "documentInstanceId": "Unique Guid", "documentVersion": "1.0.0", "fileContent": "ByteArray", "fileContentType": "application/pdf", "fileName": "test.pdf", "userReference": "23000666014" }, "datacontenttype": "application/json", "id": "32a1228e-ac10-4cdd-b73a-8f37aa65ef74", "pubsubname": "contract-pubsub-kafka", "source": "amorphie-contract", "specversion": "1.0", "time": "2024-08-08T17:36:43+03:00", "topic": "contract-document-create", "traceid": "00-205f04a9bf9907ddc1c125bda7465ab3-24bdffc3d00bf3dc-01", "traceparent": "00-205f04a9bf9907ddc1c125bda7465ab3-24bdffc3d00bf3dc-01", "tracestate": "", "type": "com.dapr.event.sent" } ``` --- ### 1.2. contract-document-created Bu topic, doküman başarılı bir şekilde oluşturulduktan sonra tetiklenir. Müşterinin kredi kartı ekstresi, Kontrat Yönetim Sistemi'ne başarıyla oluşturulduğunda bu topic aracılığıyla bilgi paylaşılır. **Örnek Mesaj:** ```json { "data": { "channel": "kafka-ui-dev", "contractCode": null, "contractInstanceId": null, "customerNo": 20187045, "documentCode": "doc-upload-0908", "documentContentId": "to download ObjectID", "documentInstanceId": "fbbbae44-a88f-4fe9-8672-e19d481fa681", "documentVersion": "1.0.0", "userReference": "23000666014" }, "datacontenttype": "application/json", "id": "dc15da31-a230-4d12-a232-57bc95127c6e", "pubsubname": "contract-pubsub-kafka", "source": "amorphie-contract", "specversion": "1.0", "time": "2024-08-09T12:39:30Z", "topic": "contract-document-created", "traceid": "00-205f04a9bf9907ddc1c125bda7465ab3-4fe453792520387f-01", "traceparent": "00-205f04a9bf9907ddc1c125bda7465ab3-4fe453792520387f-01", "tracestate": "", "type": "com.dapr.event.sent" } ``` --- ### 1.3. contract-document-creation-failed Bu topic, doküman oluşturulması sırasında bir hata meydana geldiğinde tetiklenir. Hata ile ilgili detaylı bilgi bu topic aracılığıyla iletilir. **Örnek Mesaj:** ```json { "data": { "channel": "kafka-ui-test", "customerNo": 23000666014, "documentInstanceId": "ec97615b-2868-4300-9653-9681b8c77026", "errorMessage": "Unsupported file type", "timestamp": "2024-08-09T12:37:12.8530674Z", "userReference": "23000666014" }, "datacontenttype": "application/json", "id": "5862d2c2-0ee1-43f7-a24f-f6ac94188ba8", "pubsubname": "contract-pubsub-kafka", "source": "amorphie-contract", "specversion": "1.0", "time": "2024-08-09T12:37:12Z", "topic": "contract-document-creation-failed", "traceid": "00-205f04a9bf9907ddc1c125bda7465ab3-3b71b99955b04dbc-01", "traceparent": "00-205f04a9bf9907ddc1c125bda7465ab3-3b71b99955b04dbc-01", "tracestate": "", "type": "com.dapr.event.sent" } ``` ---- ## 2. Kafka Mesajlarının Yapısı Kafka mesajları, Dapr ile entegre bir şekilde Kafka'ya gönderilen JSON formatında mesajlardır. Mesajlar, dokümanların durumlarını izlemek, doküman ekleme işlemlerini başlatmak ve hata durumlarını yönetmek için kullanılır. **Mesaj Yapısı:** - **data:** Mesajın taşıdığı ana veri yükü. Dokümanla ilgili tüm detaylar bu alanın içindedir. - **datacontenttype:** Mesajın içeriğinin türünü belirler (örneğin, `application/json`). ## 3. Mesajların İçeriği ve Alanların Açıklaması **contract-document-create Topiği:** - **channel:** Mesajın hangi kanaldan geldiğini belirler. - **contractCode**, **contractInstanceId:** Kontratla ilgili bilgiler. - **customerNo:** Müşteri numarası. - **documentCode:** Dokümanın kodu. - **documentInstanceId:** Dokümanın Unique Gui Id. - **documentVersion:** Dokümanın versiyonu. - **fileContent:** Dokümanın içeriği (byte array olarak gönderilecek). - **fileContentType:** Dokümanın dosya türü (örneğin, `application/pdf`) *şuan için sadece pdf e izin veriliyor.* - **fileName:** Dokümanın dosya adı. - **userReference:** Kullanıcı referans numarası(TCKN/VKN). **contract-document-created Topiği:** - **documentContentId:** Dokümanın indirilebileceği nesne kimliği. - **documentInstanceId**, **documentVersion**, **customerNo**, **documentCode**, **userReference:** Dokümanın başarılı bir şekilde oluşturulması durumunda döndürülen bilgiler. **contract-document-creation-failed Topiği:** - **errorMessage:** Hata mesajı. - **timestamp:** Hatanın meydana geldiği zaman. - **documentInstanceId**, **customerNo**, **userReference:** Hatanın ilgili olduğu doküman ve müşteri bilgileri. ## 4. Hata Durumları ve Yönetimi Doküman oluşturulurken meydana gelen hatalar için `contract-document-creation-failed` topiği kullanılır. Bu topic, hatanın ayrıntılarını içeren mesajları iletir. Bu şekilde hatalar hızlıca tespit edilip gerekli müdahaleler yapılabilir. **Örnek Hata Mesajı:** - **errorMessage:** "Unsupported file type" Bu mesaj, desteklenmeyen bir dosya türü yüklendiğinde tetiklenmiştir.