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ü
- Satır İçi Düzenleme: Editör
?copypatch=1ile sayfayı açar, metinleri doğrudan canlı arayüzde düzenler ve Taslak Kaydet (⌘S) butonuna tıklar. - Taslak Kalıcılığı: Backend, güncellenen metin haritasını SQLite veya PostgreSQL veritabanındaki taslak durumuna atomik olarak yazar ve
draftRevisionsayacını artırır. - İnceleme ve Önizleme: Paydaşlar ve müşteriler onay öncesinde yapılan değişiklikleri canlı sayfa yerleşimi üzerinde önizler.
- Canlıya Yayınlama:
publisherrolü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 vepublishedRevisionsayacını artırır. - 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
expectedPublishedRevisionhem deexpectedDraftRevisiondeğerlerini sunucuya iletir. - Siz sayfadayken arka planda başka bir editör değişiklik yaptıysa, sunucu isteği HTTP
409 REVISION_CONFLICThatası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.