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.
Bir oturumun geçmişi (ekran yenilendiğinde konuşma kaybolmasın).
oturumcurl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/asistan/<oturum>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}BLE-7015/8084/8098 · AI Cevaplar defteri.
🔴 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.
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/cevaplar" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/cevaplar/karar" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}BLE-7015 · kalite puanı. Yalnız CEVAPLANMIŞ bir soru puanlanabilir — reddedilen bir cevaba
yıldız vermek, reddin kendisini "kalite" gibi göstermek olurdu.
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/cevaplar/yildiz" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}BLE-7015/8084/8098 · AI Cevaplar defteri.
🔴 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.
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/firsatlar" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Katalog — ekran alan seçicisini BUNDAN çizer, kendi listesini UYDURMAZ.
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/firsatlar/katalog" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}🔴 "Bugün" İSTEKTEN GELMEZ (MÜF22 · BLE22-15280): ?tarih= ile vadesi gelmemiş alacak için
şüpheli alacak karşılığı ÖNERİSİ üretilebiliyordu — insan onaylarsa yanlış karşılık fişi deftere girer. Saati sunucu verir.
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/firsatlar/tara" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}AI denetim izi — "ne önerildi, kim ne karar verdi, neden, neye dayanarak".
🔴 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.
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/izler" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST /gizlilik/karar — **izin İSTEMEZ ve kısıt kapısının muafıdır** (bkz. durum_h).
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/karar" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}BLE-7015/8084/8098 · AI Cevaplar defteri.
🔴 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.
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/metin" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}🔴 "Bugün" İSTEKTEN GELMEZ (MÜF22 · BLE22-15280): ?tarih= ile GELECEK dönemin faturaları
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.
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/metin" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}POST — belgeyi kuyruğa al ve HEMEN gönder.
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.
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/metin/<id>/gonder" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Vergi yükü öngörüsü — **vergi_yuku_ongoru ölü koddan çıkarılıyor**.
🔴 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.
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/ongoru/vergi-yuku" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}GET /mevzuat/ara — korpus geneli tam-metin arama.
🔴 **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.
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/semantik-ara" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Bir beyannamenin mükellefe görünen tam hâli.
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.
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/ses-kaydi/<id>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Belgeyi arşive yaz VE sözleşmeye bağla (tek çağrı).
🔴 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).
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/toplu-girdi" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Bir beyannamenin mükellefe görünen tam hâli.
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.
curl -X GET "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/toplu-girdi/<id>" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}Kuyruğu ELLE bir tur işlet.
🔴 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.
curl -X POST "https://{slug}.musavir.blesyum.app/api/musavir/v1/ai/transkript" \
-H "Authorization: Bearer <oturum-token>" \
-H "Accept: application/json"{
"data": "…",
"trace_id": "01JC…"
}