Müşavir

ai

30 uç · /api/musavir/v1/ai

İstek örnekleri ucun GERÇEK metodu ve yolundan üretilir. 30 ucun elle doğrulanmış gövde örneği henüz yok; o uçlarda iskelet gövdesizdir — uydurma bir alan yazmıyoruz.

POST/api/musavir/v1/ai/aksiyon/{id}/gorev

Gorev

OturumYol parametresi: id
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/aksiyon/<id>/gorev" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/aksiyon/{id}/reddet

Reddet

OturumYol parametresi: id
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/aksiyon/<id>/reddet" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/araclar

Asistanın bu kullanıcı için, bu bölümde kullanabileceği araçlar.

Oturum
İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/araclar" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/asistan

Sohbet

Oturum
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/asistan" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/asistan/{oturum}

Bir oturumun geçmişi (ekran yenilendiğinde konuşma kaybolmasın).

OturumYol parametresi: oturum
İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/asistan/<oturum>" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/cevaplar

BLE-7015/8084/8098 · AI Cevaplar defteri.

Oturum

🔴 SÜZGEÇ SORGUNUN İÇİNDEDİR (Paket 2 · 8009'un aynı dersi). limitten SONRA süzen bir uç, üç ay önce sorulmuş bir soru arandığında "sonuç yok" der — doğru cümle, YANLIŞ sebep; çünkü süzgeç yalnız en yeni 200 satırı görmüştür. Buradaki her yüklem SQL'dedir ve toplam süzgeçten SONRA, limitten ÖNCE sayılır: ekran "200'den fazlası var" diyebilsin. 🔴 TANINMAYAN SÜZGEÇ DEĞERİ BOŞ LİSTE DEĞİL 400'DÜR. durum=cevaplandı (Türkçe i) yazan bir çağrı sessizce sıfır satır alsaydı, kullanıcı "hiç cevaplanmış sorum yok" sonucunu çıkarırdı — oysa yazdığı değer hiç var olmayan bir durumdur.

İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/cevaplar" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/cevaplar/karar

BLE22-7120/8322 · bir AI cevabı hakkında insan kararı.

Oturum
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/cevaplar/karar" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/cevaplar/yildiz

BLE-7015 · kalite puanı. Yalnız CEVAPLANMIŞ bir soru puanlanabilir — reddedilen bir cevaba

Oturum

yıldız vermek, reddin kendisini "kalite" gibi göstermek olurdu.

İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/cevaplar/yildiz" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/firsatlar

BLE-7015/8084/8098 · AI Cevaplar defteri.

Oturum

🔴 SÜZGEÇ SORGUNUN İÇİNDEDİR (Paket 2 · 8009'un aynı dersi). limitten SONRA süzen bir uç, üç ay önce sorulmuş bir soru arandığında "sonuç yok" der — doğru cümle, YANLIŞ sebep; çünkü süzgeç yalnız en yeni 200 satırı görmüştür. Buradaki her yüklem SQL'dedir ve toplam süzgeçten SONRA, limitten ÖNCE sayılır: ekran "200'den fazlası var" diyebilsin. 🔴 TANINMAYAN SÜZGEÇ DEĞERİ BOŞ LİSTE DEĞİL 400'DÜR. durum=cevaplandı (Türkçe i) yazan bir çağrı sessizce sıfır satır alsaydı, kullanıcı "hiç cevaplanmış sorum yok" sonucunu çıkarırdı — oysa yazdığı değer hiç var olmayan bir durumdur.

İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/firsatlar" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/firsatlar/{id}/inceleme

Incele

OturumYol parametresi: id
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/firsatlar/<id>/inceleme" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/firsatlar/katalog

Katalog — ekran alan seçicisini BUNDAN çizer, kendi listesini UYDURMAZ.

Oturum
İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/firsatlar/katalog" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/firsatlar/tara

🔴 "Bugün" İSTEKTEN GELMEZ (MÜF22 · BLE22-15280): ?tarih= ile vadesi gelmemiş alacak için

Oturum

şüpheli alacak karşılığı ÖNERİSİ üretilebiliyordu — insan onaylarsa yanlış karşılık fişi deftere girer. Saati sunucu verir.

İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/firsatlar/tara" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/izler

AI denetim izi — "ne önerildi, kim ne karar verdi, neden, neye dayanarak".

Oturum

🔴 BÜTÜNLÜK EKRANDA ÖLÇÜLMEZ, SUNUCUDA. soru_bozulmamisı istemcinin hesaplaması, hash'i doğrulayacak metni de istemciye göndermek demekti; asıl mesele ise iki değerin AYNI ANDA aynı satırdan okunmasıdır.

İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/izler" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/karar

POST /gizlilik/karar — **izin İSTEMEZ ve kısıt kapısının muafıdır** (bkz. durum_h).

Oturum
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/karar" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/kullanim

GET /api/musavir/v1/ai/kullanim — AI bütçesi + KVKK maskeleme izi.

Oturum
İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/kullanim" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/metin

BLE-7015/8084/8098 · AI Cevaplar defteri.

Oturum

🔴 SÜZGEÇ SORGUNUN İÇİNDEDİR (Paket 2 · 8009'un aynı dersi). limitten SONRA süzen bir uç, üç ay önce sorulmuş bir soru arandığında "sonuç yok" der — doğru cümle, YANLIŞ sebep; çünkü süzgeç yalnız en yeni 200 satırı görmüştür. Buradaki her yüklem SQL'dedir ve toplam süzgeçten SONRA, limitten ÖNCE sayılır: ekran "200'den fazlası var" diyebilsin. 🔴 TANINMAYAN SÜZGEÇ DEĞERİ BOŞ LİSTE DEĞİL 400'DÜR. durum=cevaplandı (Türkçe i) yazan bir çağrı sessizce sıfır satır alsaydı, kullanıcı "hiç cevaplanmış sorum yok" sonucunu çıkarırdı — oysa yazdığı değer hiç var olmayan bir durumdur.

İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/metin" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/metin

🔴 "Bugün" İSTEKTEN GELMEZ (MÜF22 · BLE22-15280): ?tarih= ile GELECEK dönemin faturaları

Oturum

erken kesilebiliyordu (dönem tekilliği yalnız ikinci kesimi önler, erkenini değil). Saati sunucu verir (worker ile aynı); zamanı ileri alan test ureti doğrudan çağırır.

İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/metin" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/metin/{id}/gonder

POST — belgeyi kuyruğa al ve HEMEN gönder.

OturumYol parametresi: id

🔴 e-İrsaliye MALIN ÖNÜNDEN GİDER: araç yola çıkmadan gönderilmesi gerekir, bu yüzden düğme bir tur bekletmez — kuyruk yalnız yeniden deneme içindir.

İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/metin/<id>/gonder" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/metin/konular

Konular

Oturum
İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/metin/konular" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/ongoru/vergi-yuku

Vergi yükü öngörüsü — **vergi_yuku_ongoru ölü koddan çıkarılıyor**.

Oturum

🔴 Girdisi DEFTERDİR, istemci değil (rasyo ucunun aynı dersi): hesaplanan/indirilecek KDV denetim_anomali::gostergeleri_topladan, önceki devreden ise dönemin KENDİ beyannamesinden okunur. Query string'den tutar alan bir öngörü, müşavirin yazdığı sayıyı ona geri okur. 🔴 Ölçülemeyen alan 0 SAYILMAZ: hesap eşlemesi girilmemiş büroda öngörü ÜRETİLMEZ (**409**), çünkü sıfır indirimle hesaplanan bir "ödenecek KDV" mükellefe ödemesi gerekmeyen bir parayı gösterir.

İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/ongoru/vergi-yuku" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/ozelge-sor

Sor

Oturum
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/ozelge-sor" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/semantik-ara

GET /mevzuat/ara — korpus geneli tam-metin arama.

Oturum

🔴 **AYRI UÇ, ÇÜNKÜ AYRI SÖZ** (P3'ün özelge feed'i kararı). GET /mevzuat kütüphane RAFIDIR: "hangi belgeler var, en son ne güncellendi" sorusuna guncellendi desc ile cevap verir ve maddeye hiç inmez. Bu uç "bu kural korpusun NERESİNDE yazıyor" sorusuna cevap verir; sıralaması alaka, birimi hükümdür. İkisini tek uca bayrakla sıkıştırmak, rafın listesine hiç işine yaramayan iki sorgu yüklemek ve o listenin vermediği bir sözü onun ağzına koymak olurdu.

İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/semantik-ara" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/ses-kaydi/{id}

Bir beyannamenin mükellefe görünen tam hâli.

OturumYol parametresi: id

🔴 404 mesajı "yetkiniz yok" DEMEZ ve dememeli: RLS satırı zaten elediği için başka bir müvekkilin beyannamesi ile hiç var olmayan bir id **ayırt edilemez** — ayırt edilebilseydi uç, "bu büroda şu id'de bir beyanname var mı" sorusunu cevaplayan bir sızıntı olurdu.

İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/ses-kaydi/<id>" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/ses-kaydi/{id}/yeniden

Yeniden

OturumYol parametresi: id
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/ses-kaydi/<id>/yeniden" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/soru-duzelt

Duzelt

Oturum
İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/soru-duzelt" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/toplu-girdi

Bakiye + defter.

Oturum
İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/toplu-girdi" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/toplu-girdi

Belgeyi arşive yaz VE sözleşmeye bağla (tek çağrı).

Oturum

🔴 mukellef_ref GÖVDEDEN OKUNMAZ — sözleşmeden türetilir. Gövdeden alınsaydı, kapsam kapısını sözleşme üzerinden geçen bir personel, belgeyi BAŞKA bir müvekkilin dosyasına arşivleyebilirdi (portal.rs'in aynı kuralı: kimlik gövdeden gelmez).

İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/toplu-girdi" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/toplu-girdi/{id}

Bir beyannamenin mükellefe görünen tam hâli.

OturumYol parametresi: id

🔴 404 mesajı "yetkiniz yok" DEMEZ ve dememeli: RLS satırı zaten elediği için başka bir müvekkilin beyannamesi ile hiç var olmayan bir id **ayırt edilemez** — ayırt edilebilseydi uç, "bu büroda şu id'de bir beyanname var mı" sorusunu cevaplayan bir sızıntı olurdu.

İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/toplu-girdi/<id>" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
POST/api/musavir/v1/ai/transkript

Kuyruğu ELLE bir tur işlet.

Oturum

🔴 Bu uç bir kolaylık değil bir GEREKLİLİK: worker varsayılan KAPALI ve kuyruk_isle yalnız worker'dan çağrılsaydı, bayrağı açmamış bir kurulumda kuyruk sessizce sonsuza kadar dolardı (satis_fatura::kuyruk_islein *"tanımlıydı ama hiçbir uçtan çağrılmıyordu"* dersi). Ayrıca testin worker döngüsü kurmadan kuyruğu yürütmesini sağlar.

İstek
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/transkript" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
GET/api/musavir/v1/ai/transkript/{id}/aksiyonlar

Aksiyon

OturumYol parametresi: id
İstek
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/transkript/<id>/aksiyonlar" \
  -H "Authorization: Bearer <oturum-token>" \
  -H "Accept: application/json"
Yanıt
{
  "data": "…",
  "trace_id": "01JC…"
}
Bu sayfa işine yaradı mı?