مستر پای وب

توسعه وب‌سایت، وب‌اپلیکیشن و سیستم‌های سازمانی
بازگشت به نمونه‌کارها
سامانه جامع ای‌آرپی و گردش‌کار سازمانی شانی‌مو (Shanimo ERP)

سامانه جامع ای‌آرپی و گردش‌کار سازمانی شانی‌مو (Shanimo ERP)

یک فرم‌ساز پویا (Dynamic Form Builder) است که به ادمین‌ها اجازه می‌دهد فرم‌های پیچیده را با مراحل مجزا، فیلدهای متنوع و دسترسی‌های سطح‌بندی‌شده تعریف کنند. فرآیندهای کاری به صورت خودکار بین کاربران بر اساس نقش‌ها هدایت …

Overview

درباره پروژه

یک فرم‌ساز پویا (Dynamic Form Builder) است که به ادمین‌ها اجازه می‌دهد فرم‌های پیچیده را با مراحل مجزا، فیلدهای متنوع و دسترسی‌های سطح‌بندی‌شده تعریف کنند. فرآیندهای کاری به صورت خودکار بین کاربران بر اساس نقش‌ها هدایت می‌شوند و هر مرحله مهلت اختصاصی خود را دارد.

این سیستم از معماری RBAC برای کنترل دسترسی دقیق در سطوح مختلف (فرم، مرحله، فیلد) بهره می‌برد و با ارائه‌ی خروجی‌های حرفه‌ای (PDF، Excel) و نمایش تاریخ‌های شمسی، نیازهای سازمان‌های ایرانی را پوشش می‌دهد.

دستاوردهای فنی: پیاده‌سازی سیستم نوتیفیکیشن مبتنی بر Service Worker، مدیریت کش برای بهبود عملکرد، طراحی رابط کاربری واکنش‌گرا با پشتیبانی از دارک‌مود، و توسعه‌ی اسکریپت‌های مدیریتی برای یکپارچه‌سازی داده‌ها.

بخش های مختلف سایت شامل سی آر ام مشتریان و انبار و حسابداری و ... در دست طراحی و توسعه می باشد.

Case Study

مطالعه موردی پروژه

چالش‌ها، راهکارها، دستاوردها، نکات فنی، معماری و مقیاس پروژه

⚡

چالش‌ها

۱. پیاده‌سازی فرم‌سازی پویا با حفظ یکپارچگی داده‌ها:** تبدیل فرم‌های نمونه (Template) به نمونه‌های در حال اجرا (Instance) بدون ایجاد وابستگی‌های مخرب و مدیریت صحیح کپی‌کردن فیلدها، گزینه‌ها و دسترسی‌ها در زمان اجرا.
۲. مدیریت گردش‌کار چندمرحله‌ای با کنترل مهلت‌ها:** طراحی سیستمی که هر مرحله مهلت مستقل داشته باشد، تاخیرها را ثبت کند و پیشرفت کاربران را به‌صورت لحظه‌ای نمایش دهد؛ همچنین امکان برگشت (Reject) و اصلاح در سطوح مختلف (فیلد، مرحله، کل فرم) بدون از دست دادن داده‌ها.
۳. سیستم احراز هویت و دسترسی‌های سطح‌بندی‌شده (RBAC) در لایه‌های مختلف:** اعمال مجوزهای دقیق روی فرم‌ها، مراحل و حتی فیلدها به‌گونه‌ای که هر کاربر فقط داده‌های مجاز خود را ببیند و پر کند؛ همراه با مدیریت همزمان نقش‌های چندگانه برای هر کاربر.
۴. بهینه‌سازی عملکرد و نوتیفیکیشن:** کاهش تعداد درخواست‌های سرور با استفاده از کش (`LocMemCache`) و مدیریت هوشمند اعلان‌ها (فقط در صورت وجود وظیفه‌ی جدید) بدون ارسال نوتیف اضافی، همراه با پشتیبانی از Service Worker برای اعلان‌های مرورگر.

💡

راه‌حل‌ها

فرم‌سازی پویا: ذخیره‌ی مستقیم `input_type` در `InstanceField` و کپی کامل متادیتا هنگام ایجاد فرم کپی برای قطع وابستگی به فرم مادر.
گردش‌کار و مهلت‌ها: استفاده از `JSONField` برای ذخیره‌ی مهلت هر مرحله و تاریخچه‌ی مراحل؛ متدهای `start_step` و `complete_step` برای مدیریت دقیق زمان‌بندی و ثبت تاخیرها.
RBAC سطح‌بندی‌شده: پیاده‌سازی `access_type` با گزینه‌های `all`، `specific_role` و `specific_user` در مدل فیلدها و بررسی دسترسی با متد `is_accessible_by` در زمان اجرا.
نوتیفیکیشن بهینه: کش کردن تعداد وظایف (`LocMemCache`) و مقایسه‌ی `notified_task_ids` برای ارسال اعلان فقط در صورت وجود وظیفه‌ی جدید؛ مدیریت `isFetching` در کلاینت برای جلوگیری از درخواست‌های همزمان.
یکپارچه‌سازی داده‌های قدیمی: اسکریپت `fix_instance_field_input_type` با قابلیت `--dry-run` برای بازیابی `input_type` در فرم‌های کپی قبلی بدون خطر تغییرات ناخواسته.

📚

دستاوردها

توانمندسازی کاربران غیرفنی: ایجاد بستری برای تعریف فرم‌های پیچیده و گردش‌کارهای سازمانی بدون نیاز به حتی یک خط کدنویسی که وابستگی به تیم فنی را به حداقل رسانده است.
شفافیت و کنترل کامل بر فرآیندها: پیاده‌سازی سیستم تایید/رد هوشمند در سه سطح (فیلد، مرحله و کل فرم) همراه با ثبت تاریخچه‌ی کامل و نمایش پیشرفت لحظه‌ای که مدیریت سازمان را شفاف‌تر کرده است.
مدیریت امنیت و دسترسی در دقیق‌ترین سطح: اجرای موفق سیستم احراز هویت مبتنی بر نقش (RBAC) که دسترسی کاربران را حتی تا سطح یک فیلد خاص کنترل می‌کند و امنیت داده‌ها را تضمین می‌نماید.
افزایش بهره‌وری با بهینه‌سازی عملکرد: کاهش چشم‌گیر درخواست‌های سرور با پیاده‌سازی کش هوشمند و ارسال اعلان‌های لحظه‌ای فقط در صورت وجود وظیفه‌ی جدید، که تجربه‌ی کاربری را روان‌تر ساخته است.
سازگاری با زیرساخت و فرهنگ سازمانی ایران: پشتیبانی کامل از تاریخ‌های شمسی، خروجی‌های حرفه‌ای (PDF، Excel) و امکان اتصال به MySQL که آن را برای سازمان‌های ایرانی کاملاً کاربردی کرده است.
قابلیت ارتقا به یکپارچه‌سازی کامل سازمانی: طراحی ماژولار سیستم که امکان افزودن ماژول‌های مالی، انبار و فروش را فراهم کرده و زیرساخت یک ای‌آرپی جامع را ایجاد نموده است.

🔧

نکات فنی برجسته

معماری ماژولار و جداسازی کامل لایه‌ها: تفکیک اپلیکیشن‌های dynamicform (تعریف فرم)، form_flow (اجرا و گردش‌کار)، form_review (تایید/رد)، reports (گزارش‌گیری) و account (مدیریت کاربران و نقش‌ها) که توسعه و نگهداری را بسیار آسان کرده است.
قطع وابستگی‌های مخرب با ذخیره‌سازی مستقیم متادیتا: ذخیره‌ی input_type و step_title مستقیماً در InstanceField به‌جای ارجاع به FormInput که باعث می‌شود فرم‌های کپی پس از تغییر یا حذف فرم مادر، کاملاً مستقل و پایدار باقی بمانند.
مدیریت گردش‌کار با JSONField و تراکنش‌های اتمیک: استفاده از JSONField برای ذخیره‌ی تاریخچه‌ی مراحل (step_history) و مهلت‌های هر مرحله (step_deadlines)؛ همراه با استفاده از transaction.atomic() در ویوهای کلیدی برای تضمین یکپارچگی داده‌ها.
سیستم احراز هویت و دسترسی پویا در سه سطح: پیاده‌سازی access_type با گزینه‌های all، specific_role و specific_user در مدل فیلدها و متد is_accessible_by برای بررسی دسترسی در زمان اجرا؛ همراه با قابلیت نقش‌های چندگانه برای هر کاربر.
بهینه‌سازی عملکرد با کش هوشمند و مدیریت درخواست‌ها: استفاده از LocMemCache برای کش کردن تعداد وظایف هر کاربر (timeout=5) و پیاده‌سازی isFetching در سمت کلاینت برای جلوگیری از درخواست‌های همزمان و کاهش بار سرور.
سیستم نوتیفیکیشن پیشرفته با Service Worker: ثبت sw.js و استفاده از Push API برای ارسال اعلان‌های مرورگر حتی در حالت بسته بودن مرورگر؛ همراه با مدیریت notified_task_ids برای جلوگیری از ارسال نوتیف تکراری.
اسکریپت‌های مدیریتی یکپارچه‌سازی داده: اسکریپت fix_instance_field_input_type با قابلیت --dry-run و --instance-id برای بازیابی داده‌های قدیمی بدون خطر تغییرات ناخواسته.
پشتیبانی از تاریخ شمسی و خروجی‌های متنوع: استفاده از persiantools برای تبدیل تاریخ‌ها به شمسی در تمپلیت‌ها و ویوها؛ همراه با خروجی‌گیری حرفه‌ای (PDF با reportlab، Excel با openpyxl و xlsxwriter).
رابط کاربری واکنش‌گرا با دارک‌مود: پیاده‌سازی استایل‌های اختصاصی برای پشتیبانی از تم تاریک ([data-bs-theme="dark"]) در تمام تمپلیت‌ها؛ همراه با دکمه‌های چسبان (Sticky) در پایین صفحات برای بهبود تجربه‌ی کاربری در موبایل.

🏗️

معماری پروژه

معماری پروژه بر پایه‌ی Django با رویکرد ماژولار و لایه‌ای طراحی شده است. اپلیکیشن‌های مستقل شامل dynamicform (تعریف فرم‌های نمونه)، form_flow (اجرا و گردش‌کار)، form_review (تایید/رد)، reports (گزارش‌گیری) و account (مدیریت کاربران و RBAC) کاملاً از هم تفکیک شده‌اند تا توسعه و نگهداری را آسان‌تر کنند. هسته‌ی پروژه با قطع وابستگی متادیتا (ذخیره‌ی مستقیم input_type و step_title در فرم‌های کپی) و استفاده از JSONField برای مدیریت تاریخچه و مهلت مراحل، پایداری و انعطاف‌پذیری بالایی دارد. همچنین سیستم احراز هویت و دسترسی‌ها در سه سطح (فرم، مرحله و فیلد) پیاده‌سازی شده و با بهره‌گیری از کش (LocMemCache) و Service Worker، عملکرد و تجربه‌ی کاربری بهینه‌ای ارائه می‌دهد.

📐

مقیاس پروژه

پروژه شامل ۹ اپلیکیشن مجزا، بیش از ۳۰ مدل، حدود ۵۰ ویو و ۴۰+ تمپلیت است که در مجموع بیش از ۱۰,۰۰۰ خط کد (شامل بک‌اند، فرانت‌اند و اسکریپت‌های مدیریتی) را پوشش می‌دهد. این سیستم با پشتیبانی از ۱۸ نوع فیلد، مدیریت فرم‌های چندمرحله‌ای با مهلت‌های مجزا، سیستم تایید/رد در سه سطح و دسترسی‌های مبتنی بر نقش، برای سازمان‌های متوسط تا بزرگ (۱۰۰ تا ۵۰۰+ کاربر هم‌زمان) طراحی شده و قابلیت ارتقا به ای‌آرپی کامل با ماژول‌های مالی، انبار و فروش را دارد.

Stack

تکنولوژی‌ها

Bootstrap Django Django REST Framework HTML/CSS JavaScript MySQL PostgreSQL Python SQLite
Categories

دسته‌بندی‌ها

پنل مدیریتی / داشبورد سیستم اتوماسیون اداری سیستم CRM سیستم ERP وب‌سایت شرکتی
Industry

حوزه کسب‌وکار

سیستم‌های مدیریت سازمانی
Scope

حوزه فعالیت

«طراحی و پیاده‌سازی سیستم‌های مدیریت فرآیندهای سازمانی (BPM) و سامانه‌های یکپارچه‌ی ای‌آرپی (ERP) با
Statistics

آمار پروژه

28
👁️ بازدید
0
❤️ لایک
0
⬇️ دانلود
0
⭐ امتیاز
Metrics

آمارهای سفارشی

شاخص‌های کلیدی عملکرد پروژه

9 تعداد اپلیکیشن‌ها
۳۰+ تعداد مدل‌ها
۵۰+ تعداد ویوها
۴۰+ تعداد تمپلیت‌ها
۱۰,۰۰۰+ خطوط کد (تخمینی)
۱۸ نوع فیلدهای پشتیبانی‌شده
۳ ماژول‌های در حال توسعه
۵۰۰+ ظرفیت کاربری پیشنهادی
Team

اعضای تیم پروژه

افرادی که در این پروژه همکاری داشته‌اند

حسن کاظمی
حسن کاظمی
توسعه‌دهنده Full Stack
Links

لینک‌های مفید

Visuals

تصاویر پروژه

بخش‌هایی از محیط و رابط کاربری پروژه

پروژه مشابهی در ذهن دارید؟

اگر برای توسعه یک وب‌سایت، CRM، ERP یا سیستم اختصاصی نیاز به همکاری دارید، خوشحال می‌شوم درباره پروژه شما صحبت کنیم.

شروع یک پروژه