Araştırmaya Dön

MİMARİ & TASARIM KARARLARI

Bölüm 1 — Neden modüler monolit ve nasıl inşa edildi

Şubat 2026 • Solen Kablo • Yaşayan Doküman

Mimari önceden tasarlanmadı — ortaya çıktı. Veritabanı her modül inşa edildikçe gelişti. Framework seçimleri pragmatik nedenlerle yapıldı: geliştirme hızı, GUI işini ortadan kaldıran bileşen kütüphaneleri ve tek bir Mac Mini üzerinden fabrika zemininde çalışabilme yeteneği. Bu doküman neyin seçildiğini, neden seçildiğini ve ödün vermelerin ne olduğunu kaydeder.

MODÜLER
MONOLİT
MİMARİ
FastAPI
+ React
STACK
SQLite
→ Postgres
VERİTABANI
25+
API Yolu
ENDPOINT

İÇİNDEKİLER

1. Mimari: Modüler Monolit 2. Teknoloji Stack’i 3. Tasarım Kuralları 4. API Tasarımı 5. Veritabanı Stratejisi 6. Frontend Mimarisi 7. AI Entegrasyonu 8. Ağ & Deployment 9. Evrim Yolu

1. MİMARİ: MODÜLER MONOLİT

Sistem bir Modüler Monolit’tir — açıkça ayrılmış dahili modüllere sahip, tek bir veritabanını paylaşan tek bir uygulama. Mikroservis değil. Geleneksel monolit değil. Aradaki ideal nokta.

Geleneksel Monolit

Tek kod tabanı, modül ayrımı yok. Her şey iç içe. Bu değil.

Modüler Monolit ← BU

Tek uygulama, net modül sınırları, paylaşılan veritabanı. 10–12 makineli ve sınırlı eş zamanlı kullanıcılı bir fabrika için doğru ölçekte.

Mikroservisler

Ayrı veritabanlarına sahip bağımsız servisler. Bu ölçek için aşırı. Ağ gecikmesi, dağıtık işlem karmaşıklığı ve operasyonel yük ekler.

Neden Mikroservis Değil?

Ödün verme bilinmektedir: Veritabanı çöktüğünde her şey çöker. Tüm modüller tek bir SQLite/PostgreSQL örneğini paylaşır — tek bir arıza noktası vardır. Yerinde donanıma sahip bir fabrika ERP’si için bu kabul edilebilir bir ödün vermedir.

2. TEKNOLOJİ STACK’İ

Backend

KatmanTeknolojiVersiyonNeden
FrameworkFastAPI≥0.110Async Python, otomatik OpenAPI dokümantasyonu, dahili dependency injection
SunucuUvicorn≥0.27ASGI sunucu, async + WebSocket desteği
ORMSQLAlchemy 2.0≥2.0.25Veritabanı bağımsız — aynı kod SQLite ve PostgreSQL’de çalışır
ValidasyonPydantic 2≥2.6Tip güvenli istek/yanıt doğrulaması, otomatik JSON serileştirme
Authpython-jose + passlibJWT token (HS256), bcrypt şifre hashleme, 12s erişim / 7g yenileme
Veritabanı (dev)SQLiteSıfır konfigurüasyon, dosya tabanlı, tek sunucu deployment için ideal
Veritabanı (prod)PostgreSQL 1515.xBağlantı havuzu (20 temel + 40 taşma), üretim düzeyi
QR Kodqrcode + Pillow≥7.4Malzeme takibi — her sepet/makaraya basılı QR etiketi
Yazdırmareportlab + socketFabrika ağı üzerinden doğrudan Epson termal yazıcı iletişimi

Frontend

KatmanTeknolojiVersiyonNeden
FrameworkReact19.1Bileşen tabanlı UI, geniş ekosistem
DilTypeScript5.xTüm frontend’te tip güvenliği
UI KütüphanesiAnt Design Pro 66.0Kurumsal bileşenler — tablolar, formlar, layoutlar, grafikler kutudan çıkar
BuildUmiJS Max4.0.7Ant Design Pro’nun build sistemi — yönlendirme, durum yönetimi, istek işleme
GrafiklerECharts6.0Üretim panoları, stok projeksiyonları, makine kullanımı
Sürükle Bırakreact-dnd16.xKablo tasarım playground’u, palet düzenleme

Neden Ant Design Pro? En önemli tek framework seçimi. Kablo fabrikası ERP’si %80 tablo, form ve CRUD ekranıdır. Ant Design Pro bunların hepsini dahili Türkçe yerelleshtirme, responsive layoutlar, rol tabanlı menüler ve karanlık mod ile üretim hazır olarak sunar. Bunları sıfırdan yazmak aylarca eklerdi.

3. TASARIM KURALLARI

Kural 1: Türkçe-Öncelikli Arayüz

Her UI etiketi, her hata mesajı, her bildirim Türkçe. Fabrika operatörleri İngilizce konuşmaz. Ant Design yerel ayarı Türkçe’ye kilitli. AI promptları Türkçe.

Kural 2: Her Şeye QR Kod

Fabrikada hareket eden her fiziksel nesne girişte QR kod basılır. Ham bakır sepetleri, kalaylı bakır sepetleri, makaralar, bitmiş kablolar — hepsi taranabilir. QR kod, o nesnenin sistemdeki tüm geçmişine bağlantı sağlar.

Kural 3: Üç Kullanıcı Rolü, Fazlası Yok

RolErişimArayüzCihaz
Süper AdminHer şey — ham veritabanı sorguları, zorla silme, AI ayarları dahilMasaüstüPC
Lab KullanıcısıTest standartları, test sonuçları, malzeme denetimi, kalite kontrolMasaüstüPC
OperatörÜretim oturumları, malzeme tarama, makineye özel görünümlerMobil-öncelikliTelefon/Tablet

Kural 4: Tasarım Üretimi Yönlendirir

Kablo tasarımı tek doğruluk kaynağıdır. Bir tasarım Cable Playground’da oluşturulduğunda, tüm üretim akışını kodlar — her makine adımı, her malzeme gereksinimi, her test. Siparişler tasarımlara referans verir. İş kartları tasarımlardan üretilir. Hiçbir şey sipariş başına manuel konfigure edilmez.

Kural 5: Erken Optimizasyon Yok

Geliştirmede SQLite. Gerektiğinde PostgreSQL. Ölçülmüş bir performans problemi olana kadar Redis cache yok. Senkron işlemenin yetersiz olduğu kanıtlanana kadar mesaj kuyruğu yok. Çalışan en basit şeyi inşa et, ölç, sonra optimize et.

4. API TASARIMI

Backend, port 8000’de çalışan tek bir FastAPI uygulamasına monte edilmiş 25’ten fazla router grubu sunar. Her endpoint aynı deseni izler:

@router.get("/endpoint")
async def get_something(
    db: Session = Depends(get_database),          # DB oturumu enjekte edilir
    current_user: User = Depends(get_current_user) # Auth enjekte edilir
):
    # İş mantığı burada
    return result

Temel Desenler

5. VERİTABANI STRATEJİSİ

Veritabanı önceden tasarlanmadı. Her modül inşa edildikçe organik olarak büyüdü. Bu kasıtlıdır — alan, anlaşılmadan önce bir şema tasarlamak için çok karmaşıktı.

SQLite
Geliştirme
PostgreSQL 15
Üretim
Read Replikalar
Gerekirse

SQLAlchemy ORM, aynı Python kodunun her iki veritabanına karşı çalışmasını sağlar. Geçiş yalnızca DATABASE_URL ortam değişkenini değiştirmeyi gerektirir.

Neden Alembic değil? Şemanın hızla geliştiği tek geliştiricili bir sistem için, IF NOT EXISTS korumalarıyla elle yazılmış migration scriptleri, otomatik üretilen migration’lardan daha basit ve öngörülebilirdir.

6. FRONTEND MİMARİSİ

Frontend, Ant Design Pro ile inşa edilmiş, rol tabanlı menüler aracılığıyla tüm modüllere hizmet veren tek bir React uygulamasıdır.

src/pages/
├── Dashboard/              # Ana Panel — genel bakış + AI sohbet
├── Lab/                    # Laboratuvar — testler, malzeme denetimi
├── Teknik/                 # Teknik — kablo tasarımı, makineler, standartlar
├── Siparis/                # Sipariş — siparişler, müşteriler
├── Production/             # Üretim — planlama, makine arayüzleri
├── Stok/                   # Stok — projeksiyonlar, ürün stoğu
├── Hammadde/               # Hammadde — malzeme girişi, siparişler
└── Admin/                  # Admin — yazıcılar, kullanıcılar, AI ayarları

7. AI ENTEGRASYONU

Ayrı bir Python servisi, panodan erişilebilen AI destekli arama ve sohbet sağlar. AI, 92 API endpoint aracı üzerinden tüm veritabanına salt okunur erişime sahiptir.

Çok Sağlayıcılı

Düzinelerce API sağlayıcısı destekleniyor. Temel sınıf ve model kayıt sistemi ile sağlayıcı-bağımsız mimari.

Araç Tabanlı Erişim

AI veritabanını doğrudan sorgulamaz. Frontend’in kullandığı aynı REST API endpointlerini çağırır, ancak özel salt okunur servis hesabıyla.

Denetim Günlüğü

Her AI sorgusu, her araç çağrısı, her yanıt ai_audit_logs tablosuna kaydedilir. AI’nın neye eriştiğinin tam izlenebilirliği.

Neden salt okunur? Bir fabrikada üretim verilerini değiştirebilen bir AI asistanı sorumluluktur. Bir halüsinasyon sonucu malzeme silme üretimi durdurabilir. AI arama yapabilir, özetleyebilir ve soruları yanıtlayabilir — ancak şimdilik hiçbir şey oluşturamaz, güncelleyemez veya silemez.

8. AĞ & DEPLOYMENT

Sistem, fabrika zeminindeki bir Mac Mini’de çalışır ve yerel ağdaki tüm cihazlara erişilebilir.

:8000
BACKEND (FastAPI)
:3000
FRONTEND (React)
LAN
192.168.x.x / 10.0.0.x

Operatörler QR kod taramak ve üretim kaydetmek için telefon/tabletlerde mobil Chrome kullanır. Yöneticiler sipariş yönetimi, tasarım ve raporlama için masaüstü tarayıcıları kullanır.

9. EVRİM YOLU

Mimari, ölçek gerektirdiğinde planlı bir evrim yoluna sahiptir:

Aşama 1
MODÜLER
MONOLİT
Mevcut
Aşama 2
VERİTABANI
AYRIMI
Modül başına DB
Aşama 3
SERVİS
ÇIKARIMI
Kritik modüller
Aşama 4
GERÇEK
MİKROSERVİS
Sadece gerekirse

Her aşama bir yedek planıdır, hedef değil. Modüler monolit, belirli ölçülmüş problemler bir sonraki aşamayı gerektirmedikçe mimari olarak kalmalıdır. Bozuk olmayanı düzeltme.