رفتن به محتوا
پروژهvivid-visual-platformنوعSpecificationنسخه0.1وضعیتپیش‌نویس

معماری سامانه

این سند معماری کلان را برای هم‌زیستی ماژول‌های آموزش، فروش، عملیات و AI مشخص می‌کند.

معماری بر مبنای Bounded Context و سرویس‌های مستقل ASP.NET Core است. درگاه API ورودی یکپارچه وب، داشبورد و کلاینت‌های آینده را پوشش می‌دهد. احراز هویت و مدیریت نشست به Keycloak واگذار می‌شود. رویدادهای دامنه‌ای با Kafka بین سرویس‌ها تبادل می‌شوند.

  • Learning Service: دوره، مسیر، پیشرفت، آزمون.
  • Player Service: وضعیت پخش، Bookmark، یادداشت، Upsell Trigger.
  • Commerce Service: سبد خرید، سفارش، اشتراک، لایسنس.
  • CRM Service: لید، فرصت، فعالیت فروش، کمپین.
  • Talent Service: آگهی شغلی، رزومه، درخواست، غربال‌گری.
  • HR Service: پرسنل، حضور، مرخصی، حقوق.
  • Analytics Service: جذب رویداد، مدل شاخص، گزارش.

PostgreSQL برای تراکنش‌های اصلی. Redis برای کش کوئری و داده Session. Elasticsearch برای جستجوی سریع و فیلترهای چندمعیاره. S3 برای ویدیو، فایل رزومه، پرتفولیو و مدیای محصول.

کاربر وارد صفحه دوره می‌شود، 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]
  • جداسازی دامنه فروش از دامنه یادگیری برای استقلال انتشار.
  • پردازش ناهمزمان رویدادها برای جلوگیری از coupling تراکنشی.
  • حفظ لایه AI خارج از هسته تراکنشی برای سرعت آزمایش و توسعه.