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 کیو کے ذریعے غیر ہم‌وقت (async) جنریشن، 28 s ٹائم‌آؤٹ کے ساتھ۔ ایونٹس EventEmitter2 کے ذریعے صرف ڈیٹابیس کمٹ کے بعد خارج کیے جاتے ہیں — کوئی فرضی اِن‌باکس آئٹم نہیں۔
  • V-Model اسپیک: 119 تقاضے، صفر خلا۔ بیک‌اینڈ کوریج ہدف سروسز پر 85% اسٹیٹمنٹ؛ فرنٹ‌اینڈ Pinia اسٹورز پر 90%۔

پائپ‌لائن، ایک بار پھر، انجینئرنگ کی تفصیل کے ساتھ

ہر مرحلے کے لیے ایک سروس، ایک کنٹریکٹ، اور ایک ایونٹ ہوتا ہے۔

  1. محرک

    کوئی صارف کا عمل — 'بہن کے لیے آج کا باب تخلیق کریں' — یا کوئی شیڈول شدہ کرون، جیسے اتوار 9 بجے صبح کا خلاصہ، یا ہر 6 گھنٹے بعد ہونے والی موسمی تازہ کاری۔

  2. قطار

    یہ کام soulwise-chapter-generation نامی ایک BullMQ قطار پر آتا ہے، جس کی سخت حد 28 سیکنڈ کا ٹائم آؤٹ ہے۔ زیادہ دیر چلنے والے کام ختم کر دیے جاتے ہیں اور صارف کو 'دوبارہ کوشش کریں' کے طور پر اطلاع دی جاتی ہے۔

  3. ترتیب

    ChapterGenerationService چار عوامل پر مبنی پرامپٹ کو ترتیب دیتی ہے — فرد کا سیاق، علمِ نجوم، سگنل اور تسلسل — ایک ہی اِن پٹ میں۔ کوئی خام صارف PII لفظ بہ لفظ پرامپٹ میں نہیں جاتی؛ ہر چیز پہلے صاف کی جاتی ہے۔

  4. تخلیق

    ایک AI فراہم کنندہ کو AI_GENERATION_ADAPTER سمبل ٹوکن کے ذریعے طلب کیا جاتا ہے — یہ فراہم کنندہ بدلا جا سکتا ہے۔ آگے بڑھنے سے پہلے جواب کی لمبائی، ساخت اور حفاظت جانچی جاتی ہے۔

  5. بعد از عمل (پوسٹ پروسیس)

    چار چیزیں ہوتی ہیں: ایک کرائسز کلاسیفائر بحرانی الفاظ کی جانچ کرتا ہے؛ ایک ایسپیکٹ-چِپ ایکسٹریکٹر ایک سے تین فلکیاتی چِپس نکالتا ہے؛ ایک اینٹی-کلیم فلٹر ممنوعہ جملوں کو ہٹا دیتا ہے؛ متن کو پلیٹ فارم سے زیر انتظام کلید کے ساتھ AES-256 میں خفیہ کیا جاتا ہے۔

  6. محفوظ (پرسسٹ)

    آرٹیفیکٹ کو مناسب MongoDB کلیکشن میں لکھا جاتا ہے — چیپٹرز، جرنل اندراجات، ریزوننسز — جس میں تیز رفتار تلاش کے لیے userId اور personId انڈیکس ہوتے ہیں۔ پہلے سوفٹ-ڈیلیٹ؛ PII کا ہارڈ-ڈیلیٹ 30 دنوں پر۔

  7. اطلاع دیں

    ایک EventEmitter2 ایونٹ — CHAPTER_COMPLETED، JOURNAL_CREATED — ڈیٹابیس کمٹ کے بعد فائر ہوتا ہے۔ نوٹیفکیشنز ماڈیول اسے اٹھاتا ہے، ایک اِن باکس آئٹم بناتا ہے، اور اختیاری طور پر ایک پُش بھیجتا ہے (دن میں ایک تک محدود، خاموش گھنٹوں کا لحاظ رکھتے ہوئے)۔

  8. ظاہر کریں

    فرنٹ اینڈ ایک تصدیق شدہ API کال کے ذریعے آرٹیفیکٹ حاصل کرتا ہے۔ ہب نئے مواد کے ساتھ دوبارہ رینڈر ہوتا ہے۔ اگر صارف آف لائن تھا، تو کیش کل کا منظر پیش کرتا ہے اور دوبارہ جُڑنے پر نیا آرٹیفیکٹ ظاہر ہو جاتا ہے۔

محرک سے ظاہر ہونے تک سات قدم، ہر ایک کا نام اُس کام پر ہے جو وہ حقیقتاً کرتا ہے۔

چار کلیکشنز

ہر ایک جن کوئریز کا جواب دیتا ہے ان کے لیے انڈیکس شدہ۔

soulwise_persons

البم اندراجات۔ userId، status، deletedAt پر انڈیکسز۔ پہلے سافٹ-ڈیلیٹ؛ PII کا ہارڈ-ڈیلیٹ 30 دن پر۔

soulwise_chapters

AI کی لکھی ہوئی چیپٹرز، انکرپٹ شدہ باڈی۔ personId، userId، generatedAt پر انڈیکسز۔ تیز فلٹرنگ کے لیے ایسپکٹ چپس ایک علیحدہ ارے میں محفوظ۔

soulwise_journal_entries

صارف کی لکھی ہوئی عکاسیاں، انکرپٹ شدہ باڈی۔ userId، personId، createdAt پر انڈیکسز۔ تلاش کے لیے ٹیکسٹ-انڈیکسڈ باڈی۔ ہر اندراج کے لیے 'نجی — Luminara کو نہ دیں' فلیگ۔

soulwise_resonances

ہر بندھن کے لیے چار-جہتی اسکورز۔ personId پر منفرد انڈیکس۔ چیپٹر یا جرنل لکھے جانے کے بعد سروس کال کے ذریعے دوبارہ شمار کیا جاتا ہے۔

EDA ایونٹس

سخت اصول: ایونٹس صرف ڈیٹابیس کمٹ کے بعد فائر ہوتے ہیں۔ ماڈیولز کے درمیان انحصار 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-Model اسپیسیفکیشن کی سختی

119 قابلِ سراغ تقاضے، صفر خلا۔ ہر تقاضہ آگے کسی ٹیسٹ کیس (UTP, ITP, STP, E2E) سے اور پیچھے کسی یوزر اسٹوری سے منسلک ہوتا ہے۔ 20 یوزر اسٹوریز۔ 15 فنکشنل تقاضے۔ 12 غیر فنکشنل زمرے۔ 8 عالمی منظوری گیٹس۔

کارکردگی کا معاہدہ

باب کی تخلیق 95% درخواستوں کے لیے 30 سیکنڈ یا اس سے بہتر، BullMQ جاب دورانیے کی تقسیم کے مقابلے میں ناپا گیا۔ API p99 GET تاخیر 1,000 بیک‌وقت صارفین پر 500 ms یا اس سے بہتر، k6 لوڈ ٹیسٹ کے ذریعے ناپی گئی۔ فرنٹ اینڈ TTI سمیولیٹڈ 4G پر 3 سیکنڈ یا اس سے بہتر، Lighthouse CI کے ذریعے ناپا گیا۔

سیکیورٹی کا معاہدہ

جرنل اور باب کے متن کے لیے پلیٹ‌فارم کے زیرِ انتظام چابیوں کے ساتھ آرام کی حالت میں AES-256 اینکرپشن۔ ترسیل کے دوران TLS 1.2+؛ HTTP→HTTPS ری‌ڈائریکٹ۔ JWT ایکسیس ٹوکنز 1 گھنٹے کی مدت کے ساتھ، ریفریش ٹوکنز 30 دن کی مدت کے ساتھ، ریفریش پر گردش۔ PII کی مکمل حذف سے پہلے 30 دن کی کھڑکی کے ساتھ سافٹ‌ ڈیلیٹ۔

رسائی کا معاہدہ

prefers-reduced-motion کا عالمی سطح پر احترام کیا جاتا ہے — GSAP اینیمیشنز صرف اوپیسٹی فیڈز میں بدل جاتی ہیں۔ ہر انٹرایکٹو عنصر پر VoiceOver اور TalkBack لیبلز موجود ہیں۔ ہر ریلیز سے پہلے iOS اور Android پر دستی طور پر تصدیق کی جاتی ہے۔

cosmic-story کو وسعت دینے کے بجائے ایک علیحدہ soulwise-story ماڈیول کیوں؟

کیونکہ اپ‌اسٹریم اسپیک اس فیچر کو نئے سرے سے بناتا ہے، اور کسی موجودہ ماڈیول کے اندر دوبارہ بنانے سے یا تو v1 کا تجربہ خراب ہوگا یا بعد میں fork-then-merge کرنا پڑے گا۔ ایک نیا ماڈیول v1 کو اچھوتا رکھتا ہے، v2 کو خود کو ثابت کرنے کا موقع دیتا ہے، اور تیار ہونے پر صاف ستھرے انداز میں منتقل ہو جاتا ہے۔

MongoDB کیوں اور Postgres کیوں نہیں؟

My Zodiac AI کا موجودہ بیک‌اینڈ MongoDB پر ہے؛ تبدیل کرنے کا مطلب ایک ایسا انفراسٹرکچر فیصلہ ہوگا جس کا اس فیچر سے کوئی تعلق نہیں۔ ڈاکیومنٹ ماڈل ابواب اور جرنل اندراجات کے ساتھ بھی خوب بیٹھتا ہے — نیسٹڈ، مختلف طوالت والے، اور بطور blob انکرپٹڈ۔

قطار کے انتخاب کے طور پر BullMQ ہی کیوں؟

BullMQ، Redis پر چلتا ہے، جو سیشن اور ریٹ-لمٹ کے لیے پہلے ہی اسٹیک میں موجود ہے۔ کوئی نیا انفراسٹرکچر نہیں۔ بلٹ-ان ری‌ٹرائی، ٹائم‌آؤٹ اور آبزرویبلٹی کسی کسٹم پلمبنگ کے بغیر ابواب کی تخلیق کی ضروریات کو پورا کرتی ہیں۔

اپ‌اسٹریم اسپیک دراصل کہاں لکھا ہوا ہے؟

اندرونی ریپو میں۔ اس صفحے پر موجود اعداد اور کنٹریکٹس اپ‌اسٹریم V-Model آرٹیفیکٹس کی تفہیمی صورت ہیں۔ My Zodiac AI کے بلاگ کلسٹر پر عوامی انجینئرنگ بلاگ پوسٹس ('cosmic-story-v2' کے ٹیگ کے ساتھ) بناوٹ کے مخصوص حصوں میں زیادہ گہرائی سے جاتی ہیں۔

آج ہی My Zodiac AI آزمائیں

جب Soulwise اپنی لہریں کھول رہا ہے، ہماری نمایاں علمِ نجوم ایپ پہلے ہی آپ کے ہاتھ میں ہے۔

علمِ نجوم کا مواد غور و فکر اور تفریح کے لیے ہے۔ یہاں بیان کردہ Cosmic Story v2 کی خصوصیات زیرِ تکمیل ہیں؛ ان کی دستیابی بغیر کسی اطلاع کے تبدیل ہو سکتی ہے۔