Yayınlama ve Taslak İş Akışları

CopyPatch v2, her dil (locale) için bağımsız çalışan iki aşamalı bir yayınlama modeli (Taslak ve Canlı Yayın) sunar. Bu mekanizma, atomik karşılaştır-ve-değiştir (CAS) revizyon sayaçları ve rol tabanlı yetkilendirme kuralları ile güvenceye alınmıştır.

1. Taslak (Draft) ve Canlı (Published) Aşamaları

Aşama Hedef Kapsam Ziyaretçi Görünürlüğü Gerekli Rol
Taslak (Staging) draftRevision Gizli: Yalnızca ?copypatch=1 üzerinden giriş yapmış yetkili editörlere gösterilir. editor veya publisher
Yayınlanmış (Canlı) publishedRevision Herkese Açık: SSR/RSC ve sayfa yüklemelerinde tüm ziyaretçilere sunulur. publisher

2. Adım Adım İş Akışı Yaşam Döngüsü

  1. Satır İçi Düzenleme: Editör ?copypatch=1 ile sayfayı açar, metinleri doğrudan canlı arayüzde düzenler ve Taslak Kaydet (⌘S) butonuna tıklar.
  2. Taslak Kalıcılığı: Backend, güncellenen metin haritasını SQLite veya PostgreSQL veritabanındaki taslak durumuna atomik olarak yazar ve draftRevision sayacını artırır.
  3. İnceleme ve Önizleme: Paydaşlar ve müşteriler onay öncesinde yapılan değişiklikleri canlı sayfa yerleşimi üzerinde önizler.
  4. Canlıya Yayınlama: publisher rolüne sahip yetkili bir kullanıcı Yayınla butonuna tıklar. Backend, tek bir atomik işlemde taslak metinleri canlı anlık görüntüye aktarır ve publishedRevision sayacını artırır.
  5. Canlı Dağıtım: Bir sonraki sunucu tarafı render (SSR/RSC) veya istemci isteği güncellenmiş metinleri anında kullanıcılara ulaştırır.

3. İyimser Eşzamanlılık Denetimi (OCC / CAS)

Birden fazla editör aynı dil üzerinde eşzamanlı olarak çalışırken, CopyPatch birbirlerinin çalışmalarını sessizce ezmelerini matematiksel olarak engeller:

  • Her taslak veya yayınlama isteği hem expectedPublishedRevision hem de expectedDraftRevision değerlerini sunucuya iletir.
  • Siz sayfadayken arka planda başka bir editör değişiklik yaptıysa, sunucu isteği HTTP 409 REVISION_CONFLICT hatasıyla geri çevirir.
  • Yanıt, veritabanındaki en güncel anlık görüntüyü içerir; böylece arayüz veri kaybı yaşanmadan değişiklikleri birleştirmenize yardımcı olur.
409 Çakışma Hata Yanıtı
// 409 Conflict (Revizyon Çakışması) Hata Yanıtı
{
  "error": {
    "code": "REVISION_CONFLICT",
    "message": "Oturumunuz başladığından bu yana aktif dil başka bir editör tarafından güncellendi.",
    "currentPublishedRevision": 14,
    "currentDraftRevision": 18,
    "expectedPublishedRevision": 12,
    "expectedDraftRevision": 15,
    "latest": {
      "revision": 14,
      "content": {
        "hero.title": "Ekip arkadaşınız tarafından güncellenen başlık"
      }
    }
  }
}

4. Denetim Kayıtları ve Geçmiş Uyarısı

Tasarım Notu: CopyPatch hafif, yüksek performanslı ve yalın bir kalıcılık hedefler; veritabanı tabloları içinde sınırsız geçmiş denetim kütüğü tutmaz. Kurumsal denetim veya mevzuat gereksinimleriniz için ana uygulamanızın loglama altyapısını veya veritabanı replikasyon akışını kullanabilirsiniz.