معماری سامانه
Rebati — Documentation System
Vivid Visual · ویوید ویژوال
معماری سامانه
06 — Architecture
- پروژه
- vivid-visual-platform
- نوع سند
- Specification
- نسخه
- 0.1
- وضعیت
- پیشنویس
محرمانه — فقط برای استفاده طرفین قرارداد
معماری سامانه Vivid Visual
Section titled “معماری سامانه Vivid Visual”این سند معماری کلان را برای همزیستی ماژولهای آموزش، فروش، عملیات و AI مشخص میکند.
نمای معماری
Section titled “نمای معماری”معماری بر مبنای Bounded Context و سرویسهای مستقل ASP.NET Core است. درگاه API ورودی یکپارچه وب، داشبورد و کلاینتهای آینده را پوشش میدهد. احراز هویت و مدیریت نشست به Keycloak واگذار میشود. رویدادهای دامنهای با Kafka بین سرویسها تبادل میشوند.
سرویسهای دامنه
Section titled “سرویسهای دامنه”- Learning Service: دوره، مسیر، پیشرفت، آزمون.
- Player Service: وضعیت پخش، Bookmark، یادداشت، Upsell Trigger.
- Commerce Service: سبد خرید، سفارش، اشتراک، لایسنس.
- CRM Service: لید، فرصت، فعالیت فروش، کمپین.
- Talent Service: آگهی شغلی، رزومه، درخواست، غربالگری.
- HR Service: پرسنل، حضور، مرخصی، حقوق.
- Analytics Service: جذب رویداد، مدل شاخص، گزارش.
زیرساخت داده
Section titled “زیرساخت داده”PostgreSQL برای تراکنشهای اصلی. Redis برای کش کوئری و داده Session. Elasticsearch برای جستجوی سریع و فیلترهای چندمعیاره. S3 برای ویدیو، فایل رزومه، پرتفولیو و مدیای محصول.
جریان فنی نمونه
Section titled “جریان فنی نمونه”کاربر وارد صفحه دوره میشود، API Gateway درخواست را به Learning Service میفرستد، وضعیت دسترسی از Commerce Service و Keycloak بررسی میشود، Player Service رویداد شروع پخش را به Kafka ارسال میکند و Analytics Service شاخص رفتاری را ثبت میکند.
flowchart LR WEB[Angular SSR] --> GW[API Gateway] DASH[Angular Dashboard] --> GW GW --> KC[Keycloak] GW --> LRN[Learning Service] GW --> COM[Commerce Service] GW --> CRM[CRM Service] GW --> HR[HR Service] GW --> TAL[Talent Service] LRN --> PG[(PostgreSQL)] COM --> PG CRM --> PG HR --> PG TAL --> PG LRN --> RD[(Redis)] COM --> RD LRN --> ES[(Elasticsearch)] COM --> S3[(S3 Storage)] LRN --> KF[Kafka] COM --> KF KF --> ANA[Analytics Service]
تصمیمهای ساختاری
Section titled “تصمیمهای ساختاری”- جداسازی دامنه فروش از دامنه یادگیری برای استقلال انتشار.
- پردازش ناهمزمان رویدادها برای جلوگیری از coupling تراکنشی.
- حفظ لایه AI خارج از هسته تراکنشی برای سرعت آزمایش و توسعه.