Müşavir

personel

12 uç · /api/musavir/v1/personel

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

GET/api/musavir/v1/personel

List

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

Personel ekle. **Koltuk kotası** (musavir.staff_seats) burada zorlanır: kota dolduysa

Oturum

403 MUSAVIR/CAP/1 (upsell). Kota kapısı YAZMADAN ÖNCE — aksi halde plan aşılır ve geri alınması gereken bir kayıt doğar.

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

Patch

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

POST /personel/{id}/atamalar — personelin portföyünü TOPLU kur/boşalt.

OturumYol parametresi: id

🔴 **ATAMA GÖRÜNÜRLÜK AÇAR** (mukellef::gorunurluk) — yani atamak, YETKİ VERMEKTİR. Bu yüzden iki kapı birden gerekir ve ikisi de "veremediğini veremezsin" der: 1. **Hedef personel** çağıranın kapsamında olmalı (kapsamda_mi → 404). Değilse yönetici, göremediği birine portföy açardı. 2. **Her müvekkil** çağıranın kapsamında olmalı — **hepsi ya da hiçbiri** (hepsi_gorunur_mu → 403). Kapsam dışı olanları sessizce ELEMEK cazip görünür ama yanlış: yanıt "42 müvekkil atandı" derken kullanıcı 50 sanır ve farkı ASLA görmez (mukellef::hepsi_gorunur_mu doküman notunun birebir gerekçesi).

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

Personelin birim kapsamını ayarla — çekirdek set_member_scope_by'a proxy. Personelin

OturumYol parametresi: id

user_ref'i üstünden çalışır; kayıt çekirdekte (core.tenant_users.data_scope + core.member_locations) tutulur. 🔴 **BU UÇ KAPSAM DAĞITIR** ve iki kapısı birden eksikti (MÜF21 Paket 1 · BLE22-8796): 1. **Hedef kapsam körüydü.** personel_user_ref yalnız tenant-RLS'ten geçer; location kapsamlı bir yönetici BAŞKA şubenin personelinin kapsamını düzenleyebiliyordu. Çare atama_ekle_hin (BLE-7192) kapısının aynısı: kapsamda_mi → 404. 2. **Yükseltme kapısı yoktu.** Çağıran kendine all yazabiliyordu; kapı artık çekirdekte, tek yazarın üstünde (scope::set_member_scope_by). ⚠️ İki kapı AYNI SORUYU sormaz ve biri öbürünün yerine geçmez: birincisi *"bu personeli yönetebilir misin"*, ikincisi *"bu kapsamı verebilir misin"*. Yalnız birincisi olsaydı yönetici KENDİ kaydına all yazardı (kendisi her zaman kendi kapsamındadır).

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

GET /personel/{id}/erisim — **"bu personel hangi müvekkili görüyor ve NEDEN?"**

OturumYol parametresi: id

Kapsam motoru (data_scope + atama + vekâlet) baştan beri vardı ve MÜF21 Paket 0'da DB'ye de indirildi; eksik olan onu YÖNETENİN görebileceği bir yüzeydi. Atama yalnız MÜKELLEF ekseninde açılabiliyordu (/mukellefler/{id}/atama) — yani "yeni personelin portföyünü kur" işi 200 müvekkili tek tek açmak demekti, "bu kişi neyi görüyor?" sorusunun ise cevabı YOKTU. Erişimi denetleyemeyen bir yönetici onu yönetemez. 🔴 **LİSTE ÇAĞIRANIN KAPSAMIYLA KESİŞİR.** Hedef personel all kapsamlıysa listesi büronun TAMAMIDIR; onu olduğu gibi basmak, dar kapsamlı bir yöneticiye göremediği müvekkillerin unvan+VKN'sini vermek olurdu — erişim raporunun kendisi bir sızıntıya dönüşürdü. Kesişim alınır ve **gizlenen sayısı SÖYLENİR** (gizlenen): "boş liste" ile "senin göremediğin N kayıt var" farklı cevaplardır (beyanname_parti::parti_getir ile aynı doktrin). # Errors Kapsam dışı/olmayan personel → 404.

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

Personel-ayrılış portföy devri (BLE-7512). {id} = ayrılan personel; devralan = hedef.

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

Vekâlet ata. {id} = asıl personel (izinli/tatilde olan). İK/portföy kararı → personel.manage.

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

"Personel ekle" adaylarını listele. Yalnız yönetici (personel.manage) görür — aday listesi

Oturum

eklemeden önce bakılan bir şeydir; salt-görüntüleyene sunmak yapamayacağı bir işi teklif ederdi.

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

Resmî takvimle karşılaştırma — **HİÇBİR ŞEY YAZMAZ**.

Oturum

🔴 Eski POST …/senkron ucu KALDIRILDI. "Senkron" kelimesi bir yazma vaat ediyordu ve bağlandığında gerçekten yazacak biçimde okunuyordu; oysa kaynak "uzatıldı" demediği için yazmaya yetecek bilgi HİÇBİR ZAMAN gelmeyecek (takvim_kaynak modül belgesi). Uç adıyla birlikte doğru hâline getirildi: GET …/oneriler bir SORU sorar. İzin ayarlar.manage: öneri yalnız o izne sahip biri tarafından uygulanabilir ve tur dışarıya 1-5 HTTP isteği çıkarır.

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

Performans

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

GET /personel/secim — sözleşme müşaviri seçici/çözücü listesi. Kapı mukellef.view

Oturum

(müşavir bir sözleşme alanı); kapsam süzgeci [list] ile aynı; ad çekirdekten çözülür.

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