Skip to content

B2C Motoru (B2C Engine)

Bu doküman, Humindx mobil uygulamasını besleyen backend mimarisini, bireysel kullanıcı etkileşimlerini (Sisli Sohbet, Mikro-Keşif) ve Premium abonelik dönüşümünü tetikleyen altyapı bileşenlerini tanımlar.

Kapsam Uyarısı: Bu doküman, B2C tarafındaki etkileşim ve oyunlaştırma servislerini kapsar. Bu etkileşimlerden doğan skorların nasıl hesaplandığı için ../psychometrics/scoring-algorithms.md, RAG ve prompt mimarisi için ../psychometrics/llm-orchestration.md dosyalarına bakınız.


1. Mikro-Keşif Motoru ve Başlangıç Çapası (Onboarding Pipeline)

Kullanıcı uygulamaya ilk girdiğinde ağır bir LLM sohbetiyle yorulmaz. Hızlı ve deterministik bir API akışıyla "Başlangıç Çapası" (S0) oluşturulur.

1.1. Teknik Akış

  1. Endpoint: GET /api/v1/b2c/discovery/quick-scan
  2. Mekanizma: Backend, statik bir JSON havuzundan A/B tarzı görsel/metinsel ikilemler (Örn: "Planlı bir tatil mi, anlık bir macera mı?") döndürür.
  3. Değerlendirme: Gelen yanıtlar bir LLM'e gitmez (Gecikme ve maliyet optimizasyonu). Önceden haritalandırılmış (Pre-mapped) Big Five ağırlıklarına göre O(1) hızında hesaplanır.
  4. Veri Kaydı: Hesaplanan S0 skorları, PostgreSQL'deki trait_scores tablosunda DISCOVERY odasına ve varsayılan olarak PROFESSIONAL odaya kaydedilir.

2. Proof Loop (Güven Onboarding'i) İmplementasyonu

Kullanıcının "Sosyal verilerim işverenime gider mi?" korkusunu kırmak için tasarlanan Prove-to-User döngüsünün backend karşılığıdır.

2.1. Senkronize Kanıt Akışı

  1. Kullanıcıya zorunlu bir "Ev işleri kavgası" mini-senaryosu sunulur. Etiket backend tarafından hardcoded olarak [SOCIAL] belirlenir.
  2. Senaryo bittiğinde, mobil uygulama WSS üzerinden iki eşzamanlı istek atar (veya GraphQL Subscription dinler):
    • GQL: Subscribe to Social_Room_Scores
    • GQL: Subscribe to Professional_Room_Scores
  3. Cold Path (Scoring Engine) analizi tamamlayıp veritabanını güncellediğinde, API Gateway (WebSocket üzerinden) frontend'e iki JSON yollar:
    • Payload 1: Social_Room: { Agreeableness: -10 }
    • Payload 2: Professional_Room: { Agreeableness: 0 (Değişim Yok) }
  4. Mobil arayüz bu iki JSON'u yan yana animasyonla gösterir. Bu donanımsal kanıt sonrası kullanıcı, kriptografik olarak imzalanmış bir CONSENT_ACKNOWLEDGED isteği atar ve bu durum audit_events tablosuna loglanır.

3. Sisli Sohbet (Misty Chat) Backend Akışı

Sisli Sohbet, kullanıcının konuştuğu ajanın kimliğini (Gölge, Ayna vb.) son ana kadar bilmediği bir etkileşimdir. Bu durum, "State" (Durum) yönetimini istemciye bırakmamayı gerektirir.

3.1. Durum Yönetimi (Server-Side State)

  • Mobil uygulama POST /chat/init isteği attığında, ajanın kimliğini belirleyemez.
  • Backend (LLM Orchestrator), kullanıcının eksik gen haritasına bakarak (Örn: "Bu kullanıcının Stres Toleransı hiç test edilmedi") en uygun ajanı seçer (Örn: Gölge Ajan).
  • Redis'te açılan session'a agent_type: SHADOW kaydedilir, ancak frontend'e sadece session_id ve status: READY dönülür.

3.2. Sisin Kalkması (Fog Lifted Event)

  • Kullanıcı "Sohbeti Bitir" butonuna bastığında, backend Cold Path analizini tetikler.
  • Cold Path, analizi (shift_value) tamamladığında WSS üzerinden FOG_LIFTED event'i gönderilir.
  • Bu payload; ajanın gerçek kimliğini, kullanıcının test edilen özelliğini ve değişen delta skorunu içerir. Frontend bu JSON'u okuyarak o meşhur "Sır perdesi aralandı" animasyonunu tetikler.

4. Bellek Duvarı (Memory Wall): Free vs. Premium

Humindx'in B2C tarafındaki ana gelir modeli (Monetization), "Bellek Duvarı" altyapısına dayanır.

ÖzellikFree (Ücretsiz) PlanPremium Plan
Kalıcı GenomEVET. Puanlar kalıcı olarak güncellenir.EVET.
Bağlamsal RAGHAYIR.EVET. pgvector üzerinden anılar çağrılır.
Session TTL24 Saat. Redis key expire olur.Sonsuz (Vektör olarak yaşar).

4.1. Teknik Kısıtlama (Paywall Logic)

Sistemde her sohbet (../security/vector-privacy.md kuralları gereği) gürültülü vektörlere dönüşür. Ancak API Gateway'de çalışan bir Middleware (Ara katman), kullanıcının yetki paketini kontrol eder:

  • Kullanıcı Free ise: Yeni bir sohbet başlatıldığında RAG (Retrieval) servisine giden istek bypass edilir (atlanır). LLM'in Sistem Prompt'una Geçmiş Bağlam: Yok bilgisi gönderilir. Ajan, her yeni güne kullanıcının eski sohbetlerini unutmuş olarak başlar. Puanlar arka planda güncellense de, botun sosyal hafızası sıfırlanmıştır.
  • Kullanıcı Premium ise: RAG servisi pgvector üzerinden benzer vektörleri arar ve en ilgili geçmiş sohbet özetlerini Sistem Prompt'una dinamik olarak enjekte eder. Kullanıcı, "Beni gerçekten tanıyor ve hatırlıyor" hissini yaşar.

Bu keskin teknik ayrım, kullanıcının "Beni anlayan bu asistanı kaybetmek istemiyorum" duygusuyla Premium pakete geçmesini sağlayan (Retention Hook) ana tetikleyicidir.


5. Bildirim Motoru (Notification & Trigger Engine)

Uygulamanın günde birkaç kez ziyaret edilmesini sağlayan yapı, pasif bir sistem değil, Proaktif bir CRON / Event servisi üzerine kuruludur.

5.1. Olay Odaklı Tetikleyiciler (Event-Driven Triggers)

  • Kural Motoru (Rule Engine): trait_scores tablosunda veya Audit Trail'de belirli bir eşik aşıldığında çalışır.
  • Örnek: Bir kullanıcının [PRO] odasındaki Liderlik skoru 1 hafta içinde 15 puan arttığında, sistem asenkron bir Worker (Celery/Node Cron) aracılığıyla şu Push Notification'ı fırlatır: "Liderlik potansiyelinde ani bir yükseliş var! Bu yeni gücünü Profesyonel Simülatör ile test etmek ister misin?"

5.2. Zamana Bağlı Tetikleyiciler (Time-Driven Triggers)

  • İlişki Check-in (Pazar Akşamı Döngüsü): Her pazar saat 19:00'da, SOCIAL odasında ortaklaşa "Yakın Çevre" (Partner/Eş) eklemiş kullanıcılara eşzamanlı bir mini-anket (Mikro-Keşif) düşer.
  • Backend, her iki kullanıcının yanıtını alır, aralarındaki uyumsuzluk delta'sını hesaplar ve Pazartesi sabahı için bir "Haftalık İlişki Tavsiyesi" oluşturur.

6. Psikometrik Pasaport: Paylaşım ve Export Altyapısı

Kullanıcının verisini "taşınabilir bir dijital kimliğe" dönüştürme vaadinin teknik altyapısıdır.

  1. Kullanıcı "Pasaportumu Paylaş" dediğinde, B2C backend'i şifreli (Signed) bir JWT barındıran benzersiz bir URL (https://humindx.com/p/token_abc123) üretir.
  2. Bu URL'nin arkasındaki payload şu şekildedir:
    json
    {
      "user_id": "uuid",
      "granted_level": 1,
      "expires_at": "2026-05-15T00:00:00Z"
    }
  3. URL'nin süresi dolduğunda (TTL) veya kullanıcı "Paylaşımı Durdur" dediğinde (Revocation), consent_grants tablosundaki ilgili satır silinir/pasife çekilir.

6.2. Statik PDF Export (Premium Özellik)

  • Kullanıcı, üniversite veya iş başvurusu için basılı bir rapor istediğinde, B2C servisi kullanıcının Profesyonel Odası'ndaki verileri alır.
  • Arka planda bir PDF Rendering Microservice (Örn: Puppeteer veya wkhtmltopdf tabanlı) tetiklenir.
  • Oluşturulan PDF'in altına, belgenin o anki gerçekliğini kanıtlayan (ve sistemdeki Hash Chain'e işaret eden) bir Dijital Doğrulama Mührü (QR Code) basılır. Raporun değiştirilip değiştirilmediği https://humindx.com/verify adresinden sorgulanabilir.

Son Güncelleme: 2026-04-15 — Mikro-Keşif motoru, Proof Loop implementasyonu, Sisli Sohbet state yönetimi, Memory Wall kısıtlamaları, Bildirim Motoru ve Pasaport Export mekanizmaları tanımlandı.

Simetri tarafından inşa ediliyor.