Blok Türü Keşfi

Birleştirilmiş Blok Türleri Uç Noktası

GET /api/tenant/{tenantId}/project/{projectId}/block/types/all

Tek bir API çağrısında mevcut tüm blok türlerini (filtreler, hesaplayıcılar ve zenginleştirmeler) keşfedin. Bu birleştirilmiş uç nokta, mindzieStudio'da bulunan tüm analiz yetenekleri hakkında eksiksiz bilgi almak için önerilen yöntemdir.

Neden Birleştirilmiş Uç Noktayı Kullanmalı?

Birleştirilmiş uç nokta, bireysel kategori uç noktalarını sorgulamaya kıyasla birçok avantaj sağlar:

  • Tek Teklif: Birden fazla istek yerine tek API çağrısıyla tüm blok türlerini alın
  • Eksiksiz Meta Veri: Kategoriye özgü uç noktalarla sunulmayan zenginleştirmeleri içerir
  • Gruplandırılmış Yanıt: Sonuçlar blok kategorisine göre düzenlenir, kolay işleme için
  • Zengin Meta Veri: Her blok türü dokümantasyon URL'leri, kullanım notları ve ilgili bloklar içerir
  • AI Entegrasyonu: AI kodlama asistanları ve MCP sunucu entegrasyonu için optimize edilmiştir

İstek

GET /api/tenant/{tenantId}/project/{projectId}/block/types/all
Authorization: Bearer {token}

Yol Parametreleri

Parametre Tür Zorunlu Açıklama
tenantId GUID Evet Kiracı tanımlayıcısı
projectId GUID Evet Proje tanımlayıcısı

Yanıt

Yanıt Yapısı

{
  "BlockTypes": [...],
  "Categories": ["Özellik Filtreleri", "Zaman Filtreleri", "Hesaplayıcılar", ...],
  "TotalCount": 45,
  "ByBlockCategory": {
    "Filter": [...],
    "Calculator": [...],
    "Enrichment": [...]
  }
}

Yanıt Alanları

Alan Tür Açıklama
BlockTypes Dizi Tüm blok türleri eksiksiz meta veri ile
Categories Dizi Tüm benzersiz kategorilerin listesi
TotalCount Tam sayı Mevcut toplam blok türü sayısı
ByBlockCategory Nesne Filtre/Hesaplayıcı/Zenginleştirme kategorilerine göre gruplandırılmış blok türleri

Blok Türü Nesnesi

BlockTypes dizisindeki her blok türü şunları içerir:

Alan Tür Açıklama
OperatorName String Blok türü için benzersiz tanımlayıcı (ör. "CaseAttributeFilter")
DisplayName String Kullanıcı arayüzünde gösterilen okunabilir ad
Description String Blokun ne yaptığına dair kısa açıklama
Category String İşlevsel kategori (ör. "Özellik Filtreleri", "Zaman Filtreleri")
BlockType String Üst düzey sınıflandırma: "Filter", "Calculator" veya "Enrichment"
DocumentationUrl String Bu blok türü için dokümantasyon sayfasının URL'si
UsageFrequency String Blok türünün kullanım sıklığı ("High", "Medium", "Low")
ExcludeFromOrFilter Boolean Bu filtrenin OR kombinasyonlarında kullanılıp kullanılmayacağı
AutoTitleEnabled Boolean Otomatik başlık oluşturma desteği olup olmadığı
SupportedDisplayTypes Dizi Sonuçlar için desteklenen görselleştirme türleri
UsageNotes String Bu blok türünü kullanırken ek rehberlik notları
RelatedBlocks Dizi İlgili blok türlerinin listesi
CommonUseCases Dizi Bu blok türünün tipik kullanım senaryoları

Örnek Yanıt

{
  "BlockTypes": [
    {
      "OperatorName": "CaseAttributeFilter",
      "DisplayName": "Vaka Özellik Filtresi",
      "Description": "Müşteri tipi, bölge veya öncelik seviyesi gibi özellik değerlerine göre vakaları filtreler",
      "Category": "Özellik Filtreleri",
      "BlockType": "Filter",
      "DocumentationUrl": "/mindzie_studio/filters/case-attribute-filter",
      "UsageFrequency": "High",
      "ExcludeFromOrFilter": false,
      "AutoTitleEnabled": true,
      "SupportedDisplayTypes": ["table", "chart"],
      "UsageNotes": "Tam eşleşme, içerir ve regex desenlerini destekler",
      "RelatedBlocks": ["EventAttributeFilter", "CaseIdFilter"],
      "CommonUseCases": [
        "Müşteri segmentine göre filtreleme",
        "Belirli bölgelere odaklanma",
        "Yüksek öncelikli vakaları analiz etme"
      ]
    },
    {
      "OperatorName": "CaseDurationCalculator",
      "DisplayName": "Vaka Süresi Hesaplayıcısı",
      "Description": "Vaka başlangıcından bitişine kadar toplam süreyi hesaplar",
      "Category": "Zaman Hesaplayıcıları",
      "BlockType": "Calculator",
      "DocumentationUrl": "/mindzie_studio/calculators/case-duration-calculator",
      "UsageFrequency": "High",
      "ExcludeFromOrFilter": false,
      "AutoTitleEnabled": true,
      "SupportedDisplayTypes": ["histogram", "table", "boxplot"],
      "UsageNotes": "Süre, projenin yapılandırılmış zaman biriminde hesaplanır",
      "RelatedBlocks": ["ActivityDurationCalculator", "WaitTimeCalculator"],
      "CommonUseCases": [
        "Vaka döngü sürelerini analiz etme",
        "Yavaş ilerleyen vakaları belirleme",
        "Süreç verimliliğini karşılaştırma"
      ]
    },
    {
      "OperatorName": "CaseStageCalculator",
      "DisplayName": "Vaka Aşama Hesaplayıcısı",
      "Description": "Vakalara etkinlik desenleri ve kurallara göre aşama etiketleri atar",
      "Category": "Aşama Analizi",
      "BlockType": "Enrichment",
      "DocumentationUrl": "/mindzie_studio/enrichments/case-stage-calculator",
      "UsageFrequency": "Medium",
      "ExcludeFromOrFilter": false,
      "AutoTitleEnabled": true,
      "SupportedDisplayTypes": ["sankey", "table"],
      "UsageNotes": "Aşama tanımlarının yapılandırılması gerekir",
      "RelatedBlocks": ["CaseStatusEnrichment", "MilestoneDetector"],
      "CommonUseCases": [
        "Vakanın aşamalardaki ilerlemesini izleme",
        "Tıkanma aşamalarını belirleme",
        "Aşama geçişlerini izleme"
      ]
    }
  ],
  "Categories": [
    "Özellik Filtreleri",
    "Zaman Filtreleri",
    "Etkinlik Filtreleri",
    "Zaman Hesaplayıcıları",
    "Sayım Hesaplayıcıları",
    "Aşama Analizi",
    "Veri Zenginleştirme"
  ],
  "TotalCount": 45,
  "ByBlockCategory": {
    "Filter": [
      { "OperatorName": "CaseAttributeFilter", "DisplayName": "Vaka Özellik Filtresi", ... },
      { "OperatorName": "DateRangeFilter", "DisplayName": "Tarih Aralığı Filtresi", ... }
    ],
    "Calculator": [
      { "OperatorName": "CaseDurationCalculator", "DisplayName": "Vaka Süresi Hesaplayıcısı", ... }
    ],
    "Enrichment": [
      { "OperatorName": "CaseStageCalculator", "DisplayName": "Vaka Aşama Hesaplayıcısı", ... }
    ]
  }
}

JavaScript Örneği

// Mevcut tüm blok türlerini keşfet
async function discoverAllBlockTypes(tenantId, projectId, token) {
  const response = await fetch(
    `/api/tenant/${tenantId}/project/${projectId}/block/types/all`,
    {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
      }
    }
  );

  if (!response.ok) {
    throw new Error(`Blok türleri keşfedilemedi: ${response.status}`);
  }

  const data = await response.json();

  console.log(`${data.TotalCount} blok türü keşfedildi:`);
  console.log(`- Filtreler: ${data.ByBlockCategory.Filter.length}`);
  console.log(`- Hesaplayıcılar: ${data.ByBlockCategory.Calculator.length}`);
  console.log(`- Zenginleştirmeler: ${data.ByBlockCategory.Enrichment.length}`);

  return data;
}

// Kategoriye göre blok türlerini bul
function getBlockTypesByCategory(allTypes, category) {
  return allTypes.BlockTypes.filter(bt => bt.Category === category);
}

// Yüksek kullanımda olan blok türlerini bul
function getHighUsageBlockTypes(allTypes) {
  return allTypes.BlockTypes.filter(bt => bt.UsageFrequency === 'High');
}

// Kullanım
const blockTypes = await discoverAllBlockTypes(tenantId, projectId, token);
const timeFilters = getBlockTypesByCategory(blockTypes, 'Zaman Filtreleri');
const popular = getHighUsageBlockTypes(blockTypes);

Python Örneği

import requests
from typing import Dict, List, Any

class BlockTypeDiscovery:
    def __init__(self, base_url: str, tenant_id: str, project_id: str, token: str):
        self.base_url = base_url
        self.tenant_id = tenant_id
        self.project_id = project_id
        self.headers = {
            'Authorization': f'Bearer {token}',
            'Content-Type': 'application/json'
        }

    def discover_all(self) -> Dict[str, Any]:
        """Mevcut tüm blok türlerini keşfet"""
        url = f"{self.base_url}/api/tenant/{self.tenant_id}/project/{self.project_id}/block/types/all"
        response = requests.get(url, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def get_filters(self) -> List[Dict]:
        """Tüm filtre blok türlerini al"""
        data = self.discover_all()
        return data.get('ByBlockCategory', {}).get('Filter', [])

    def get_calculators(self) -> List[Dict]:
        """Tüm hesaplayıcı blok türlerini al"""
        data = self.discover_all()
        return data.get('ByBlockCategory', {}).get('Calculator', [])

    def get_enrichments(self) -> List[Dict]:
        """Tüm zenginleştirme blok türlerini al"""
        data = self.discover_all()
        return data.get('ByBlockCategory', {}).get('Enrichment', [])

    def find_by_use_case(self, keyword: str) -> List[Dict]:
        """Kullanım senaryosu anahtar kelimesine uyan blok türlerini bul"""
        data = self.discover_all()
        results = []
        for block_type in data['BlockTypes']:
            use_cases = block_type.get('CommonUseCases', [])
            if any(keyword.lower() in uc.lower() for uc in use_cases):
                results.append(block_type)
        return results

# Kullanım
discovery = BlockTypeDiscovery(
    'https://your-mindzie-instance.com',
    'tenant-guid',
    'project-guid',
    'your-auth-token'
)

# Tüm blok türlerini keşfet
all_types = discovery.discover_all()
print(f"Toplam blok türü: {all_types['TotalCount']}")

# Kategoriye göre blok türleri al
filters = discovery.get_filters()
calculators = discovery.get_calculators()
enrichments = discovery.get_enrichments()

# Süre analizi için blok türlerini bul
duration_blocks = discovery.find_by_use_case('duration')

Kategoriye Özel Uç Noktalar

Birleştirilmiş uç nokta çoğu kullanım için önerilir. Ancak kategoriye özel uç noktalar da mevcuttur:

Uç Nokta Açıklama
GET /block/types?category=filters Sadece filtreler
GET /block/types?category=calculators Sadece hesaplayıcılar
GET /block/types/{operatorName} Tek blok türü detayları
GET /block/types/{operatorName}/schema Bir blok türünün yapılandırma şeması

MCP Sunucu Entegrasyonu

AI kodlama asistanları, mindzieAPI MCP sunucusunu kullanarak blok türlerini programlı olarak keşfedebilir:

mindzie_list_block_types category="unified"

Bu MCP araç çağrısı aynı birleştirilmiş yanıtı döner ve AI araçlarının tüm mevcut analiz yeteneklerini kolayca anlamasını sağlar.

Tam dokümantasyon için bakınız: MCP Sunucu Entegrasyonu.

Kullanım Senaryoları

Dinamik Arayüzler Oluşturma

Birleştirilmiş uç noktayı kullanarak, blok türü seçim menülerini her seçenek hakkında eksiksiz bilgiyle doldurun.

AI Destekli Analiz

AI asistanları mevcut analiz yeteneklerini keşfedebilir ve kullanıcı hedeflerine göre uygun blok türlerini önerebilir.

Dokümantasyon Oluşturma

Tüm blok türleri ve meta verileri üzerinde gezinerek dinamik dokümantasyon oluşturun.

Yetenek Denetimi

Bir proje için mevcut tüm analiz yeteneklerini listeleyerek tam kapsamlılık sağlayın.