Skip to content

Feature/odoo sync backend - #11

Open
javadnr wants to merge 19 commits into
odoonix:17.0from
javadnr:feature/odoo-sync-backend
Open

Feature/odoo sync backend#11
javadnr wants to merge 19 commits into
odoonix:17.0from
javadnr:feature/odoo-sync-backend

Conversation

@javadnr

@javadnr javadnr commented Jul 24, 2026

Copy link
Copy Markdown

یکپارچه‌سازی با Odoo

این پروژه یک سرویس Backend برای همگام‌سازی اطلاعات بین سیستم ERP اودو (Odoo) و پایگاه داده PostgreSQL پیاده‌سازی می‌کند.

در این راهکار، Odoo و پایگاه داده PostgreSQL مربوط به آن با استفاده از Docker اجرا می‌شوند. سپس Backend از طریق API مبتنی بر XML-RPC به Odoo متصل شده و اطلاعات مربوط به Contacts، Products، Sale Orders و Sale Order Lines را دریافت می‌کند. پس از دریافت اطلاعات، داده‌ها به مدل‌های داخلی سیستم تبدیل شده و در یک پایگاه داده PostgreSQL مجزا ذخیره می‌شوند.

نحوه اجرای پروژه

ابتدا پروژه را Clone کنید:

git clone https://github.com/javadnr/education.git

سپس ایمیج‌های Docker را بسازید:

make build

کانتینرها را اجرا کنید:

make up

برای ایجاد Migrationهای اولیه، وارد سرویس Backend شوید:

make shell
alembic revision --autogenerate -m "init"

سپس Migrationها را روی پایگاه داده اعمال کنید:

make migrate

نحوه عملکرد

پس از اجرای کانتینرها، سرویس Backend به API اودو متصل شده و فرآیند همگام‌سازی اطلاعات را آغاز می‌کند.

برای انعطاف‌پذیری بیشتر، دو حالت اجرای فرآیند Sync در نظر گرفته شده است:

  • اجرای یک‌باره فرآیند همگام‌سازی
  • اجرای مداوم فرآیند در بازه‌های زمانی مشخص

نوع اجرای سرویس از طریق فایل .env قابل تنظیم است. همچنین فایل .env.example به‌عنوان نمونه در پروژه قرار داده شده است تا متغیرهای مورد نیاز و نحوه مقداردهی آن‌ها مشخص باشد.

اجرای تست‌ها

برای اجرای تست‌های پروژه:

make test

تصمیمات معماری

معماری پروژه به‌صورت لایه‌ای (Layered Architecture) طراحی شده است تا مسئولیت هر بخش از سیستم به‌صورت شفاف از سایر بخش‌ها جدا باشد.

  • ارتباط با Odoo در لایه Adapter پیاده‌سازی شده است.
  • منطق تجاری و فرآیند همگام‌سازی در لایه Service قرار دارد.
  • تمامی عملیات مربوط به پایگاه داده از طریق Repositoryها انجام می‌شود.
  • تبدیل داده‌های دریافتی از Odoo به مدل‌های داخلی سیستم توسط Mapperها انجام می‌شود.

این ساختار باعث افزایش خوانایی، تست‌پذیری، توسعه‌پذیری و نگهداری آسان‌تر پروژه می‌شود.

محدودیت‌های شناخته‌شده

اگرچه پروژه تمامی نیازمندی‌های اصلی آزمون را پوشش می‌دهد، اما برای استفاده در محیط عملیاتی (Production) می‌توان بهبودهای زیر را اعمال کرد:

  • فرآیند همگام‌سازی به‌صورت دستی اجرا می‌شود و زمان‌بندی خودکار برای اجرای دوره‌ای آن پیاده‌سازی نشده است. در محیط Production می‌توان از ابزارهایی مانند Celery Beat یا Cron برای اجرای خودکار استفاده کرد.
  • فرآیند همگام‌سازی در حال حاضر در یک فرآیند (Process) اجرا می‌شود. برای افزایش مقیاس‌پذیری در حجم بالای داده‌ها می‌توان از RabbitMQ و Workerهای پس‌زمینه استفاده کرد.
  • تشخیص تغییرات رکوردها تنها بر اساس Odoo ID انجام می‌شود. در صورت نیاز می‌توان از راهکارهای پیشرفته‌تری مانند مقایسه نسخه یا زمان آخرین تغییر (Timestamp) برای مدیریت تعارض داده‌ها استفاده کرد.
  • امکانات مانیتورینگ و جمع‌آوری شاخص‌های عملکرد (Monitoring & Metrics) مانند Prometheus و Grafana در این پروژه پیاده‌سازی نشده‌اند.
  • با توجه به اینکه هدف این آزمون طراحی یک سیستم همگام‌سازی بین Odoo و PostgreSQL است، احراز هویت، مجوزدهی کاربران و ارائه API عمومی در محدوده این پروژه قرار نگرفته‌اند.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant