soulwise_persons
مدخلات الألبوم. فهارس على userId وstatus وdeletedAt. الحذف الناعم أولًا؛ ثم الحذف النهائي للبيانات الشخصية بعد 30 يومًا.
للمهندسين، ومديري المنتجات، والصحفيين، والباحثين عن الشراكات. خط المعالجة الكامل، وأربع مجموعات MongoDB، وأحداث EDA، وصرامة منهجية V-Model، وأهداف الأداء، والأمان، وإمكانية الوصول — كل ذلك في صفحة واحدة.
لكل خطوة خدمة وعقد وحدث.
إجراء من المستخدم — مثل "أنشئ فصل اليوم لأجل الأخت" — أو مهمة مجدولة عبر cron، كملخّص يوم الأحد الساعة 9 صباحًا، أو تحديث الطقس كل 6 ساعات.
تصل المهمة إلى قائمة انتظار BullMQ باسم soulwise-chapter-generation، بمهلة صارمة قدرها 28 ثانية. تُنهى المهام الطويلة ويُبلَّغ المستخدم بـ"حاول مرة أخرى".
تجمع خدمة ChapterGenerationService التوجيه رباعي العوامل — سياق الشخص، والفلك، والإشارة، والإيقاع — في مُدخل واحد. لا تدخل أي بيانات تعريف شخصية خام للمستخدم إلى التوجيه حرفيًا؛ فكل شيء يُنقّى أولًا.
يُستدعى مزوّد ذكاء اصطناعي عبر رمز AI_GENERATION_ADAPTER — والمزوّد قابل للتبديل. ويُفحص الرد من حيث الطول والشكل والسلامة قبل المتابعة.
تحدث أربعة أمور: مُصنّف للأزمات يفحص وجود لغة تدل على أزمة؛ ومستخرِج لرقائق الأبعاد يلتقط من واحدة إلى ثلاث رقائق فلكية؛ ومرشّح مضاد للادّعاءات يزيل الصياغات الممنوعة؛ ويُشفَّر المتن بنظام AES-256 بمفتاح تديره المنصة.
يُكتب العنصر في مجموعة MongoDB المناسبة — الفصول، مدوّنات اليوميات، أصداء التناغم — مع فهارس userId وpersonId للبحث السريع. حذف مبدئي أولاً؛ ثم حذف نهائي للبيانات الشخصية بعد 30 يومًا.
يُطلَق حدث EventEmitter2 — CHAPTER_COMPLETED، JOURNAL_CREATED — بعد تثبيت قاعدة البيانات. وتلتقطه وحدة الإشعارات، فتنشئ عنصرًا في صندوق الوارد، وترسل اختياريًا إشعارًا دفعيًا (بحد أقصى واحد يوميًا، مع احترام ساعات الهدوء).
تجلب الواجهة الأمامية العنصر عبر استدعاء API موثّق. ويعيد المركز عرض المحتوى الجديد. وإذا كان المستخدم غير متصل، تقدّم الذاكرة المؤقتة عرض الأمس، ويظهر العنصر الجديد عند إعادة الاتصال.
مفهرسة وفق الاستعلامات التي تجيب عنها كلٌّ منها.
مدخلات الألبوم. فهارس على userId وstatus وdeletedAt. الحذف الناعم أولًا؛ ثم الحذف النهائي للبيانات الشخصية بعد 30 يومًا.
فصول مكتوبة بالذكاء الاصطناعي، بجسم مشفّر. فهارس على personId وuserId وgeneratedAt. تُخزَّن رقاقات الأوجه كمصفوفة منفصلة لتصفية سريعة.
تأملات بقلم المستخدم، بجسم مشفّر. فهارس على userId وpersonId وcreatedAt. جسم مفهرس نصيًا لأغراض البحث. وعلامة خاصة لكل مدخل: "خاص — لا تُغذِّ به Luminara".
درجات رباعية الأبعاد لكل رابطة. فهرس فريد على personId. يُعاد حسابها عبر استدعاء خدمة بعد كتابة فصل أو مدخل مذكرات.
قاعدة صارمة: لا تُطلَق الأحداث إلا بعد تثبيت قاعدة البيانات (commit). تُدار الاعتماديات بين الوحدات عبر رموز حقن من نوع Symbol، وليس عبر forwardRef أبدًا. لا استيرادات مباشرة بين خدمة وأخرى ضمن وحدات الميزات.
SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — يُطلَق بعد تشفير الفصل وحفظه. تستمع إليه Notifications-v2؛ تُنشئ عنصرًا في صندوق الوارد؛ وقد ترسل إشعارًا فوريًا.SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — يُطلَق بعد تشفير مدخل اليوميات وحفظه. تستمع إليه خدمة الرنين (Resonance)؛ وتُفعّل إعادة الحساب.SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — يُطلَق بعد تغيّر بيانات ميلاد الشخص. تُبطَل ذاكرة التخزين المؤقت للتوافق الفلكي.SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — وفق عقد Notifications-v2؛ يحترم ميزانية الإشعارات الفورية وساعات الهدوء.119 متطلبات قابلة للتتبّع، بلا أي ثغرات. يرتبط كل متطلب إلى الأمام بحالة اختبار (UTP، ITP، STP، E2E) وإلى الخلف بقصة مستخدم. 20 قصة مستخدم. 15 متطلبًا وظيفيًا. 12 فئات غير وظيفية. 8 بوابات قبول عامة.
توليد الفصل خلال 30 ثانية أو أقل لنسبة 95% من الطلبات، مقيسًا مقابل توزيع مدة مهام BullMQ. زمن استجابة طلبات GET عند p99 يبلغ 500 مللي ثانية أو أقل عند 1,000 مستخدمًا متزامنًا، مقيسًا عبر اختبار حمل k6. زمن التفاعل الأول (TTI) للواجهة الأمامية 3 ثانية أو أقل على شبكة 4G محاكاة، مقيسًا عبر Lighthouse CI.
تشفير AES-256 للبيانات في حالة السكون باستخدام مفاتيح تديرها المنصة لمحتوى اليوميات والفصول. TLS 1.2+ أثناء النقل؛ مع إعادة توجيه من HTTP إلى HTTPS. رموز وصول JWT بعمر 1 ساعة، ورموز تحديث بعمر 30 يومًا، مع التدوير عند التحديث. حذف ناعم بنافذة 30 يومًا قبل الحذف النهائي للبيانات الشخصية.
يُحترَم إعداد prefers-reduced-motion على نطاق عام — إذ تتحول حركات GSAP إلى تلاشٍ يعتمد على الشفافية فقط. توجد تسميات VoiceOver وTalkBack على كل عنصر تفاعلي. ويتم التحقق يدويًا على iOS وAndroid قبل كل إصدار.
لأن المواصفات المصدرية تعيد بناء الميزة، وإعادة البناء داخل وحدة قائمة قد تُعطّل تجربة الإصدار v1 أو تفرض تفريعًا ثم دمجًا لاحقًا. أما الوحدة الجديدة فتُبقي الإصدار v1 دون مساس، وتتيح للإصدار v2 إثبات جدواه، ثم تنتقل بسلاسة عند الجاهزية.
يعتمد الخادم الخلفي الحالي لـ My Zodiac AI على MongoDB؛ والتبديل يعني اتخاذ قرار بنيوي لا علاقة له بهذه الميزة. كما أن نموذج المستندات يناسب الفصول ومدوّنات اليوميات جيدًا — متداخل، متفاوت الطول، ومُشفَّر ككتلة بيانات.
يعمل BullMQ على Redis، وهو موجود أصلًا في حزمة التقنيات لأغراض الجلسات وتحديد المعدّل. فلا حاجة لبنية تحتية جديدة. كما تغطي ميزات إعادة المحاولة والمهلة والمراقبة المدمجة احتياجات توليد الفصول دون أي تمديدات مخصصة.
في المستودع الداخلي. والأرقام والعقود الواردة في هذه الصفحة هي إعادة صياغة لمكوّنات نموذج V المصدري. أما منشورات المدونة الهندسية الموجهة للجمهور على مجموعة مدونات My Zodiac AI (المُوسَّمة بـ 'cosmic-story-v2') فتتعمق أكثر في أجزاء محددة من عملية البناء.
بينما يفتح Soulwise أمواجه، فإن تطبيقنا الرائد في علم التنجيم بين يديك بالفعل.
محتوى علم التنجيم مخصص للتأمل والترفيه. ميزات Cosmic Story v2 الموضحة هنا قيد التطوير؛ وقد يتغير توفرها دون إشعار مسبق.