soulwise_persons
Album entries. userId, status, deletedAt ಮೇಲೆ indexes. ಮೊದಲು soft-delete; PII ನ hard-delete 30 ದಿನಗಳಲ್ಲಿ.
ಎಂಜಿನಿಯರ್ಗಳು, PM ಗಳು, ಪತ್ರಕರ್ತರು ಮತ್ತು partnership scout ಗಳಿಗಾಗಿ. ಸಂಪೂರ್ಣ pipeline, ನಾಲ್ಕು MongoDB collections, EDA events, V-Model ಶಿಸ್ತು, performance targets, security ಮತ್ತು accessibility — ಎಲ್ಲವೂ ಒಂದೇ ಪುಟದಲ್ಲಿ.
ಪ್ರತಿಯೊಂದು step ಗೆ ಒಂದು service, ಒಂದು contract, ಮತ್ತು ಒಂದು event ಇದೆ.
ಒಂದು ಬಳಕೆದಾರ ಕ್ರಿಯೆ — 'Sister ಗಾಗಿ ಇಂದಿನ ಅಧ್ಯಾಯ ರಚಿಸಿ' — ಅಥವಾ ನಿಗದಿತ ಕ್ರಾನ್, ಭಾನುವಾರ 9 a.m. ಸಾರಾಂಶದಂತೆ, ಅಥವಾ ಪ್ರತಿ 6 ಗಂಟೆಗಳ ಹವಾಮಾನ ರಿಫ್ರೆಶ್ನಂತೆ.
ಈ ಕೆಲಸವು soulwise-chapter-generation ಎಂಬ BullMQ ಕ್ಯೂನಲ್ಲಿ ಬಂದು ಸೇರುತ್ತದೆ, ಗಟ್ಟಿ 28-ಸೆಕೆಂಡ್ ಟೈಮ್ಔಟ್ನೊಂದಿಗೆ. ದೀರ್ಘಕಾಲ ಚಲಿಸುವ ಕೆಲಸಗಳನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಿ, ಬಳಕೆದಾರರಿಗೆ 'ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ' ಎಂದು ವರದಿ ಮಾಡಲಾಗುತ್ತದೆ.
ChapterGenerationService ನಾಲ್ಕು-ಅಂಶದ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು — ವ್ಯಕ್ತಿಯ ಸಂದರ್ಭ, ಜ್ಯೋತಿಷ್ಯ, ಸಂಕೇತ, ಲಯ — ಒಂದೇ ಇನ್ಪುಟ್ಗೆ ಜೋಡಿಸುತ್ತದೆ. ಯಾವುದೇ ಕಚ್ಚಾ ಬಳಕೆದಾರ PII ಅನ್ನು ಯಥಾವತ್ತಾಗಿ ಪ್ರಾಂಪ್ಟ್ಗೆ ಸೇರಿಸಲಾಗುವುದಿಲ್ಲ; ಎಲ್ಲವನ್ನೂ ಮೊದಲು ಸ್ವಚ್ಛಗೊಳಿಸಲಾಗುತ್ತದೆ.
AI_GENERATION_ADAPTER ಸಿಂಬಲ್ ಟೋಕನ್ ಮೂಲಕ AI ಪ್ರೊವೈಡರ್ ಕರೆಯಲ್ಪಡುತ್ತದೆ — ಪ್ರೊವೈಡರ್ ಬದಲಾಯಿಸಬಹುದು. ಮುಂದುವರಿಯುವ ಮೊದಲು ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಉದ್ದ, ಆಕಾರ ಮತ್ತು ಸುರಕ್ಷತೆಗಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ.
ನಾಲ್ಕು ವಿಷಯಗಳು ನಡೆಯುತ್ತವೆ: ಕ್ರೈಸಿಸ್ ಕ್ಲಾಸಿಫೈಯರ್ ಬಿಕ್ಕಟ್ಟಿನ ಭಾಷೆಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ; ಆಸ್ಪೆಕ್ಟ್-ಚಿಪ್ ಎಕ್ಸ್ಟ್ರಾಕ್ಟರ್ ಒಂದರಿಂದ ಮೂರು ಜ್ಯೋತಿಷ್ಯ ಚಿಪ್ಗಳನ್ನು ಪಡೆಯುತ್ತದೆ; ಆಂಟಿ-ಕ್ಲೈಮ್ ಫಿಲ್ಟರ್ ನಿಷೇಧಿತ ನುಡಿಗಟ್ಟುಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ; ಪ್ಲಾಟ್ಫಾರ್ಮ್-ನಿರ್ವಹಿಸಿದ ಕೀ ಬಳಸಿ ಬಾಡಿಯನ್ನು AES-256 ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗುತ್ತದೆ.
ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಅನ್ನು ಸೂಕ್ತ MongoDB ಕಲೆಕ್ಷನ್ಗೆ ಬರೆಯಲಾಗುತ್ತದೆ — chapters, journal entries, resonances — ವೇಗದ ಹುಡುಕಾಟಕ್ಕಾಗಿ userId ಮತ್ತು personId ಇಂಡೆಕ್ಸ್ಗಳೊಂದಿಗೆ. ಮೊದಲು ಸಾಫ್ಟ್-ಡಿಲೀಟ್; PII ಯ ಹಾರ್ಡ್-ಡಿಲೀಟ್ 30 ದಿನಗಳಲ್ಲಿ.
ಡೇಟಾಬೇಸ್ ಕಮಿಟ್ ಆದ ನಂತರ EventEmitter2 ಈವೆಂಟ್ — CHAPTER_COMPLETED, JOURNAL_CREATED — ಟ್ರಿಗರ್ ಆಗುತ್ತದೆ. ನೋಟಿಫಿಕೇಶನ್ಸ್ ಮಾಡ್ಯೂಲ್ ಅದನ್ನು ಪಡೆದು, ಇನ್ಬಾಕ್ಸ್ ಐಟಂ ರಚಿಸುತ್ತದೆ, ಮತ್ತು ಐಚ್ಛಿಕವಾಗಿ ಪುಶ್ ಕಳುಹಿಸುತ್ತದೆ (ದಿನಕ್ಕೆ ಒಂದಕ್ಕೆ ಸೀಮಿತ, ಕ್ವೈಟ್ ಅವರ್ಸ್ ಗೌರವಿಸಲಾಗುತ್ತದೆ).
ಫ್ರಂಟ್ಎಂಡ್ ದೃಢೀಕೃತ API ಕರೆಯ ಮೂಲಕ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಅನ್ನು ಪಡೆಯುತ್ತದೆ. ಹೊಸ ವಿಷಯದೊಂದಿಗೆ Hub ಮರು-ರೆಂಡರ್ ಆಗುತ್ತದೆ. ಬಳಕೆದಾರರು ಆಫ್ಲೈನ್ನಲ್ಲಿದ್ದರೆ, ಕ್ಯಾಶ್ ನಿನ್ನೆಯ ವ್ಯೂ ಅನ್ನು ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಮರುಸಂಪರ್ಕದ ಮೇಲೆ ಹೊಸ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ ಕಾಣಿಸುತ್ತದೆ.
ಪ್ರತಿಯೊಂದು ಉತ್ತರಿಸುವ queries ಗಾಗಿ indexed ಮಾಡಲಾಗಿದೆ.
Album entries. userId, status, deletedAt ಮೇಲೆ indexes. ಮೊದಲು soft-delete; PII ನ hard-delete 30 ದಿನಗಳಲ್ಲಿ.
AI ಬರೆದ chapters, encrypted body. personId, userId, generatedAt ಮೇಲೆ indexes. ವೇಗದ filtering ಗಾಗಿ Aspect chips ಪ್ರತ್ಯೇಕ array ಆಗಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ.
ಬಳಕೆದಾರ ಬರೆದ reflections, encrypted body. userId, personId, createdAt ಮೇಲೆ indexes. Search ಗಾಗಿ text-indexed body. ಪ್ರತಿ entry ಗೆ 'private — Luminara ಗೆ feed ಮಾಡಬೇಡಿ' flag.
ಪ್ರತಿ bond ಗೆ ನಾಲ್ಕು-dimension scores. personId ಮೇಲೆ unique index. Chapter ಅಥವಾ journal write ಆದ ನಂತರ service call ಮೂಲಕ ಮರು-ಲೆಕ್ಕಾಚಾರ ಮಾಡಲಾಗುತ್ತದೆ.
ಕಟ್ಟುನಿಟ್ಟಿನ ನಿಯಮ: events ಡೇಟಾಬೇಸ್ commit ಆದ ನಂತರ ಮಾತ್ರ fire ಆಗುತ್ತವೆ. Cross-module ಅವಲಂಬನೆಗಳು Symbol injection tokens ಮೂಲಕ, ಎಂದಿಗೂ forwardRef ಮೂಲಕ ಅಲ್ಲ. Feature modules ನಡುವೆ ನೇರ service-to-service imports ಇಲ್ಲ.
SoulwiseEvents.CHAPTER_COMPLETED — SoulwiseEvents.CHAPTER_COMPLETED — ಒಂದು chapter encrypt ಆಗಿ persist ಆದ ನಂತರ fire ಆಗುತ್ತದೆ. Notifications-v2 ಇದನ್ನು ಆಲಿಸುತ್ತದೆ; inbox item ಸೃಷ್ಟಿಸುತ್ತದೆ; ಅಗತ್ಯವಿದ್ದರೆ push ಕಳುಹಿಸುತ್ತದೆ.SoulwiseEvents.JOURNAL_CREATED — SoulwiseEvents.JOURNAL_CREATED — ಒಂದು journal entry encrypt ಆಗಿ persist ಆದ ನಂತರ fire ಆಗುತ್ತದೆ. Resonance service ಇದನ್ನು ಆಲಿಸುತ್ತದೆ; recompute ಅನ್ನು trigger ಮಾಡುತ್ತದೆ.SoulwiseEvents.PERSON_BIRTH_UPDATED — SoulwiseEvents.PERSON_BIRTH_UPDATED — ಒಬ್ಬ ವ್ಯಕ್ತಿಯ birth-data ಬದಲಾದ ನಂತರ fire ಆಗುತ್ತದೆ. ಸಿನಾಸ್ಟ್ರಿ cache invalidate ಆಗುತ್ತದೆ.SoulwiseEvents.PUSH_REQUESTED — SoulwiseEvents.PUSH_REQUESTED — notifications-v2 contract ಪ್ರಕಾರ; push budget ಮತ್ತು quiet hours ಗೌರವಿಸುತ್ತದೆ.119 traceable requirements, ಯಾವುದೇ gaps ಇಲ್ಲ. ಪ್ರತಿ requirement ಮುಂದೆ ಒಂದು test case ಗೆ (UTP, ITP, STP, E2E) ಮತ್ತು ಹಿಂದೆ ಒಂದು user story ಗೆ map ಆಗುತ್ತದೆ. 20 user stories. 15 functional requirements. 12 non-functional categories. 8 global acceptance gates.
Chapter generation 95% requests ಗಳಿಗೆ 30 ಸೆಕೆಂಡುಗಳು ಅಥವಾ ಅದಕ್ಕಿಂತ ಉತ್ತಮ, BullMQ job duration distribution ಗೆ ಎದುರಾಗಿ ಅಳೆಯಲಾಗಿದೆ. API p99 GET latency 1,000 concurrent users ನಲ್ಲಿ 500 ms ಅಥವಾ ಅದಕ್ಕಿಂತ ಉತ್ತಮ, k6 load test ಮೂಲಕ ಅಳೆಯಲಾಗಿದೆ. Frontend TTI simulated 4G ನಲ್ಲಿ 3 ಸೆಕೆಂಡುಗಳು ಅಥವಾ ಅದಕ್ಕಿಂತ ಉತ್ತಮ, Lighthouse CI ಮೂಲಕ ಅಳೆಯಲಾಗಿದೆ.
Journal ಮತ್ತು chapter bodies ಗಾಗಿ platform-managed keys ನೊಂದಿಗೆ AES-256 encryption at rest. ಸಾಗಣೆಯಲ್ಲಿ TLS 1.2+; HTTP→HTTPS redirect. 1-ಗಂಟೆ lifetime ಹೊಂದಿರುವ JWT access tokens, 30-ದಿನ lifetime ಹೊಂದಿರುವ refresh tokens, refresh ನಲ್ಲಿ rotation. PII ಯ hard-delete ಮುನ್ನ 30-ದಿನ window ಹೊಂದಿರುವ soft-delete.
prefers-reduced-motion ಜಾಗತಿಕವಾಗಿ ಗೌರವಿಸಲಾಗುತ್ತದೆ — GSAP ಆನಿಮೇಶನ್ಗಳು opacity-ಮಾತ್ರ ಫೇಡ್ಗಳಾಗುತ್ತವೆ. ಪ್ರತಿ ಸಂವಾದಾತ್ಮಕ ಅಂಶದ ಮೇಲೆ VoiceOver ಮತ್ತು TalkBack ಲೇಬಲ್ಗಳು. ಪ್ರತಿ ರಿಲೀಸ್ಗೆ ಮೊದಲು iOS ಮತ್ತು Android ನಲ್ಲಿ ಕೈಯಾರೆ ಪರಿಶೀಲಿಸಲಾಗಿದೆ.
ಏಕೆಂದರೆ ಅಪ್ಸ್ಟ್ರೀಮ್ ಸ್ಪೆಕ್ ಈ ಫೀಚರ್ ಅನ್ನು ಮರುನಿರ್ಮಿಸುತ್ತದೆ, ಮತ್ತು ಈಗಿರುವ ಮಾಡ್ಯೂಲ್ನ ಒಳಗೆ ಮರುನಿರ್ಮಾಣ ಮಾಡಿದರೆ v1 ಅನುಭವ ಮುರಿದುಹೋಗುತ್ತದೆ ಅಥವಾ ನಂತರ fork-then-merge ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಹೊಸ ಮಾಡ್ಯೂಲ್ v1 ಅನ್ನು ಮುಟ್ಟದೆ ಇಡುತ್ತದೆ, v2 ತನ್ನನ್ನು ಸಾಬೀತುಪಡಿಸಲು ಅನುವು ಮಾಡುತ್ತದೆ, ಮತ್ತು ಸಿದ್ಧವಾದಾಗ ಶುದ್ಧವಾಗಿ ಮೈಗ್ರೇಟ್ ಆಗುತ್ತದೆ.
ಈಗಿರುವ My Zodiac AI ಬ್ಯಾಕೆಂಡ್ MongoDB ಮೇಲಿದೆ; ಬದಲಾಯಿಸುವುದು ಎಂದರೆ ಈ ಫೀಚರ್ಗೆ ಸಂಬಂಧವಿಲ್ಲದ ಇನ್ಫ್ರಾಸ್ಟ್ರಕ್ಚರ್ ನಿರ್ಧಾರವಾಗುತ್ತದೆ. ಡಾಕ್ಯುಮೆಂಟ್ ಮಾಡೆಲ್ ಕೂಡ ಅಧ್ಯಾಯಗಳು ಮತ್ತು ಜರ್ನಲ್ ನಮೂದುಗಳಿಗೆ ಚೆನ್ನಾಗಿ ಹೊಂದುತ್ತದೆ — ನೆಸ್ಟೆಡ್, ವಿವಿಧ-ಉದ್ದದ, blob-ಆಗಿ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ.
BullMQ Redis ಮೇಲೆ ಚಲಿಸುತ್ತದೆ, ಅದು ಈಗಾಗಲೇ session ಮತ್ತು rate-limit ಗಾಗಿ ಸ್ಟ್ಯಾಕ್ನಲ್ಲಿದೆ. ಹೊಸ ಇನ್ಫ್ರಾಸ್ಟ್ರಕ್ಚರ್ ಬೇಕಿಲ್ಲ. ಒಳಗೇ ಇರುವ retry, timeout, ಮತ್ತು observability ಯಾವುದೇ ಕಸ್ಟಮ್ ಪ್ಲಂಬಿಂಗ್ ಇಲ್ಲದೆ ಅಧ್ಯಾಯ-ರಚನೆಯ ಅಗತ್ಯಗಳನ್ನು ಪೂರೈಸುತ್ತದೆ.
ಆಂತರಿಕ ರೆಪೋ. ಈ ಪುಟದಲ್ಲಿನ ಸಂಖ್ಯೆಗಳು ಮತ್ತು ಒಪ್ಪಂದಗಳು ಅಪ್ಸ್ಟ್ರೀಮ್ V-Model ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುತ್ತವೆ. My Zodiac AI ನ ಬ್ಲಾಗ್ ಕ್ಲಸ್ಟರ್ನಲ್ಲಿ ('cosmic-story-v2' ಎಂದು ಟ್ಯಾಗ್ ಮಾಡಲಾದ) ಸಾರ್ವಜನಿಕ ಎಂಜಿನಿಯರಿಂಗ್ ಬ್ಲಾಗ್ ಪೋಸ್ಟ್ಗಳು ಬಿಲ್ಡ್ನ ನಿರ್ದಿಷ್ಟ ಭಾಗಗಳ ಬಗ್ಗೆ ಆಳವಾಗಿ ಹೋಗುತ್ತವೆ.
Soulwise ತನ್ನ ಅಲೆಗಳನ್ನು ತೆರೆಯುತ್ತಿರುವಾಗ, ನಮ್ಮ ಪ್ರಮುಖ ಜ್ಯೋತಿಷ್ಯ app ಈಗಾಗಲೇ ನಿಮ್ಮ ಕೈಯಲ್ಲಿದೆ.
ಜ್ಯೋತಿಷ್ಯ ವಿಷಯ ಆತ್ಮಾವಲೋಕನ ಮತ್ತು ಮನರಂಜನೆಗಾಗಿ. ಇಲ್ಲಿ ವಿವರಿಸಿರುವ Cosmic Story v2 ವೈಶಿಷ್ಟ್ಯಗಳು ಅಭಿವೃದ್ಧಿಯಲ್ಲಿವೆ; ಲಭ್ಯತೆ ಯಾವುದೇ ಸೂಚನೆ ಇಲ್ಲದೆ ಬದಲಾಗಬಹುದು.