diff --git a/.env b/.env index 32860f9..5cd5308 100644 --- a/.env +++ b/.env @@ -15,6 +15,8 @@ NEXT_PUBLIC_API_BASE=/admin139 # Next.js 服务端反代用(可选) BACKEND_INTERNAL_URL=http://backend:8080 +# 页面右上角“IP+端口访问”按钮地址 +NEXT_PUBLIC_HTTP_ENTRY_URL=http://8.211.173.24:7888/ # ===== OI 题库导入(LLM 识别)===== # 对应 scripts/import_winterant_oi.py 的可选识别配置 diff --git a/frontend/src/app/me/page.tsx b/frontend/src/app/me/page.tsx index 315a4d6..87b19a4 100644 --- a/frontend/src/app/me/page.tsx +++ b/frontend/src/app/me/page.tsx @@ -3,7 +3,7 @@ import { useEffect, useMemo, useState } from "react"; import { PixelAvatar } from "@/components/pixel-avatar"; -import { apiFetch } from "@/lib/api"; +import { apiFetch, listRatingHistory, type RatingHistoryItem } from "@/lib/api"; import { readToken } from "@/lib/auth"; import { useI18nText } from "@/lib/i18n"; diff --git a/frontend/src/components/app-nav.tsx b/frontend/src/components/app-nav.tsx index 10b99a8..96576f9 100644 --- a/frontend/src/components/app-nav.tsx +++ b/frontend/src/components/app-nav.tsx @@ -101,6 +101,8 @@ export function AppNav() { const pathname = usePathname(); const router = useRouter(); const { theme, setTheme, language, setLanguage, themes, t } = useUiPreferences(); + const directHttpAccessUrl = + process.env.NEXT_PUBLIC_HTTP_ENTRY_URL?.trim() || "http://8.211.173.24:7888/"; const [hasToken, setHasToken] = useState(() => Boolean(readToken())); const [isAdmin, setIsAdmin] = useState(false); @@ -384,6 +386,15 @@ export function AppNav() { + + {t("nav.link.http_ip_port")} + {hasToken ? t("nav.logged_in") : t("nav.logged_out")} diff --git a/frontend/src/themes/default/messages/en.ts b/frontend/src/themes/default/messages/en.ts index f54a34d..00fa4a3 100644 --- a/frontend/src/themes/default/messages/en.ts +++ b/frontend/src/themes/default/messages/en.ts @@ -31,6 +31,7 @@ export const enMessages: ThemeMessages = { "nav.link.api_docs": "API Docs", "nav.link.auth": "Sign In", "nav.link.me": "My Account", + "nav.link.http_ip_port": "HTTP (IP:Port)", "mobile.tab.problems": "Problems", "mobile.tab.submissions": "Submits", diff --git a/frontend/src/themes/default/messages/zh.ts b/frontend/src/themes/default/messages/zh.ts index 74c51a3..dbe0414 100644 --- a/frontend/src/themes/default/messages/zh.ts +++ b/frontend/src/themes/default/messages/zh.ts @@ -31,6 +31,7 @@ export const zhMessages: ThemeMessages = { "nav.link.api_docs": "API文档", "nav.link.auth": "登录", "nav.link.me": "我的", + "nav.link.http_ip_port": "IP+端口访问", "mobile.tab.problems": "题库", "mobile.tab.submissions": "提交", diff --git a/frontend/src/themes/minecraft/messages/en.ts b/frontend/src/themes/minecraft/messages/en.ts index c6151ef..ed2709f 100644 --- a/frontend/src/themes/minecraft/messages/en.ts +++ b/frontend/src/themes/minecraft/messages/en.ts @@ -31,6 +31,7 @@ export const enMessages: ThemeMessages = { "nav.link.api_docs": "Redstone Logic", "nav.link.auth": "Login to Server", "nav.link.me": "Character Sheet", + "nav.link.http_ip_port": "HTTP (IP:Port)", "mobile.tab.problems": "Quests", "mobile.tab.submissions": "History", diff --git a/frontend/src/themes/minecraft/messages/zh.ts b/frontend/src/themes/minecraft/messages/zh.ts index eb3bb97..71686ba 100644 --- a/frontend/src/themes/minecraft/messages/zh.ts +++ b/frontend/src/themes/minecraft/messages/zh.ts @@ -31,6 +31,7 @@ export const zhMessages: ThemeMessages = { "nav.link.api_docs": "红石电路图", "nav.link.auth": "登录服务器", "nav.link.me": "角色面板", + "nav.link.http_ip_port": "IP+端口访问", "mobile.tab.problems": "任务", "mobile.tab.submissions": "日志",