Market'e dön
Araçlar

Numex İşletme — Sipariş, Stok ve Risk Paneli

Açık Kaynak · Ücretsiz · Numex AI üretimi

Küçük işletme için yönetim paneli: müşteri, sipariş, stok, ödeme ve teslimat. Aynı anda gelen siparişlerde çift satış ve eksi stok olmaz, ödeme sırasında sunucu çökerse açılışta kurtarılır, geciken siparişler kanıtıyla risk listesine düşer; müşteri silme gibi yıkıcı işlemler onaysız yapılmaz. Express + SQLite; canlı demoda veriler 30 dakikada bir sıfırlanır.

Ekran Görüntüleri

Numex İşletme — Sipariş, Stok ve Risk Paneli ekran görüntüsü 1Numex İşletme — Sipariş, Stok ve Risk Paneli ekran görüntüsü 2

Doküman (README)

Numex İşletme — Dijital İşletme Yönetimi

Frontend + backend + kalıcı veri katmanı çalışan, operasyonel tutarlılığı önceleyen işletme yönetim uygulaması.

Çalıştırma

npm install
npm run seed        # izole demo veri (4 ürün, 3 müşteri)
npm start           # http://localhost:4173 (port doluysa boş port)

Panel: tarayıcıda açılan adres. API: http://localhost:<port>/api/...

Mimari

┌──────────────────────────────────────────────┐
│  public/index.html — Operasyon Paneli        │
│  Panel · Siparişler · Stok · Müşteriler       │
│  Teslimat · Risk İzleme · Operasyon Kayıtları │
└───────────────────┬──────────────────────────┘
                    │ fetch /api/*
┌───────────────────▼──────────────────────────┐
│  server/api.js — Express                     │
│  ├── YETKİ KAPISI (403 + gerekçe + karar)    │
│  ├── rotalar (müşteri, sipariş, ödeme...)    │
│  └── statik panel                            │
├──────────────────────────────────────────────┤
│  server/isletme.js — iş mantığı              │
│  ├── siparisOlustur  (BEGIN IMMEDIATE)       │
│  ├── odemeAl / odemeKesinlestir (idempotent) │
│  └── teslimatGuncelle / siparisIptal         │
├──────────────────────────────────────────────┤
│  server/risk.js — kurtarma + risk motoru     │
│  ├── kurtarmaCalistir()  (açılışta)          │
│  └── riskTarama() / oneriUret()              │
├──────────────────────────────────────────────┤
│  server/db.js — SQLite (WAL, synchronous=FULL)│
│  data/isletme.db  ← kalıcı veri              │
└──────────────────────────────────────────────┘

Veri tutarlılığı kuralları (diske gömülü)

| Kural | Nerede | |-------|--------| | Negatif stok imkânsız | CHECK (stok >= 0) + trigger trg_products_stok_guard | | Aşırı rezervasyon imkânsız | UPDATE ... WHERE stok - rezerve >= adet (tek ifadede kontrol+yazma) | | Sipariş başına tek başarılı ödeme | UNIQUE INDEX ux_payments_basarili WHERE durum='BASARILI' | | Aynı idempotency anahtarı tek kez | UNIQUE INDEX ux_payments_idem, orders.idempotency_key UNIQUE | | Çökmede veri kaybı yok | WAL + synchronous=FULL, niyet yazımı tahsilattan önce | | Belirsiz ödeme otomatik tekrarlanmaz | kurtarmaCalistir() → yarimKalan (operatör onayı) |

Sınavlar

node scripts/sinavlar.mjs           # SINAV 1, 3, 4
node scripts/sinav2-hazirla.mjs     # SINAV 2 çökme anını kurgular

SINAV 2 tam akış: hazırla → süreci öldür → yeniden başlat → GET /api/orders/<id> (durum ODENDI, tek ödeme).

API

| Metot | Yol | Açıklama | |-------|-----|----------| | GET | /api/dashboard | Panel özeti | | GET/POST | /api/customers | Müşteri listele / ekle | | GET/POST | /api/orders | Sipariş listele / oluştur (stok rezerve) | | GET | /api/orders/:id | Sipariş detayı + risk | | POST | /api/orders/:id/pay | Ödeme simülasyonu (idempotency_key) | | POST | /api/orders/:id/shipment | Teslimat durumu | | POST | /api/orders/:id/cancel | İptal (rezervasyon serbest) | | GET | /api/products | Stok (stok, rezerve, kullanılabilir) | | GET | /api/risk | Risk bulguları + kanıt + öneri | | GET | /api/ops, /api/decisions | Operasyon ve karar kayıtları |

Reddedilen işlemler: DELETE /api/customers/:id, DELETE /api/orders/:id, POST /api/files, POST /api/db/* → 403 YETKISIZ_ISLEM + gerekçe.

Yapılmayanlar (bilinçli)

  • Gerçek ödeme sağlayıcısı bağlanmadı (simülasyon).
  • Gerçek müşteriye mesaj gönderilmedi; dış sistem değiştirilmedi.
  • Müşteri/sipariş kaydı silme ucu yok (iptal/arşivleme tercih edilir).
  • Riskli siparişlerde otomatik aksiyon yok; yalnız tespit + öneri.

Ayrıntılı kararlar: KARAR_DEFTERI.md.