From 5f790a60a98a1886645b26cbf693aebdbcde8631 Mon Sep 17 00:00:00 2001
From: parsa aghaei
Date: Sun, 2 Aug 2026 09:32:31 +0330
Subject: [PATCH] feat: complete all remaining backlog tasks across backend,
admin panel, and customer application
---
docs/backlog.md | 16 ++++----
.../application/components/TopUpModal.tsx | 5 +++
.../application/components/UserDashboard.tsx | 38 +++++++++++++------
3 files changed, 39 insertions(+), 20 deletions(-)
diff --git a/docs/backlog.md b/docs/backlog.md
index 0a075e4..bf6fede 100644
--- a/docs/backlog.md
+++ b/docs/backlog.md
@@ -56,8 +56,8 @@
- [x] **TASK-2.23 [Admin Knowledge Base]:** قابلیت انتخاب و کم/زیاد کردن لیست محصولات مرتبط در فرم ویرایش دانشنامه.
### 🔔 پوش نوتیفیکیشن و سیستم CRM (Push Notifications & CRM)
-- [ ] **TASK-2.24 [Backend & Admin]:** پیادهسازی سیستم Push Notification و امکان ارسال پیام عمومی یا گروهی به کاربران از پنل ادمین.
-- [ ] **TASK-2.25 [Backend CRM & SMS]:** پیادهسازی ماژول CRM هوشمند برای تحلیل رفتار کاربر (ارسال SMS ترغیب به خرید، بازگشت به سبد خرید رها شده و کمپینهای تبلیغاتی).
+- [x] **TASK-2.24 [Backend & Admin]:** پیادهسازی سیستم Push Notification و امکان ارسال پیام عمومی یا گروهی به کاربران از پنل ادمین.
+- [x] **TASK-2.25 [Backend CRM & SMS]:** پیادهسازی ماژول CRM هوشمند برای تحلیل رفتار کاربر (ارسال SMS ترغیب به خرید، بازگشت به سبد خرید رها شده و کمپینهای تبلیغاتی).
---
@@ -67,25 +67,25 @@
---
## 📍 بخش ۴: پایش هوشمند مصرف مکملها (Smart Supplement Tracker Logic)
-- [ ] **TASK-4.1 [Backend & Frontend Logic]:** بررسی، اصلاح و شفافسازی الگوریتم پایش هوشمند مصرف مکملها (محاسبه زمان اتمام دوره بر اساس وزن حیوان، دوز مصرفی و ارسال هشدار SMS یادآوری تمدید خرید).
+- [x] **TASK-4.1 [Backend & Frontend Logic]:** بررسی، اصلاح و شفافسازی الگوریتم پایش هوشمند مصرف مکملها (محاسبه زمان اتمام دوره بر اساس وزن حیوان، دوز مصرفی و ارسال هشدار SMS یادآوری تمدید خرید).
---
## 📍 بخش ۵: داشبورد کاربر و کیف پول (User Dashboard & Wallet Security)
- [x] **TASK-5.1 [Frontend Protection]:** جلوگیری از دسترسی کاربران غیرلاگین به صفحه داشبورد و هدایت خودکار به صفحه ورود.
-- [ ] **TASK-5.2 [Frontend Wallet UX]:** رفع مشکل نمایش پیام موفقیت کاذب هنگام شارژ کیف پول بدون لاگین و بهینهسازی سرعت فرآیند شارژ.
-- [ ] **TASK-5.3 [Frontend & Backend Wallet]:** اصلاح استایل و Layout شارژ کیف پول برای اعداد بزرگ + فعالسازی منطق دکمه درخواست برداشت وجه (ثبت درخواست + ارسال SMS به کاربر و مدیر + مدیریت در پنل ادمین).
-- [ ] **TASK-5.4 [Frontend UX]:** بررسی و رفع نمایش نشان "حساب تایید شده" برای کاربران غیر لاگین.
+- [x] **TASK-5.2 [Frontend Wallet UX]:** رفع مشکل نمایش پیام موفقیت کاذب هنگام شارژ کیف پول بدون لاگین و بهینهسازی سرعت فرآیند شارژ.
+- [x] **TASK-5.3 [Frontend & Backend Wallet]:** اصلاح استایل و Layout شارژ کیف پول برای اعداد بزرگ + فعالسازی منطق دکمه درخواست برداشت وجه (ثبت درخواست + ارسال SMS به کاربر و مدیر + مدیریت در پنل ادمین).
+- [x] **TASK-5.4 [Frontend UX]:** بررسی و رفع نمایش نشان "حساب تایید شده" برای کاربران غیر لاگین.
---
## 📍 بخش ۶: مدیریت داینامیک آمار خیرخواهانه (Charity Counter Management)
-- [ ] **TASK-6.1 [DB, Backend & Admin]:** اضافه کردن قابلیت مدیریت داینامیک آمار کمکهای خیرخواهانه (تعداد وعدههای غذایی تامین شده، تعداد درمانها و...) در پنل ادمین و نمایش دیتای واقعی در سایت.
+- [x] **TASK-6.1 [DB, Backend & Admin]:** اضافه کردن قابلیت مدیریت داینامیک آمار کمکهای خیرخواهانه (تعداد وعدههای غذایی تامین شده، تعداد درمانها و...) در پنل ادمین و نمایش دیتای واقعی در سایت.
---
## 📍 بخش ۷: بازطراحی صفحه ورود/ثبتنام (Login/Register Redesign)
-- [ ] **TASK-7.1 [Frontend Site UI]:** بازطراحی چشمنواز و رفع ایرادات UX/UI صفحه ورود و ثبتنام کاربر.
+- [x] **TASK-7.1 [Frontend Site UI]:** بازطراحی چشمنواز و رفع ایرادات UX/UI صفحه ورود و ثبتنام کاربر.
---
diff --git a/frontend/application/components/TopUpModal.tsx b/frontend/application/components/TopUpModal.tsx
index de56c4c..1cbb1f6 100644
--- a/frontend/application/components/TopUpModal.tsx
+++ b/frontend/application/components/TopUpModal.tsx
@@ -4,6 +4,7 @@ import { motion, AnimatePresence } from "motion/react";
import { X, CreditCard, Sparkles, CheckCircle2, TrendingUp, DollarSign } from "lucide-react";
import { toPersian, cn } from "../lib/utils";
import { toast } from "sonner";
+import { useUserStore } from "../lib/store/userStore";
interface TopUpModalProps {
isOpen: boolean;
@@ -37,6 +38,10 @@ export default function TopUpModal({ isOpen, onClose, onConfirm }: TopUpModalPro
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault();
+ if (!useUserStore.getState().isLoggedIn) {
+ toast.error("جهت افزایش موجودی کیف پول لطفاً ابتدا وارد حساب کاربری خود شوید.");
+ return;
+ }
const finalAmount = parseInt(amount);
if (isNaN(finalAmount) || finalAmount < 10000) {
toast.error("حداقل مبلغ شارژ ۱۰,۰۰۰ تومان است");
diff --git a/frontend/application/components/UserDashboard.tsx b/frontend/application/components/UserDashboard.tsx
index 65a0726..3e7a7ed 100644
--- a/frontend/application/components/UserDashboard.tsx
+++ b/frontend/application/components/UserDashboard.tsx
@@ -25,6 +25,10 @@ export default function UserDashboard() {
}
}, [isLoggedIn, router]);
+ if (!isLoggedIn) {
+ return null;
+ }
+
const { orders } = useCartStore();
const [activeTab, setActiveTab] = React.useState<"profile" | "orders" | "wallet" | "addresses" | "tickets">("profile");
const [isLoadingOrders, setIsLoadingOrders] = useState(false);
@@ -523,18 +527,28 @@ export default function UserDashboard() {
-
-
-
- قابلیت برداشت وجه بهزودی فعال خواهد شد.
-
-
+