soulwise_persons
רשומות אלבום. אינדקסים על userId, status, deletedAt. תחילה מחיקה רכה; מחיקה קשה של מידע אישי לאחר 30 ימים.
למהנדסים, מנהלי מוצר, עיתונאים וסוכני שותפויות. הצינור המלא, ארבעה אוספי MongoDB, אירועי EDA, קפדנות מודל‑V, יעדי ביצועים, אבטחה ונגישות — הכל בעמוד אחד.
לכל שלב יש שירות, חוזה, ואירוע.
פעולת משתמש — 'צור את פרק היום עבור אחות' — או משימת cron מתוזמנת, כמו סיכום יום ראשון 9 בבוקר, או רענון מזג האוויר כל 6 שעות.
העבודה נכנסת לתור BullMQ בשם soulwise-chapter-generation, עם מגבלת זמן של 28 שניות. עבודות ארוכות נקטעות ומדווחות כ'נסה שוב' למשתמש.
שירות ChapterGenerationService מרכיב את הפקודה בעלת ארבעת הגורמים — הקשר אישי, אסטרולוגיה, אות, קצב — לקלט יחיד. אין מידע אישי גולמי של משתמש נכנס ישירות לפקודה; הכל מנוקה מראש.
ספק AI נקרא דרך הסימול AI_GENERATION_ADAPTER — הספק ניתן להחלפה. התגובה נבדקת עבור אורך, צורה ובטיחות לפני המשך.
ארבעה דברים קורים: מסווג משבר בודק שפה של משבר; מחלץ שבב‑אספקטים מוציא שבב אסטרולוגי אחד עד שלושה; מסנן טענות מסיר ניסוחים אסורים; הגוף מוצפן ב‑AES-256 עם מפתח מנוהל על ידי הפלטפורמה.
הפריט נכתב לאוסף MongoDB המתאים — פרקים, רשומות יומן, תהודות — עם אינדקסים של userId ו‑personId לחיפוש מהיר. תחילה מחיקה רכה; מחיקה קבועה של PII לאחר 30 ימים.
אירוע EventEmitter2 — CHAPTER_COMPLETED, JOURNAL_CREATED — מתרחש לאחר הקומיט בבסיס הנתונים. מודול ההודעות קולט אותו, יוצר פריט בתיבת הדואר, ובחירה לשלוח פוש (מוגבל לאחד ליום, שעות שקט מכובדות).
החזית מושכת את הפריט דרך קריאת API מאומתת. ה‑Hub מציג מחדש עם התוכן החדש. אם המשתמש היה לא מקוון, המטמון מציג את תצוגת אתמול והפריט החדש מופיע עם החיבור מחדש.
מאונדקס לשאילתות שכל אחד מהם משיב עליהן.
רשומות אלבום. אינדקסים על userId, status, deletedAt. תחילה מחיקה רכה; מחיקה קשה של מידע אישי לאחר 30 ימים.
פרקים שנכתבו על‑ידי AI, גוף מוצפן. אינדקסים על personId, userId, generatedAt. שבבי היבט נשמרים במערך נפרד לסינון מהיר.
הרהורים שנכתבו על‑ידי משתמש, גוף מוצפן. אינדקסים על userId, personId, createdAt. גוף מאונדקס בטקסט לחיפוש. לכל רשומה דגל 'פרטי — אל תזין ל‑Luminara'.
ציון בארבעה ממדים לכל קשר. אינדקס ייחודי על personId. מחושב מחדש באמצעות קריאת שירות לאחר כתיבת פרק או יומן.
כלל קפדני: אירועים מתרחשים רק לאחר commit של מסד הנתונים. תלותים בין מודולים נעשים דרך אסימוני הזרקת Symbol, לעולם לא דרך forwardRef. אין ייבוא ישיר של שירות לשירות בין מודולי תכונה.
SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — מתרחש לאחר שהפרק מוצפן ונשמר. Notifications-v2 מקשיב; יוצר פריט בתיבת הדואר; במידת הצורך שולח push.SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — מתרחש לאחר שהערך ביומן מוצפן ונשמר. שירות Resonance מקשיב; מפעיל חישוב מחדש.SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — מתרחש לאחר שינוי נתוני הלידה של אדם. מטמון סינאstry מתבטל.SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — לפי החוזה של notifications-v2; מכבד את תקציב ה‑push ושעות השקט.119 דרישות ניתנות למעקב, ללא פערים. כל דרישה ממופה קדימה למקרה מבחן (UTP, ITP, STP, E2E) ואחורה לסיפור משתמש. 20 סיפורי משתמש. 15 דרישות פונקציונליות. 12 קטגוריות לא‑פונקציונליות. 8 שערי קבלה גלובליים.
יצירת פרק 30 שניות או פחות עבור 95% מהבקשות, נמדד מול התפלגות משך משימות BullMQ. השהיית GET של API p99 500 ms או פחות ב1,000 משתמשים מקבילים, נמדד באמצעות מבחן עומס k6. זמן TTI של החזית 3 שניות או פחות בתרחיש מדומה של 4G, נמדד דרך Lighthouse CI.
הצפנה AES-256 במנוחה עם מפתחות מנוהלים על ידי הפלטפורמה עבור גופי היומן והפרק. TLS 1.2+ במעבר; הפנייה מ‑HTTP ל‑HTTPS. אסימוני JWT עם זמן חיים של 1 שעות, אסימוני רענון עם זמן חיים של 30 ימים, סיבוב בעת רענון. מחיקה רכה עם חלון של 30 ימים לפני מחיקה קבועה של מידע אישי.
העדפה של reduced‑motion מכובדת גלובלית — אנימציות GSAP הופכות לדהיות של שקיפות בלבד. תוויות VoiceOver ו‑TalkBack על כל אלמנט אינטראקטיבי. נבדק ידנית ב‑iOS וב‑Android לפני כל שחרור.
כי המפרט העליון בונה מחדש את הפונקציה, ובנייה בתוך מודול קיים הייתה שוברת את חוויית v1 או יוצרת פיצול‑לאחר‑מיזוג. מודול חדש משאיר את v1 ללא שינוי, מאפשר ל‑v2 להתבצע, ומעביר בצורה נקייה כשמוכן.
ה‑backend הקיים של My Zodiac AI רץ על MongoDB; שינוי היה משמעות החלטת תשתית שאינה קשורה לתכונה זו. מודל המסמכים מתאים גם לפרקים וגם לרשומות יומן — מקונן, באורך משתנה, מוצפן כ‑blob.
BullMQ פועל על Redis, שכבר נמצא בערימה עבור ניהול סשנים והגבלת קצב. אין צורך בתשתית חדשה. ניסיון חוזר מובנה, timeout ותצפית מכסים את צרכי יצירת הפרקים ללא צורך בצינור מותאם.
במאגר הפנימי. המספרים והחוזים בעמוד זה מפרשים את artefacts של מודל‑V העליון. פוסטים בבלוג ההנדסה הציבורי של My Zodiac AI (מתוייגים ב‑'cosmic‑story‑v2') מתעמקים בחלקים ספציפיים של הבנייה.
בזמן ש‑Soulwise פותחת את הגלים שלה, אפליקציית המזלות הדגלית שלנו כבר ב‑ידיך.
תוכן אסטרולוגיה הוא לשיקוף ובידור. Cosmic Story v2 תכונות המתוארות כאן נמצאות בפיתוח; זמינותן עשויה להשתנות ללא הודעה מראש.