soulwise_persons
Ալբոմի գրառումներ: Ինդեքսներ՝ userId, status, deletedAt դաշտերի վրա: Նախ՝ փափուկ ջնջում; PII-ի կոշտ ջնջումը՝ 30 օրում:
Ինժեներների, արտադրանքի մենեջերների, լրագրողների և գործընկերության հետազոտողների համար: Ամբողջ ընթացքը, չորս MongoDB հավաքածուներ, EDA իրադարձություններ, V-Model խստություն, արդյունավետության թիրախներ, անվտանգություն և մատչելիություն — ամբողջը մեկ էջում:
Յուրաքանչյուր քայլ ունի ծառայություն, պայմանագիր և իրադարձություն:
Օգտատիրոջ գործողություն՝ «ստեղծիր այսօրվա գլուխը Քրոջ համար» — կամ պլանավորված cron, ինչպես կիրակի օրվա 9 a.m. ամփոփումը, կամ ամեն 6 ժամը մեկ եղանակի թարմացումը:
Առաջադրանքն ընկնում է BullMQ հերթ՝ soulwise-chapter-generation անունով, 28 վայրկյան խիստ սահմանով: Երկար տևող առաջադրանքները կասեցվում են և օգտատիրոջը զեկուցվում որպես «փորձեք նորից»:
ChapterGenerationService-ը հավաքում է չորս գործոնով հուշումը՝ անձի համատեքստ, աստղագուշակություն, ազդանշան, հաճախականություն, մեկ ընդհանուր մուտքի մեջ: Օգտատիրոջ ոչ մի չմշակված անձնական տվյալ բառացի չի մտնում հուշման մեջ. ամեն ինչ նախ մաքրվում է:
AI մատակարարը կանչվում է AI_GENERATION_ADAPTER խորհրդանշային թոքենի միջոցով — մատակարարը փոխարինելի է: Պատասխանը ստուգվում է երկարության, ձևի և անվտանգության առումով՝ նախքան շարունակելը:
Տեղի է ունենում չորս բան՝ ճգնաժամի դասակարգիչը ստուգում է ճգնաժամային լեզուն, ասպեկտ-չիպերի արդյունահանիչը հանում է մեկից երեք աստղագիտական չիպ, հակապնդման զտիչը հեռացնում է արգելված ձևակերպումները, իսկ բովանդակությունը գաղտնագրվում է AES-256-ով՝ հարթակի կողմից կառավարվող բանալիով:
Արտեֆակտը գրվում է համապատասխան MongoDB հավաքածուում՝ գլուխներ, օրագրային գրառումներ, ռեզոնանսներ — userId և personId ինդեքսներով՝ արագ որոնման համար: Սկզբում փափուկ ջնջում, ապա PII-ի կոշտ ջնջում 30 օր անց:
EventEmitter2 իրադարձությունը — CHAPTER_COMPLETED, JOURNAL_CREATED — գործարկվում է տվյալների բազայի կոմիտից հետո: Ծանուցումների մոդուլը վերցնում է այն, ստեղծում մուտքերի տուփի տարր և ըստ ցանկության ուղարկում push-ծանուցում (օրական առավելագույնը մեկ անգամ, լուռ ժամերը հարգվում են):
Ֆրոնտենդը վերցնում է արտեֆակտը նույնականացված API կանչի միջոցով: Hub-ը նորից վերարտադրվում է նոր բովանդակությամբ: Եթե օգտատերը անցանց է եղել, քեշը ցույց է տալիս երեկվա տեսքը, իսկ նոր արտեֆակտը հայտնվում է վերակապակցման ժամանակ:
Ինդեքսավորված՝ յուրաքանչյուրի պատասխանած հարցումների համար:
Ալբոմի գրառումներ: Ինդեքսներ՝ userId, status, deletedAt դաշտերի վրա: Նախ՝ փափուկ ջնջում; PII-ի կոշտ ջնջումը՝ 30 օրում:
AI-ի գրած գլուխներ՝ ծածկագրված մարմնով: Ինդեքսներ՝ personId, userId, generatedAt դաշտերի վրա: Aspect chip-երը պահվում են որպես առանձին զանգված՝ արագ ֆիլտրման համար:
Օգտատիրոջ գրած խորհրդածություններ՝ ծածկագրված մարմնով: Ինդեքսներ՝ userId, personId, createdAt դաշտերի վրա: Տեքստով ինդեքսավորված մարմին՝ որոնման համար: Յուրաքանչյուր գրառման համար «մասնավոր — չփոխանցել Luminara-ին» դրոշակ:
Չորս չափման միավորներ յուրաքանչյուր կապի համար: Եզակի ինդեքս՝ personId-ի վրա: Վերահաշվարկվում է ծառայության կանչով՝ գլխի կամ օրագրի գրառումից հետո:
Խիստ կանոն. իրադարձությունները գործարկվում են միայն տվյալների բազայի commit-ից հետո: Մոդուլների միջև կախվածությունները՝ Symbol ներարկման token-ների միջոցով, երբեք՝ forwardRef-ով: Ֆունկցիոնալ մոդուլների միջև ծառայությունից ծառայություն ուղիղ import-ներ չկան:
SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — գործարկվում է գլխի գաղտնագրումից և պահպանումից հետո: Notifications-v2-ը լսում է, ստեղծում inbox-ի տարր, ընտրովի՝ ուղարկում push:SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — գործարկվում է օրագրի գրառման գաղտնագրումից և պահպանումից հետո: Resonance ծառայությունը լսում է և գործարկում վերահաշվարկ:SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — գործարկվում է անձի ծննդյան տվյալների փոփոխությունից հետո: Սինաստրիա-ի cache-ն անվավեր է դառնում:SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 պայմանագրի համաձայն. հաշվի է առնում push-ի բյուջեն և լուռ ժամերը:119 հետագծելի պահանջ, զրո բացթողում: Յուրաքանչյուր պահանջ առաջ է կապվում թեստային դեպքի հետ (UTP, ITP, STP, E2E) և հետ՝ օգտատիրոջ պատմության հետ: 20 օգտատիրոջ պատմություն: 15 ֆունկցիոնալ պահանջ: 12 ոչ ֆունկցիոնալ կատեգորիա: 8 գլոբալ ընդունման դարպաս:
Գլխի գեներացիա՝ 30 վայրկյան կամ ավելի լավ՝ հարցումների 95%-ի համար, չափված BullMQ առաջադրանքի տևողության բաշխման համեմատ: API p99 GET հապաղում՝ 500 մվ կամ ավելի լավ՝ 1,000 միաժամանակյա օգտատիրոջ դեպքում, չափված k6 բեռնման թեստով: Frontend TTI՝ 3 վայրկյան կամ ավելի լավ՝ սիմուլացված 4G-ի վրա, չափված Lighthouse CI-ով:
AES-256 գաղտնագրում հանգստի վիճակում՝ հարթակի կողմից կառավարվող բանալիներով օրագրի և գլխի բովանդակության համար: TLS 1.2+ փոխանցման ընթացքում, HTTP→HTTPS վերահղում: JWT մուտքի token-ներ 1-ժամյա կյանքի տևողությամբ, թարմացման token-ներ 30-օրյա կյանքի տևողությամբ, պտույտ թարմացման ժամանակ: Փափուկ ջնջում՝ 30-օրյա պատուհանով՝ PII-ի վերջնական ջնջումից առաջ:
prefers-reduced-motion-ը հարգվում է գլոբալ կերպով — GSAP անիմացիաները դառնում են միայն թափանցիկության փոփոխությամբ անցումներ։ VoiceOver-ի և TalkBack-ի պիտակները՝ յուրաքանչյուր ինտերակտիվ տարրի վրա։ Ձեռքով ստուգված iOS-ի և Android-ի վրա՝ յուրաքանչյուր թողարկումից առաջ։
Քանի որ վերին մակարդակի սպեցիֆիկացիան վերակառուցում է ֆունկցիան, իսկ առկա մոդուլի ներսում վերակառուցումը կամ կկոտրեր v1 փորձառությունը, կամ կպահանջեր սկզբում ճյուղավորում, ապա միաձուլում։ Նոր մոդուլը պահում է v1-ը անձեռնմխելի, թույլ է տալիս v2-ին ապացուցել իրեն և մաքուր կերպով միգրացիա անել, երբ պատրաստ լինի։
My Zodiac AI-ի առկա backend-ը աշխատում է MongoDB-ի վրա. անցումը կնշանակեր ենթակառուցվածքային որոշում, որը կապ չունի այս ֆունկցիայի հետ։ Փաստաթղթի մոդելը նաև լավ է համապատասխանում գլուխներին և օրագրային գրառումներին՝ ներդրված, փոփոխական երկարությամբ, որպես blob կոդավորված։
BullMQ-ն աշխատում է Redis-ի վրա, որն արդեն stack-ում է՝ սեսիայի և rate-limit-ի համար։ Ոչ մի նոր ենթակառուցվածք։ Ներկառուցված retry-ը, timeout-ը և observability-ն ծածկում են գլուխների գեներացման կարիքները՝ առանց հատուկ կարկատման։
Ներքին repo-ում։ Այս էջի թվերն ու պայմանագրերը վերաշարադրում են վերին մակարդակի V-Model արտեֆակտները։ My Zodiac AI-ի բլոգի կլաստերի՝ հանրությանն ուղղված ինժեներական բլոգային գրառումները (պիտակավորված 'cosmic-story-v2') ավելի խորն են անդրադառնում կառուցման որոշակի մասերին։
Մինչ Soulwise-ը բացում է իր ալիքները, մեր գլխավոր աստղագիտական հավելվածն արդեն ձեր ձեռքում է:
Աստղագիտական բովանդակությունը նախատեսված է մտորումների ու զվարճանքի համար: Այստեղ նկարագրված Cosmic Story v2-ի հնարավորությունները մշակման փուլում են. դրանց առկայությունը կարող է փոխվել առանց նախազգուշացման: