diff --git a/frontend/src/pages/admin/Achievement.tsx b/frontend/src/pages/admin/Achievement.tsx index 10ceb61..4bcda45 100644 --- a/frontend/src/pages/admin/Achievement.tsx +++ b/frontend/src/pages/admin/Achievement.tsx @@ -269,65 +269,65 @@ const Achievement: React.FC = () => { return (
@@ -381,7 +381,7 @@ const Achievement: React.FC = () => {
-
+

分类分布

{Object.entries(stats.by_category).map(([cat, count]) => { const pct = stats.total_achievements > 0 ? (count / stats.total_achievements) * 100 : 0; @@ -432,7 +432,7 @@ const Achievement: React.FC = () => {
{ach.description || '暂无描述'}
{CATEGORY_LABELS[ach.category] || ach.category} - + {CRITERIA_LABELS[ach.criteria_type] || ach.criteria_type}: {ach.criteria_value} @@ -558,7 +558,7 @@ const Achievement: React.FC = () => { {entry.username || entry.user_id || '匿名用户'} {entry.achievement_count || 0} {entry.total_points || 0} - + {entry.last_completed ? new Date(entry.last_completed).toLocaleDateString('zh-CN') : '-'} diff --git a/frontend/src/pages/admin/DeveloperTools.tsx b/frontend/src/pages/admin/DeveloperTools.tsx index a686513..d134f70 100644 --- a/frontend/src/pages/admin/DeveloperTools.tsx +++ b/frontend/src/pages/admin/DeveloperTools.tsx @@ -221,7 +221,7 @@ export default function AdminDeveloperTools() {
{testResult && ( -
+
Test Result: {testResult.status} {testResult.response_code && | HTTP {testResult.response_code}} @@ -307,11 +307,11 @@ export default function AdminDeveloperTools() { {/* Supported Events Info */} {webhookEvents.length > 0 && ( -
+

Supported Events

{webhookEvents.map(ev => ( -
+
{ev.value}
{ev.desc}
@@ -339,7 +339,7 @@ export default function AdminDeveloperTools() {
{webhookEvents.map(ev => ( -
{sdkPackages.filter(p => p.language === selectedSdk).map(pkg => ( -
+
{/* Package Info */}
@@ -442,7 +442,7 @@ export default function AdminDeveloperTools() { {/* Section Header */}
setExpandedSection(isExpanded ? null : section.section)} - style={{ padding: '14px 16px', background: 'rgba(255,255,255,0.05)', cursor: 'pointer', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }} + style={{ padding: '14px 16px', background: 'rgba(0,0,0,0.04)', cursor: 'pointer', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }} >
@@ -462,7 +462,7 @@ export default function AdminDeveloperTools() { const epKey = `${section.section}-${ep.path}`; const isEpExpanded = expandedEndpoint === epKey; return ( -
+
setExpandedEndpoint(isEpExpanded ? null : epKey)} style={{ padding: '10px 16px', cursor: 'pointer', display: 'flex', alignItems: 'center', gap: '12px' }} diff --git a/frontend/src/pages/admin/Models.tsx b/frontend/src/pages/admin/Models.tsx index 2da9b29..2d23542 100644 --- a/frontend/src/pages/admin/Models.tsx +++ b/frontend/src/pages/admin/Models.tsx @@ -64,7 +64,7 @@ const ModelStatsPanel: React.FC<{ models: AIModel[]; providers: ModelProvider[]
{items.map((item, i) => (
{item.icon} @@ -361,7 +361,7 @@ const Models: React.FC = () => {

大模型配置

-

+

管理 AI 模型供应商、模型配置和连接测试

@@ -414,7 +414,7 @@ const Models: React.FC = () => { const isExpanded = expandedProvider === provider.id; return ( -
+
@@ -427,7 +427,7 @@ const Models: React.FC = () => { )} {provModels.length} 个模型
-
+
API: {(provider as any).api_base_url || provider.apiBaseUrl || '未配置'} {(provider as any).api_key || provider.apiKey ? ' ✓ 已配置Key' : ' ✗ 未配置Key'}
@@ -523,7 +523,7 @@ const Models: React.FC = () => { - + ¥{(model.pricePerMillionTokens || 0).toFixed(4)}/M @@ -564,7 +564,7 @@ const Models: React.FC = () => { display: 'flex', alignItems: 'center', justifyContent: 'center', }} onClick={() => setExpandedTestResult(null)}>
e.stopPropagation()}> @@ -627,9 +627,9 @@ const Models: React.FC = () => { })} {providers.length === 0 && ( -
+
🤖
-

暂无模型供应商,点击上方按钮添加

+

暂无模型供应商,点击上方按钮添加

)}
@@ -761,6 +761,6 @@ const labelStyle: React.CSSProperties = { display: 'block', marginBottom: '6px', const inputStyle: React.CSSProperties = { width: '100%', padding: '8px 12px', border: '1px solid rgba(255,255,255,0.1)', borderRadius: '6px', fontSize: '13px', boxSizing: 'border-box' }; const alertStyle = (bg: string, color: string): React.CSSProperties => ({ background: bg, color, padding: '10px 16px', borderRadius: '6px', fontSize: '13px' }); const modalOverlay: React.CSSProperties = { position: 'fixed', inset: 0, background: 'rgba(0,0,0,0.5)', display: 'flex', alignItems: 'center', justifyContent: 'center', zIndex: 1000 }; -const modalContent: React.CSSProperties = { background: 'rgba(17,22,39,0.5)', borderRadius: '12px', padding: '24px', width: '480px', maxWidth: '90vw', maxHeight: '90vh', overflow: 'auto', boxSizing: 'border-box' }; +const modalContent: React.CSSProperties = { background: '#FFFFFF', borderRadius: '12px', padding: '24px', width: '480px', maxWidth: '90vw', maxHeight: '90vh', overflow: 'auto', boxSizing: 'border-box' }; export default Models; diff --git a/frontend/src/pages/admin/Storage.tsx b/frontend/src/pages/admin/Storage.tsx index 2ea9355..f88d942 100644 --- a/frontend/src/pages/admin/Storage.tsx +++ b/frontend/src/pages/admin/Storage.tsx @@ -358,7 +358,7 @@ const Storage: React.FC = () => {
{/* Tab Switcher */} -
+