Add landing page, referral system, usage quotas, search API management, and yearly pricing

- Separate workspace landing from login for better UX
- Referral system rewards both parties with Pro days
- Quota enforcement prevents abuse without breaking endpoints
- 7-day free trial with auto-downgrade on expiry
- Admin-managed search provider config (SearXNG, Bing)
- 15% discount on annual subscriptions
- MCP search server wrapping opencode search
- Fix discovery module field name mismatch causing 422
This commit is contained in:
TradeMate Dev
2026-05-26 11:40:13 +08:00
parent 52dba37f22
commit bed5c7abef
39 changed files with 1988 additions and 152 deletions
+13 -3
View File
@@ -2,8 +2,8 @@
<el-container class="layout-container">
<el-aside :width="collapsed ? '64px' : '220px'" class="sidebar">
<div class="sidebar-header">
<span v-show="!collapsed" class="logo-text">TradeMate</span>
<span v-show="collapsed" class="logo-text logo-sm">TM</span>
<router-link v-show="!collapsed" to="/" class="logo-text">TradeMate</router-link>
<router-link v-show="collapsed" to="/" class="logo-text logo-sm">TM</router-link>
</div>
<el-menu
:default-active="route.path"
@@ -42,6 +42,16 @@
<el-icon><List /></el-icon>
<span>发票管理</span>
</el-menu-item>
<el-sub-menu index="/system">
<template #title>
<el-icon><Tools /></el-icon>
<span>系统管理</span>
</template>
<el-menu-item index="/system/search-config">
<el-icon><Search /></el-icon>
<span>搜索配置</span>
</el-menu-item>
</el-sub-menu>
</el-menu>
</el-aside>
@@ -99,7 +109,7 @@ const collapsed = ref(false)
.layout-container { height: 100vh; }
.sidebar { background: #fff; border-right: 1px solid #e8e8e8; transition: width 0.3s; overflow: hidden; }
.sidebar-header { height: 60px; display: flex; align-items: center; justify-content: center; border-bottom: 1px solid #f0f0f0; }
.logo-text { color: #1890ff; font-size: 18px; font-weight: 700; white-space: nowrap; }
.logo-text { color: #1890ff; font-size: 18px; font-weight: 700; white-space: nowrap; text-decoration: none; }
.logo-sm { font-size: 16px; }
.sidebar :deep(.el-menu) { border-right: none; }
.sidebar :deep(.el-menu-item) { margin: 2px 8px; border-radius: 8px; }