soulwise_persons
Albüm kayıtları. userId, status ve deletedAt üzerinde dizinler. Önce yumuşak silme; kişisel verilerin kalıcı silinmesi 30 gün sonra.
Mühendisler, ürün yöneticileri, gazeteciler ve iş birliği arayanlar için. Tüm pipeline, dört MongoDB koleksiyonu, EDA olayları, V-Model titizliği, performans hedefleri, güvenlik ve erişilebilirlik — hepsi tek bir sayfada.
Her adımın bir hizmeti, bir sözleşmesi ve bir olayı vardır.
Bir kullanıcı işlemi — 'Sister için bugünün bölümünü oluştur' — ya da zamanlanmış bir cron; örneğin Pazar günü 9 özeti veya her 6 saatte bir yapılan hava durumu güncellemesi gibi.
İş, soulwise-chapter-generation adlı bir BullMQ kuyruğuna düşer ve kesin bir 28 saniyelik zaman aşımı uygulanır. Uzun süren işler sonlandırılır ve kullanıcıya 'tekrar dene' olarak bildirilir.
ChapterGenerationService, dört faktörlü istemi (kişi bağlamı, astroloji, sinyal, ritim) tek bir girdide birleştirir. İsteme ham kullanıcı PII'si olduğu gibi girmez; her şey önce temizlenir.
AI sağlayıcısı, AI_GENERATION_ADAPTER sembol token'ı üzerinden çağrılır — sağlayıcı değiştirilebilir. Yanıt, devam etmeden önce uzunluk, biçim ve güvenlik açısından kontrol edilir.
Dört şey olur: bir kriz sınıflandırıcısı kriz diline bakar; bir aspekt-çip çıkarıcısı bir ila üç astroloji çipi alır; bir karşı-iddia filtresi yasak ifadeleri ayıklar; metin gövdesi, platform tarafından yönetilen bir anahtarla AES-256 ile şifrelenir.
Yapı, uygun MongoDB koleksiyonuna yazılır — bölümler, günlük kayıtları, rezonanslar — hızlı erişim için userId ve personId indeksleriyle birlikte. Önce yumuşak silme; PII'nin kalıcı silinmesi ise 30 gün sonra gerçekleşir.
Bir EventEmitter2 olayı — CHAPTER_COMPLETED, JOURNAL_CREATED — veritabanı commit'inden sonra tetiklenir. Bildirim modülü bunu yakalar, bir gelen kutusu öğesi oluşturur ve isteğe bağlı olarak bir push gönderir (günde bir ile sınırlı, sessiz saatlere uyularak).
Ön yüz, kimliği doğrulanmış bir API çağrısıyla içeriği çeker. Hub yeni içerikle yeniden oluşturulur. Kullanıcı çevrimdışıysa önbellek dünkü görünümü sunar ve yeni içerik, yeniden bağlanınca görünür.
Yanıtladığı her sorgu için indekslendi.
Albüm kayıtları. userId, status ve deletedAt üzerinde dizinler. Önce yumuşak silme; kişisel verilerin kalıcı silinmesi 30 gün sonra.
Yapay zekânın yazdığı bölümler, şifrelenmiş gövde. personId, userId ve generatedAt üzerinde indeksler. Hızlı filtreleme için açı çipleri ayrı bir dizi olarak saklanır.
Kullanıcının yazdığı düşünceler, şifrelenmiş gövde. userId, personId ve createdAt üzerinde dizinler. Arama için metin dizinli gövde. Her giriş için 'gizli — Luminara'ya verme' işareti.
Her bağ için dört boyutlu puanlar. personId üzerinde benzersiz indeks. Bölüm veya günlük yazımının ardından servis çağrısıyla yeniden hesaplanır.
Katı kural: olaylar yalnızca veritabanı commit'inden sonra tetiklenir. Modüller arası bağımlılıklar Symbol enjeksiyon token'ları üzerinden kurulur, asla forwardRef ile değil. Özellik modülleri arasında doğrudan servisten servise import yapılmaz.
SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — bir bölüm şifrelenip kaydedildikten sonra tetiklenir. Notifications-v2 bunu dinler; gelen kutusu öğesi oluşturur; isteğe bağlı olarak push bildirimi gönderir.SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — bir günlük girişi şifrelenip kaydedildikten sonra tetiklenir. Resonance servisi dinler; yeniden hesaplamayı başlatır.SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — bir kişinin doğum verileri değiştiğinde tetiklenir. sentezastrolojisi önbelleği geçersiz kılınır.SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 sözleşmesi gereği; bildirim bütçesine ve sessiz saatlere uyar.119 izlenebilir gereksinim, sıfır boşluk. Her gereksinim ileriye doğru bir test senaryosuna (UTP, ITP, STP, E2E) ve geriye doğru bir kullanıcı hikâyesine eşlenir. 20 kullanıcı hikâyesi. 15 işlevsel gereksinim. 12 işlevsel olmayan kategori. 8 global kabul kapısı.
Bölüm üretimi, isteklerin 95%'inde 30 saniye veya daha kısa; BullMQ iş süresi dağılımına göre ölçülür. API p99 GET gecikmesi 1,000 eşzamanlı kullanıcıda 500 ms veya daha düşük; k6 yük testiyle ölçülür. Frontend TTI, simüle edilmiş 4G üzerinde 3 saniye veya daha kısa; Lighthouse CI ile ölçülür.
Günlük ve bölüm içerikleri için platform tarafından yönetilen anahtarlarla beklemede AES-256 şifreleme. İletim sırasında TLS 1.2+; HTTP→HTTPS yönlendirmesi. 1 saat ömürlü JWT erişim token'ları, 30 gün ömürlü yenileme token'ları ve yenilemede rotasyon. PII'nin kalıcı silinmesinden önce 30 günlük bir pencereyle yumuşak silme.
prefers-reduced-motion ayarına her yerde saygı gösterilir — GSAP animasyonları yalnızca opaklık geçişlerine dönüşür. Her etkileşimli öğede VoiceOver ve TalkBack etiketleri bulunur. Her sürümden önce iOS ve Android üzerinde manuel olarak doğrulanır.
Çünkü üst akış spesifikasyonu özelliği baştan inşa ediyor ve mevcut bir modülün içinde yeniden inşa etmek ya v1 deneyimini bozar ya da sonradan dallanıp-birleştirmeye yol açar. Yeni bir modül v1 sürümüne dokunmadan kalmasını sağlar, v2 sürümünün kendini kanıtlamasına imkân verir ve hazır olunca temiz bir geçiş yapar.
Mevcut My Zodiac AI arka ucu MongoDB üzerinde çalışıyor; geçiş yapmak, bu özellikle ilgisi olmayan bir altyapı kararı anlamına gelirdi. Doküman modeli ayrıca bölümlere ve günlük kayıtlarına da iyi uyuyor — iç içe geçmiş, değişken uzunlukta ve blob olarak şifrelenmiş.
BullMQ, oturum ve hız sınırlama için zaten yığında bulunan Redis üzerinde çalışır. Yeni altyapı yok. Dahili yeniden deneme, zaman aşımı ve gözlemlenebilirlik özellikleri, bölüm üretimi ihtiyaçlarını özel bir kurulum gerektirmeden karşılar.
Dahili repo. Bu sayfadaki sayılar ve sözleşmeler, yukarı akış V-Model artefaktlarını özetler. My Zodiac AI'nin blog kümesindeki herkese açık mühendislik blog yazıları ('cosmic-story-v2' etiketli) yapının belirli kısımlarını daha derinlemesine ele alır.
Soulwise dalgalarını açarken, amiral gemimiz astroloji uygulaması çoktan elinin altında.
Astroloji içeriği yansıma ve eğlence amaçlıdır. Burada açıklanan Cosmic Story v2 özellikleri geliştirme aşamasındadır; kullanılabilirlik önceden bildirilmeksizin değişebilir.