fix(M3-M11): clients meta pagination, client detail types, sidebar icon imports, payments error state; add E2E specs for all modules

This commit is contained in:
Forge
2026-03-26 09:41:15 +08:00
parent 562ff9e9b6
commit 9d107ece2f
13 changed files with 390 additions and 24 deletions

View File

@@ -13,7 +13,7 @@ import { Table, TableHead, TableBody, TableRow, Th, Td, EmptyState } from "@/com
import { formatDate, formatCurrency } from "@/lib/utils";
import api from "@/lib/api";
import { toast } from "sonner";
import type { Client, Subscription, Invoice, Ticket as TicketType, Payment, PaginatedResponse, LegacyPaginatedResponse } from "@/types";
import type { Client, Subscription, Invoice, Ticket as TicketType, Payment, LegacyPaginatedResponse } from "@/types";
type Tab = "profile" | "subscriptions" | "invoices" | "payments" | "tickets";
@@ -74,9 +74,9 @@ export default function ClientDetailPage() {
enabled: activeTab === "payments",
});
const { data: ticketsData } = useQuery<PaginatedResponse<TicketType>>({
const { data: ticketsData } = useQuery<LegacyPaginatedResponse<TicketType>>({
queryKey: ["client-tickets", id],
queryFn: async () => { const r = await api.get<PaginatedResponse<TicketType>>(`/api/v1/tickets?clientId=${id}&page=1&limit=20`); return r.data; },
queryFn: async () => { const r = await api.get<LegacyPaginatedResponse<TicketType>>(`/api/v1/tickets?clientId=${id}&page=1&limit=20`); return r.data; },
enabled: activeTab === "tickets",
});
@@ -192,7 +192,7 @@ export default function ClientDetailPage() {
<Td><Badge variant="muted">{sub.type ?? sub.plan?.type ?? "—"}</Badge></Td>
<Td><Badge variant={statusColor[sub.status] ?? "muted"}>{sub.status}</Badge></Td>
<Td>{formatDate(sub.startDate)}</Td>
<Td>{formatCurrency(sub.plan?.monthlyPrice ?? sub.monthlyRate ?? sub.mrc ?? 0)}</Td>
<Td>{formatCurrency(Number(sub.monthlyPrice ?? sub.plan?.monthlyPrice ?? 0))}</Td>
</TableRow>
))
}