+ {product.calculatedAnnualRate !== null
+ ? `${product.calculatedAnnualRate.toFixed(2)}%`
+ : product.annualRate !== null
+ ? `${product.annualRate.toFixed(2)}%`
+ : "-"}
+
+
{product.currency}
+
{product.notes || "-"}
+
0 ? "text-green-600" : product.profit && product.profit < 0 ? "text-red-600" : ""}>
+ {product.profit !== null ? product.profit.toLocaleString() : "-"}
+
+
+ {product.dailyProfit !== null ? product.dailyProfit.toFixed(2) : "-"}
+
+
+ {product.monthlyProfit !== null ? product.monthlyProfit.toFixed(2) : "-"}
+
+
+ {product.averageAnnualProfit !== null ? product.averageAnnualProfit.toFixed(2) : "-"}
+
+
+
+
)
diff --git a/components/login-suggestion.tsx b/components/login-suggestion.tsx
new file mode 100644
index 0000000..64e3b59
--- /dev/null
+++ b/components/login-suggestion.tsx
@@ -0,0 +1,90 @@
+"use client"
+
+import { useSession, signIn } from "next-auth/react"
+import { Button } from "@/components/ui/button"
+import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
+import { Alert, AlertDescription } from "@/components/ui/alert"
+import { LogIn, AlertTriangle, Cloud, Shield, RefreshCw } from "lucide-react"
+
+export function LoginSuggestion() {
+ const { data: session, status } = useSession()
+
+ // 如果已登录,不显示此组件
+ if (status === "authenticated" || status === "loading") {
+ return null
+ }
+
+ const loginFeatures = [
+ {
+ icon: