بنية Cosmic Story v2 — استكشاف معمّق.

للمهندسين، ومديري المنتجات، والصحفيين، والباحثين عن الشراكات. خط المعالجة الكامل، وأربع مجموعات MongoDB، وأحداث EDA، وصرامة منهجية V-Model، وأهداف الأداء، والأمان، وإمكانية الوصول — كل ذلك في صفحة واحدة.

  • Soulwise-story وحدة NestJS جديدة إلى جانب وحدة cosmic-story الحالية. لا استيرادات مباشرة بين وحدات الميزات.
  • أربع مجموعات في MongoDB: soulwise_persons وsoulwise_chapters وsoulwise_journal_entries وsoulwise_resonances. أجسام مشفّرة بخوارزمية AES-256، ومفهرسة وفق الاستعلامات التي تخدمها كلٌّ منها.
  • توليد غير متزامن عبر طابور BullMQ بمهلة 28 ثانية. تُطلق الأحداث عبر EventEmitter2 فقط بعد تثبيت قاعدة البيانات — دون أي عناصر وهمية في صندوق الوارد.
  • مواصفات نموذج V: 119 متطلبًا، بلا أي ثغرات. هدف تغطية الواجهة الخلفية 85% على مستوى العبارات في الخدمات؛ والواجهة الأمامية 90% على مخازن Pinia.

مسار المعالجة مجددًا، مع التفاصيل الهندسية

لكل خطوة خدمة وعقد وحدث.

  1. المُحفّز

    إجراء من المستخدم — مثل "أنشئ فصل اليوم لأجل الأخت" — أو مهمة مجدولة عبر cron، كملخّص يوم الأحد الساعة 9 صباحًا، أو تحديث الطقس كل 6 ساعات.

  2. قائمة الانتظار

    تصل المهمة إلى قائمة انتظار BullMQ باسم soulwise-chapter-generation، بمهلة صارمة قدرها 28 ثانية. تُنهى المهام الطويلة ويُبلَّغ المستخدم بـ"حاول مرة أخرى".

  3. التركيب

    تجمع خدمة ChapterGenerationService التوجيه رباعي العوامل — سياق الشخص، والفلك، والإشارة، والإيقاع — في مُدخل واحد. لا تدخل أي بيانات تعريف شخصية خام للمستخدم إلى التوجيه حرفيًا؛ فكل شيء يُنقّى أولًا.

  4. التوليد

    يُستدعى مزوّد ذكاء اصطناعي عبر رمز AI_GENERATION_ADAPTER — والمزوّد قابل للتبديل. ويُفحص الرد من حيث الطول والشكل والسلامة قبل المتابعة.

  5. المعالجة اللاحقة

    تحدث أربعة أمور: مُصنّف للأزمات يفحص وجود لغة تدل على أزمة؛ ومستخرِج لرقائق الأبعاد يلتقط من واحدة إلى ثلاث رقائق فلكية؛ ومرشّح مضاد للادّعاءات يزيل الصياغات الممنوعة؛ ويُشفَّر المتن بنظام AES-256 بمفتاح تديره المنصة.

  6. الحفظ

    يُكتب العنصر في مجموعة MongoDB المناسبة — الفصول، مدوّنات اليوميات، أصداء التناغم — مع فهارس userId وpersonId للبحث السريع. حذف مبدئي أولاً؛ ثم حذف نهائي للبيانات الشخصية بعد 30 يومًا.

  7. الإشعار

    يُطلَق حدث EventEmitter2 — CHAPTER_COMPLETED، JOURNAL_CREATED — بعد تثبيت قاعدة البيانات. وتلتقطه وحدة الإشعارات، فتنشئ عنصرًا في صندوق الوارد، وترسل اختياريًا إشعارًا دفعيًا (بحد أقصى واحد يوميًا، مع احترام ساعات الهدوء).

  8. العرض

    تجلب الواجهة الأمامية العنصر عبر استدعاء API موثّق. ويعيد المركز عرض المحتوى الجديد. وإذا كان المستخدم غير متصل، تقدّم الذاكرة المؤقتة عرض الأمس، ويظهر العنصر الجديد عند إعادة الاتصال.

سبع خطوات من المُحفّز إلى الظهور، كل واحدة مسمّاة بما تفعله فعليًا.

المجموعات الأربع

مفهرسة وفق الاستعلامات التي تجيب عنها كلٌّ منها.

soulwise_persons

مدخلات الألبوم. فهارس على userId وstatus وdeletedAt. الحذف الناعم أولًا؛ ثم الحذف النهائي للبيانات الشخصية بعد 30 يومًا.

soulwise_chapters

فصول مكتوبة بالذكاء الاصطناعي، بجسم مشفّر. فهارس على personId وuserId وgeneratedAt. تُخزَّن رقاقات الأوجه كمصفوفة منفصلة لتصفية سريعة.

soulwise_journal_entries

تأملات بقلم المستخدم، بجسم مشفّر. فهارس على userId وpersonId وcreatedAt. جسم مفهرس نصيًا لأغراض البحث. وعلامة خاصة لكل مدخل: "خاص — لا تُغذِّ به Luminara".

soulwise_resonances

درجات رباعية الأبعاد لكل رابطة. فهرس فريد على personId. يُعاد حسابها عبر استدعاء خدمة بعد كتابة فصل أو مدخل مذكرات.

أحداث EDA

قاعدة صارمة: لا تُطلَق الأحداث إلا بعد تثبيت قاعدة البيانات (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؛ يحترم ميزانية الإشعارات الفورية وساعات الهدوء.

صرامة مواصفات نموذج V

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 قبل كل إصدار.

لماذا وحدة soulwise-story منفصلة بدلًا من توسعة cosmic-story؟

لأن المواصفات المصدرية تعيد بناء الميزة، وإعادة البناء داخل وحدة قائمة قد تُعطّل تجربة الإصدار v1 أو تفرض تفريعًا ثم دمجًا لاحقًا. أما الوحدة الجديدة فتُبقي الإصدار v1 دون مساس، وتتيح للإصدار v2 إثبات جدواه، ثم تنتقل بسلاسة عند الجاهزية.

لماذا MongoDB وليس Postgres؟

يعتمد الخادم الخلفي الحالي لـ My Zodiac AI على MongoDB؛ والتبديل يعني اتخاذ قرار بنيوي لا علاقة له بهذه الميزة. كما أن نموذج المستندات يناسب الفصول ومدوّنات اليوميات جيدًا — متداخل، متفاوت الطول، ومُشفَّر ككتلة بيانات.

لماذا وقع الاختيار على BullMQ كنظام للطوابير؟

يعمل BullMQ على Redis، وهو موجود أصلًا في حزمة التقنيات لأغراض الجلسات وتحديد المعدّل. فلا حاجة لبنية تحتية جديدة. كما تغطي ميزات إعادة المحاولة والمهلة والمراقبة المدمجة احتياجات توليد الفصول دون أي تمديدات مخصصة.

أين دُوّنت المواصفات المصدرية فعليًا؟

في المستودع الداخلي. والأرقام والعقود الواردة في هذه الصفحة هي إعادة صياغة لمكوّنات نموذج V المصدري. أما منشورات المدونة الهندسية الموجهة للجمهور على مجموعة مدونات My Zodiac AI (المُوسَّمة بـ 'cosmic-story-v2') فتتعمق أكثر في أجزاء محددة من عملية البناء.

جرّب My Zodiac AI اليوم

بينما يفتح Soulwise أمواجه، فإن تطبيقنا الرائد في علم التنجيم بين يديك بالفعل.

محتوى علم التنجيم مخصص للتأمل والترفيه. ميزات Cosmic Story v2 الموضحة هنا قيد التطوير؛ وقد يتغير توفرها دون إشعار مسبق.