PDF olarak kaydetmek icin Ctrl+P → "PDF olarak kaydet"

# SteelServer — Etiket Islemleri Senaryolari v2

tagOpProcessor v2 — Tum Senaryolar, Kontroller ve Akislar | Tarih: 31.03.2026

## Genel Isleyis

Her islem icin etiketler paralel sorgulanir, 4 gruba ayrilir:

Grup | Kosul | Oncelik
--- | --- | ---
Islem Gormemis | Kabul yok, envanter yok, bag yukleme yok, sevk yok | 4 (en dusuk)
Envanterde | kabulEdilmis VEYA envanterde (ikisi ayni grup) | 3
Bag Yuklemede | bagYuklemede === true (plaka bilgisi alinir) | 2
Sevkiyatta | sevkEdilmis === true (plaka + sevkNo bilgisi alinir) | 1 (en yuksek)

Onemli: "Kabul edilmis" = "Envanterde" olarak islem gorur. Ayri bir grup degil.

## Temel Kurallar

# | Kural | Aciklama
--- | --- | ---
K1 | Herhangi bir hata → tum islem durur | Kismi basari yok. 1 etiket hata alirsa bile tum islem hata olarak kaydedilir.
K2 | Her adim sonrasi tekrar sorgulama | 14 etiketin tamami paralel sorgulanarak durum degisiklikleri tespit edilir.
K3 | Tum sorgular ve islemler paralel | Promise.all ile es zamanli istek atilir.
K4 | Oturum kontrolu her adim oncesi | waitForHealthySessions — App + Web oturum sagliklimi?

## On Kontroller (Tum Islem Turleri)

# | Durum | Davranis
--- | --- | ---
0a | Etiket sorgu hatasi (1+ sorgulanamadi) | HATA — "X etiket sorgulanamadi"
0b | Bir etiket hem bag yuklemede hem sevkiyatta | HATA — "Tutarsiz etiket"
0c | taslak_sevk: Bag yuklemedeki etiketlerin plakasi ≠ giden plaka | HATA — "Plaka uyusmuyor"
0d | gercek_sevk: Bag yuklemede + sevkiyattaki etiketlerin plakasi ≠ giden plaka | HATA — "Plaka uyusmuyor"
0e | gercek_sevk: Sevkiyattaki etiketlerin sevk numaralari farkli | HATA — "Farkli sevk numaralari"

## Islem Turu: ETIKET KABUL

### Akis

14 etiket → PARALEL SORGU (14 istek)
↓
Islem gormemis (2) → PARALEL KABUL (2 istek) → hata varsa DURDUR
↓
Bu 2 etiketi TEKRAR SORGULA → kabul edilmis mi? → hayir ise HATA
↓
BASARILI — "2/14 etiket kabul edildi, 12 zaten islem gormis"

# | Durum | Davranis | Sonuc
--- | --- | --- | ---
K1 | 2 islem gormemis, 12 diger | 2 kabul + dogrulama, 12 atlanir | OK "2 kabul edildi, 12 zaten islem gormis"
K2 | 14 islem gormemis | 14 paralel kabul + dogrulama | OK "14 kabul edildi"
K3 | 0 islem gormemis (hepsi envanter/bag/sevk) | Islem yok | OK "Tamami zaten islem gormis"
K4 | Kabul sirasinda 1 basarisiz | Tum islem durur | HATA
K5 | Kabul sonrasi dogrulama basarisiz | Tum islem durur | HATA

## Islem Turu: TASLAK SEVK

### Akis

14 etiket → PARALEL SORGU (14 istek)
↓
Islem gormemis (2) → BAG KABUL → hata varsa DURDUR
↓
14 ETIKETI TEKRAR SORGULA (14 istek) → gruplari guncelle
↓
Envanterdeki (4) → PARALEL TASLAK SEVK (4 istek, giden plaka ile) → hata varsa DURDUR
↓
Bu 4 etiketi TEKRAR SORGULA → bag yuklemede mi + plaka dogru mu? → hayir ise HATA
↓
BASARILI — "4 etiket bag yuklemeye alindi"

# | Durum | Davranis | Sonuc
--- | --- | --- | ---
T1 | 2 islem gormemis, 2 envanterde, 5 bag yuk, 5 sevk | 2 kabul → tekrar sorgula → 4 envanter taslak sevk | OK
T2 | 14 envanterde | 14 paralel taslak sevk | OK
T3 | 0 islem gormemis, 0 envanterde | Islem yok (hepsi bag yuk/sevk) | OK
T4 | Bag yuklemedeki plaka ≠ giden plaka | On kontrol hatasi | HATA "Plaka uyusmuyor"
T5 | Taslak sevk sirasinda hata | Tum islem durur | HATA

## Islem Turu: GERCEK SEVK

### Tam Akis

14 etiket → PARALEL SORGU (14 istek) → on kontroller
↓
ADIM 1: Islem gormemis (2) → BAG KABUL → hata varsa DURDUR
↓
14 ETIKETI TEKRAR SORGULA (14 istek) → gruplari guncelle
↓
ADIM 2: Envanterdeki (4) → TASLAK SEVK (giden plaka ile) → hata varsa DURDUR
↓
14 ETIKETI TEKRAR SORGULA (14 istek) → gruplari guncelle
↓
ADIM 3: Sevkiyatta etiket var mi?
EVET (5 sevkiyatta): Bag yuklemedeki 9 etiket → MEVCUT SEVKE DAHIL ET (9 paralel istek, tek tek) → hata varsa DURDUR
HAYIR (0 sevkiyatta): Bag yuklemedeki 14 etiket → GERCEK SEVK (bulk-real-dispatch) → hata varsa DURDUR
↓
SON DOGRULAMA: Islem goren etiketleri sorgula → sevkiyatta mi + plaka dogru mu + sevkNo ayni mi?
↓
BASARILI — "Sevk tamamlandi — sevkNo: SE-XXX"

### Durum A: Sevkiyatta Etiket VAR (Mevcut Sevke Dahil Et)

# | Durum | Davranis | Sonuc
--- | --- | --- | ---
G1 | 5 sevk (SE-123), 9 bag yukleme | 9 etiket tek tek paralel → /add-to-dispatch (sevkNo: SE-123) | OK
G2 | 5 sevk, 5 bag yuk, 2 env, 2 islem gormemis | 2 kabul → tekrar sorgula → 4 taslak sevk → tekrar sorgula → 9 mevcut sevke dahil | OK
G3 | Son dogrulama: 1 etiket sevkiyatta degil | — | HATA
G4 | Son dogrulama: plaka uyusmuyor | — | HATA
G5 | Son dogrulama: sevkNo uyusmuyor | — | HATA

### Durum B: Sevkiyatta Etiket YOK (Yeni Sevkiyat)

# | Durum | Davranis | Sonuc
--- | --- | --- | ---
G6 | 0 sevk, 10 bag yuk, 2 env, 2 islem gormemis | 2 kabul → tekrar sorgula → 4 taslak sevk → tekrar sorgula → 14 gercek sevk (bulk) | OK
G7 | 0 sevk, 14 bag yukleme | 14 gercek sevk (bulk) | OK
G8 | Son dogrulama: 1 etiket sevkiyatta degil | — | HATA
G9 | Son dogrulama: plaka uyusmuyor | — | HATA
G10 | Son dogrulama: sevkNo'lar farkli | — | HATA

## Detayli Akis Ornekleri

### Ornek 1: 14 Etiket — Gercek Sevk (Tam Akis, Sevkiyatta Etiket Yok)

    BASLANGIÇ: 2 islem gormemis, 2 kabul edilmis, 2 envanterde, 8 bag yuklemede, 0 sevkiyatta
    Giden Plaka: 31AZN616

    [1] PARALEL SORGU (14 istek) ✓
        Islem Gormemis: 2  |  Envanterde: 4 (2 kabul + 2 envanter)  |  Bag Yuk: 8  |  Sevk: 0

    [2] ON KONTROLLER ✓
        Bag yuklemede plaka kontrolu: 8 etiketin tamami 31AZN616 ✓

    [3] ADIM 1: BAG KABUL (2 paralel istek)
        ✓ EG0162297 kabul edildi
        ✓ EG0162298 kabul edildi
        Dogrulama (2 istek): 2/2 kabul edilmis ✓

    [4] TEKRAR SORGULA (14 istek)
        Islem Gormemis: 0  |  Envanterde: 6 (4 + 2 yeni kabul)  |  Bag Yuk: 8  |  Sevk: 0

    [5] ADIM 2: TASLAK SEVK (6 paralel istek, plaka: 31AZN616)
        ✓ 6 etiket taslak sevk edildi
        Dogrulama (6 istek): 6/6 bag yuklemede, plaka dogru ✓

    [6] TEKRAR SORGULA (14 istek)
        Islem Gormemis: 0  |  Envanterde: 0  |  Bag Yuk: 14  |  Sevk: 0

    [7] ADIM 3: Sevkiyatta etiket YOK → GERCEK SEVK (bulk-real-dispatch, 14 etiket)
        ✓ Sevkiyat olusturuldu — sevkNo: SE-2351313

    [8] SON DOGRULAMA (14 istek)
        14/14 sevkiyatta ✓  |  Plaka: 31AZN616 ✓  |  SevkNo: SE-2351313 ✓

    SONUC: ✓ BASARILI — "Sevk tamamlandi — sevkNo: SE-2351313"
    TOPLAM API ISTEGI: 14 + 2 + 2 + 14 + 6 + 6 + 14 + 1 + 14 = 73

### Ornek 2: 14 Etiket — Gercek Sevk (Mevcut Sevke Dahil)

    BASLANGIÇ: 2 islem gormemis, 2 envanterde, 5 bag yuklemede, 5 sevkiyatta (SE-123, plaka: 31AZN616)
    Giden Plaka: 31AZN616

    [1] PARALEL SORGU (14 istek) ✓
    [2] ON KONTROLLER ✓ (bag yuk plaka OK, sevk plaka OK, sevkNo hep SE-123)

    [3] ADIM 1: BAG KABUL (2 paralel istek) ✓ + dogrulama (2 istek) ✓
    [4] TEKRAR SORGULA (14 istek) → Env: 4, Bag: 5, Sevk: 5

    [5] ADIM 2: TASLAK SEVK (4 paralel, plaka: 31AZN616) ✓ + dogrulama (4 istek) ✓
    [6] TEKRAR SORGULA (14 istek) → Bag: 9, Sevk: 5

    [7] ADIM 3: Sevkiyatta etiket VAR → MEVCUT SEVKE DAHIL ET
        9 etiket tek tek paralel → /add-to-dispatch (sevkNo: SE-123) ✓

    [8] SON DOGRULAMA (14 istek)
        14/14 sevkiyatta ✓  |  Plaka: 31AZN616 ✓  |  SevkNo: SE-123 ✓

    SONUC: ✓ BASARILI — "Sevk tamamlandi — sevkNo: SE-123"
    TOPLAM API ISTEGI: 14 + 2 + 2 + 14 + 4 + 4 + 14 + 9 + 14 = 77

### Ornek 3: 14 Etiket — Taslak Sevk

    BASLANGIÇ: 2 islem gormemis, 2 envanterde, 5 bag yuklemede, 5 sevkiyatta
    Giden Plaka: 31AZN616

    [1] PARALEL SORGU (14 istek) ✓
    [2] ON KONTROLLER ✓

    [3] ADIM 1: BAG KABUL (2 paralel) ✓ + dogrulama (2 istek) ✓
    [4] TEKRAR SORGULA (14 istek) → Env: 4, Bag: 5, Sevk: 5

    [5] ADIM 2: TASLAK SEVK (4 paralel, plaka: 31AZN616) ✓ + dogrulama (4 istek) ✓

    SONUC: ✓ BASARILI — "4 etiket bag yuklemeye alindi"
    TOPLAM API ISTEGI: 14 + 2 + 2 + 14 + 4 + 4 = 40

### Ornek 4: 14 Etiket — Kabul

    BASLANGIÇ: 2 islem gormemis, 12 diger (envanter/bag/sevk)

    [1] PARALEL SORGU (14 istek) ✓

    [2] BAG KABUL (2 paralel istek) ✓ + dogrulama (2 istek) ✓

    SONUC: ✓ BASARILI — "2 etiket kabul edildi, 12 zaten islem gormis"
    TOPLAM API ISTEGI: 14 + 2 + 2 = 18

## Hata Senaryolari

# | Hata Noktasi | Davranis | Sonuc
--- | --- | --- | ---
H1 | Ilk sorgu sirasinda 1 etiket sorgulanamadi | Tum islem durur | HATA
H2 | Tutarsiz etiket (hem bag yuk hem sevk) | Tum islem durur | HATA
H3 | Bag yuklemede plaka ≠ giden plaka | On kontrol, islem baslamaz | HATA
H4 | Sevkiyatta farkli sevk numaralari | On kontrol, islem baslamaz | HATA
H5 | Kabul sirasinda 1 etiket basarisiz | Tum islem durur | HATA
H6 | Kabul dogrulama basarisiz | Tum islem durur | HATA
H7 | Taslak sevk sirasinda hata | Tum islem durur | HATA
H8 | Taslak sevk dogrulama: bag yuklemede degil | Tum islem durur | HATA
H9 | Mevcut sevke dahil etme sirasinda hata | Tum islem durur | HATA
H10 | Gercek sevk (bulk) portal hatasi | Tum islem durur | HATA
H11 | Son dogrulama: etiket sevkiyatta degil | — | HATA
H12 | Son dogrulama: plaka uyusmuyor | — | HATA
H13 | Son dogrulama: sevkNo tutarsiz | — | HATA
H14 | Tekrar sorgulama sirasinda hata | Tum islem durur | HATA
H15 | Oturum zaman asimi (30 dk) | Tum islem durur | HATA

## API Endpoint'leri

Islem | Endpoint | Metod | Parametreler
--- | --- | --- | ---
Etiket Sorgula | `/etiket-sorgu/api/query` | GET | `tagSerialNumber`
Bag Kabul | `/etiket-sorgu/api/accept` | POST | `{tagSerialNumber}`
Taslak Sevk | `/etiket-sorgu/api/draft-dispatch` | POST | `{tagSerialNumber, plateNumber}`
Mevcut Sevke Dahil | `/etiket-sorgu/api/add-to-dispatch` | POST | `{tags: [tag], dispatchNumber}`
Gercek Sevk | `/etiket-sorgu/api/bulk-real-dispatch` | POST | `{tags: [{tag}]}`
Irsaliye Listesi | `irsaliyeocr.steelserver.net/api/ocr/hazar/list` | GET | `page`
Islem Olustur | `irsaliyeocr.steelserver.net/api/ocr` | POST | `{mode:"saved", savedb, type:"elle", irsaliyeler:[...]}`

## Oturum Yonetimi

Durum | Davranis
--- | ---
Her islem adimi oncesi | `waitForHealthySessions` — App + Web oturum kontrolu
Oturum dustu | 30 sn aralikla polling, max 30 dk bekleme
30 dk timeout | Islem HATA olarak kaydedilir
pendingStop (toggle kapatildi) | Mevcut islem tamamlanir, dongu durur

SteelServer — Etiket Islemleri Senaryo Dokumani v2 | 31.03.2026