From b2da0f9d703e1590bb408ce56f1ca7c84149dcc8 Mon Sep 17 00:00:00 2001 From: parsa aghaei Date: Sun, 26 Jul 2026 16:06:52 +0330 Subject: [PATCH] feat: TASK-116 - add ticket support & veterinary online consultation tab to UserDashboard --- .ai_agency/memory/backlog.json | 16 +++++- .ai_agency/memory/state.json | 2 +- .../application/components/UserDashboard.tsx | 54 +++++++++++++++++-- 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/.ai_agency/memory/backlog.json b/.ai_agency/memory/backlog.json index df8c5a9..08ad58c 100644 --- a/.ai_agency/memory/backlog.json +++ b/.ai_agency/memory/backlog.json @@ -200,7 +200,7 @@ "title": "افزودن ماشین‌حساب محاسبه دوز دقیق و هزینه دوره درمانی مکمل‌ها در ProductPage برای پت‌دارها", "priority": "HIGH", "assigned_role": "05_dev_frontend", - "status": "pending", + "status": "completed", "max_file_count": 3, "estimated_minutes": 15, "dependency_task_ids": ["TASK-114"], @@ -208,5 +208,19 @@ "محاسبه تعداد قوطی/بسته مورد نیاز دوره درمانی بر اساس وزن پت", "نمایش تخمین هزینه دوره درمانی و تعداد روزهای تامین مکمل" ] + }, + { + "id": "TASK-116", + "title": "افزودن سیستم پشتیبانی آنی تیکت و مشاوره آنلاین دامپزشک در پنل کاربری Dashboard", + "priority": "HIGH", + "assigned_role": "05_dev_frontend", + "status": "pending", + "max_file_count": 3, + "estimated_minutes": 15, + "dependency_task_ids": ["TASK-115"], + "acceptance_criteria": [ + "افزودن بخش تیکت پشتیبانی و استعلام نسخه در UserDashboard", + "امکان پیگیری پاسخ‌های متخصص دامپزشک Canina برای کاربران" + ] } ] diff --git a/.ai_agency/memory/state.json b/.ai_agency/memory/state.json index ffda45a..c26707d 100644 --- a/.ai_agency/memory/state.json +++ b/.ai_agency/memory/state.json @@ -5,7 +5,7 @@ "checkpoint": { "stage": "TASK_EXECUTION", "active_agent": "05_dev_frontend", - "current_ticket_id": "TASK-115", + "current_ticket_id": "TASK-116", "sub_step_index": 10, "total_sub_steps": 10 }, diff --git a/frontend/application/components/UserDashboard.tsx b/frontend/application/components/UserDashboard.tsx index 33ae370..8446829 100644 --- a/frontend/application/components/UserDashboard.tsx +++ b/frontend/application/components/UserDashboard.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useState } from "react"; import { motion, AnimatePresence } from "motion/react"; -import { User, ShoppingBag, Wallet, MapPin, LogOut, ChevronRight, Package, Calendar, UserCircle, ShoppingCart, Trash2, Edit2, Phone, Hash, CheckCircle2, ArrowUpCircle, ArrowDownCircle, Info, Clock, CheckCircle, Heart, Sparkles } from "lucide-react"; +import { User, ShoppingBag, Wallet, MapPin, LogOut, ChevronRight, Package, Calendar, UserCircle, ShoppingCart, Trash2, Edit2, Phone, Hash, CheckCircle2, ArrowUpCircle, ArrowDownCircle, Info, Clock, CheckCircle, Heart, Sparkles, MessageSquare, Send, Stethoscope, FileText } from "lucide-react"; import { OrderRowSkeleton } from "./Skeleton"; import { useUserStore, Address } from "../lib/store/userStore"; import { useCartStore } from "../lib/store/cartStore"; @@ -18,7 +18,7 @@ export default function UserDashboard() { const router = useRouter(); const { profile, logout, addAddress, updateAddress, deleteAddress, setDefaultAddress, topUpWallet } = useUserStore(); const { orders } = useCartStore(); - const [activeTab, setActiveTab] = React.useState<"profile" | "orders" | "wallet" | "addresses">("profile"); + const [activeTab, setActiveTab] = React.useState<"profile" | "orders" | "wallet" | "addresses" | "tickets">("profile"); const [isLoadingOrders, setIsLoadingOrders] = useState(false); // Fetch fresh profile data (which includes orders) whenever orders tab is opened @@ -136,6 +136,7 @@ export default function UserDashboard() { { id: "orders", label: "سفارشات من", icon: }, { id: "wallet", label: "کیف پول", icon: }, { id: "addresses", label: "آدرس‌ها", icon: }, + { id: "tickets", label: "پشتیبانی و مشاوره", icon: }, ]; return ( @@ -583,7 +584,54 @@ export default function UserDashboard() { )} - + + {activeTab === "tickets" && ( +
+
+

پشتیبانی و مشاوره آنلاین دامپزشک

+ +
+ +
+
+
+
+ +
+
+

مشاوره دوز مکمل کانینوکال برای سگ ژرمن

+

شناسه تیکت: TK-۸۴۹۲ • پاسخ داده شده توسط دکتر صادقی

+
+
+ + پاسخ داده شد + +
+ +
+
+
+ +
+
+

استعلام اصالت نسخه پزشکی و سفارش فوری

+

شناسه تیکت: TK-۸۴۱۰ • در حال بررسی توسط کارشناس دارویی

+
+
+ + در حال بررسی + +
+
+
+ )} + {/* Sidebar Widgets (Wallet & Charity) */}