soulwise_persons
البم اندراجات۔ userId، status، deletedAt پر انڈیکسز۔ پہلے سافٹ-ڈیلیٹ؛ PII کا ہارڈ-ڈیلیٹ 30 دن پر۔
انجینئرز، پی ایمز، صحافیوں اور شراکت داری کے اسکاؤٹس کے لیے۔ مکمل پائپ لائن، چار MongoDB کلیکشنز، EDA ایونٹس، V-Model کی سختی، کارکردگی کے اہداف، سلامتی، اور رسائی — سب کچھ ایک ہی صفحے پر۔
ہر مرحلے کے لیے ایک سروس، ایک کنٹریکٹ، اور ایک ایونٹ ہوتا ہے۔
کوئی صارف کا عمل — 'بہن کے لیے آج کا باب تخلیق کریں' — یا کوئی شیڈول شدہ کرون، جیسے اتوار 9 بجے صبح کا خلاصہ، یا ہر 6 گھنٹے بعد ہونے والی موسمی تازہ کاری۔
یہ کام soulwise-chapter-generation نامی ایک BullMQ قطار پر آتا ہے، جس کی سخت حد 28 سیکنڈ کا ٹائم آؤٹ ہے۔ زیادہ دیر چلنے والے کام ختم کر دیے جاتے ہیں اور صارف کو 'دوبارہ کوشش کریں' کے طور پر اطلاع دی جاتی ہے۔
ChapterGenerationService چار عوامل پر مبنی پرامپٹ کو ترتیب دیتی ہے — فرد کا سیاق، علمِ نجوم، سگنل اور تسلسل — ایک ہی اِن پٹ میں۔ کوئی خام صارف PII لفظ بہ لفظ پرامپٹ میں نہیں جاتی؛ ہر چیز پہلے صاف کی جاتی ہے۔
ایک AI فراہم کنندہ کو AI_GENERATION_ADAPTER سمبل ٹوکن کے ذریعے طلب کیا جاتا ہے — یہ فراہم کنندہ بدلا جا سکتا ہے۔ آگے بڑھنے سے پہلے جواب کی لمبائی، ساخت اور حفاظت جانچی جاتی ہے۔
چار چیزیں ہوتی ہیں: ایک کرائسز کلاسیفائر بحرانی الفاظ کی جانچ کرتا ہے؛ ایک ایسپیکٹ-چِپ ایکسٹریکٹر ایک سے تین فلکیاتی چِپس نکالتا ہے؛ ایک اینٹی-کلیم فلٹر ممنوعہ جملوں کو ہٹا دیتا ہے؛ متن کو پلیٹ فارم سے زیر انتظام کلید کے ساتھ AES-256 میں خفیہ کیا جاتا ہے۔
آرٹیفیکٹ کو مناسب MongoDB کلیکشن میں لکھا جاتا ہے — چیپٹرز، جرنل اندراجات، ریزوننسز — جس میں تیز رفتار تلاش کے لیے userId اور personId انڈیکس ہوتے ہیں۔ پہلے سوفٹ-ڈیلیٹ؛ PII کا ہارڈ-ڈیلیٹ 30 دنوں پر۔
ایک EventEmitter2 ایونٹ — CHAPTER_COMPLETED، JOURNAL_CREATED — ڈیٹابیس کمٹ کے بعد فائر ہوتا ہے۔ نوٹیفکیشنز ماڈیول اسے اٹھاتا ہے، ایک اِن باکس آئٹم بناتا ہے، اور اختیاری طور پر ایک پُش بھیجتا ہے (دن میں ایک تک محدود، خاموش گھنٹوں کا لحاظ رکھتے ہوئے)۔
فرنٹ اینڈ ایک تصدیق شدہ API کال کے ذریعے آرٹیفیکٹ حاصل کرتا ہے۔ ہب نئے مواد کے ساتھ دوبارہ رینڈر ہوتا ہے۔ اگر صارف آف لائن تھا، تو کیش کل کا منظر پیش کرتا ہے اور دوبارہ جُڑنے پر نیا آرٹیفیکٹ ظاہر ہو جاتا ہے۔
ہر ایک جن کوئریز کا جواب دیتا ہے ان کے لیے انڈیکس شدہ۔
البم اندراجات۔ userId، status، deletedAt پر انڈیکسز۔ پہلے سافٹ-ڈیلیٹ؛ PII کا ہارڈ-ڈیلیٹ 30 دن پر۔
AI کی لکھی ہوئی چیپٹرز، انکرپٹ شدہ باڈی۔ personId، userId، generatedAt پر انڈیکسز۔ تیز فلٹرنگ کے لیے ایسپکٹ چپس ایک علیحدہ ارے میں محفوظ۔
صارف کی لکھی ہوئی عکاسیاں، انکرپٹ شدہ باڈی۔ userId، personId، createdAt پر انڈیکسز۔ تلاش کے لیے ٹیکسٹ-انڈیکسڈ باڈی۔ ہر اندراج کے لیے 'نجی — Luminara کو نہ دیں' فلیگ۔
ہر بندھن کے لیے چار-جہتی اسکورز۔ personId پر منفرد انڈیکس۔ چیپٹر یا جرنل لکھے جانے کے بعد سروس کال کے ذریعے دوبارہ شمار کیا جاتا ہے۔
سخت اصول: ایونٹس صرف ڈیٹابیس کمٹ کے بعد فائر ہوتے ہیں۔ ماڈیولز کے درمیان انحصار 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 عالمی منظوری گیٹس۔
باب کی تخلیق 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 پر دستی طور پر تصدیق کی جاتی ہے۔
کیونکہ اپاسٹریم اسپیک اس فیچر کو نئے سرے سے بناتا ہے، اور کسی موجودہ ماڈیول کے اندر دوبارہ بنانے سے یا تو v1 کا تجربہ خراب ہوگا یا بعد میں fork-then-merge کرنا پڑے گا۔ ایک نیا ماڈیول v1 کو اچھوتا رکھتا ہے، v2 کو خود کو ثابت کرنے کا موقع دیتا ہے، اور تیار ہونے پر صاف ستھرے انداز میں منتقل ہو جاتا ہے۔
My Zodiac AI کا موجودہ بیکاینڈ MongoDB پر ہے؛ تبدیل کرنے کا مطلب ایک ایسا انفراسٹرکچر فیصلہ ہوگا جس کا اس فیچر سے کوئی تعلق نہیں۔ ڈاکیومنٹ ماڈل ابواب اور جرنل اندراجات کے ساتھ بھی خوب بیٹھتا ہے — نیسٹڈ، مختلف طوالت والے، اور بطور blob انکرپٹڈ۔
BullMQ، Redis پر چلتا ہے، جو سیشن اور ریٹ-لمٹ کے لیے پہلے ہی اسٹیک میں موجود ہے۔ کوئی نیا انفراسٹرکچر نہیں۔ بلٹ-ان ریٹرائی، ٹائمآؤٹ اور آبزرویبلٹی کسی کسٹم پلمبنگ کے بغیر ابواب کی تخلیق کی ضروریات کو پورا کرتی ہیں۔
اندرونی ریپو میں۔ اس صفحے پر موجود اعداد اور کنٹریکٹس اپاسٹریم V-Model آرٹیفیکٹس کی تفہیمی صورت ہیں۔ My Zodiac AI کے بلاگ کلسٹر پر عوامی انجینئرنگ بلاگ پوسٹس ('cosmic-story-v2' کے ٹیگ کے ساتھ) بناوٹ کے مخصوص حصوں میں زیادہ گہرائی سے جاتی ہیں۔
جب Soulwise اپنی لہریں کھول رہا ہے، ہماری نمایاں علمِ نجوم ایپ پہلے ہی آپ کے ہاتھ میں ہے۔
علمِ نجوم کا مواد غور و فکر اور تفریح کے لیے ہے۔ یہاں بیان کردہ Cosmic Story v2 کی خصوصیات زیرِ تکمیل ہیں؛ ان کی دستیابی بغیر کسی اطلاع کے تبدیل ہو سکتی ہے۔