From 736886fd40e94c5a8c8b786f5c1cb4919bd4d596 Mon Sep 17 00:00:00 2001 From: zzlgreat Date: Thu, 11 Dec 2025 14:48:00 +0800 Subject: [PATCH] update pay ui --- __pycache__/mcp_server.cpython-310.pyc | Bin 89343 -> 89375 bytes app.py | 4 +- mcp_server.py | 15 ++- src/views/AgentChat/constants/models.ts | 11 +- src/views/AgentChat/index.js | 147 +++++++++++++++++++++++- 5 files changed, 165 insertions(+), 12 deletions(-) diff --git a/__pycache__/mcp_server.cpython-310.pyc b/__pycache__/mcp_server.cpython-310.pyc index e4a163a0158929d49d059175cde9fee1d7289579..cddcd1c76962fb9966219d7576eca8e0b1f4f3e6 100644 GIT binary patch delta 18810 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 diff --git a/app.py b/app.py index b837c7fa..72565646 100755 --- a/app.py +++ b/app.py @@ -13448,8 +13448,8 @@ def get_concept_stocks(concept_id): if stock_codes: try: ch_client = Client( - host='127.0.0.1', - port=9000, + host='222.128.1.157', + port=18000, user='default', password='Zzl33818!', database='stock' diff --git a/mcp_server.py b/mcp_server.py index 45a8effd..550768e8 100644 --- a/mcp_server.py +++ b/mcp_server.py @@ -61,6 +61,11 @@ HTTP_CLIENT = httpx.AsyncClient(timeout=60.0) # 模型配置字典(支持动态切换) MODEL_CONFIGS = { + "deepseek": { + "api_key": "sk-7363bdb28d7d4bf0aa68eb9449f8f063", + "base_url": "https://api.deepseek.com", + "model": "deepseek-chat", # 默认模型 + }, "kimi-k2": { "api_key": "sk-TzB4VYJfCoXGcGrGMiewukVRzjuDsbVCkaZXi2LvkS8s60E5", "base_url": "https://api.moonshot.cn/v1", @@ -88,8 +93,8 @@ MODEL_CONFIGS = { }, } -# 保持向后兼容的配置(默认使用 kimi-k2-thinking) -KIMI_CONFIG = MODEL_CONFIGS["kimi-k2-thinking"] +# 保持向后兼容的配置(默认使用 deepseek) +KIMI_CONFIG = MODEL_CONFIGS["deepseek"] DEEPMONEY_CONFIG = MODEL_CONFIGS["deepmoney"] # ==================== MCP协议数据模型 ==================== @@ -166,7 +171,7 @@ class AgentChatRequest(BaseModel): user_avatar: Optional[str] = None # 用户头像URL subscription_type: Optional[str] = None # 用户订阅类型(free/pro/max) session_id: Optional[str] = None # 会话ID(如果为空则创建新会话) - model: Optional[str] = "kimi-k2-thinking" # 选择的模型(kimi-k2, kimi-k2-thinking, glm-4.6, deepmoney, gemini-3) + model: Optional[str] = "deepseek" # 选择的模型(deepseek, kimi-k2, kimi-k2-thinking, glm-4.6, deepmoney, gemini-3) tools: Optional[List[str]] = None # 选择的工具列表(工具名称数组,如果为None则使用全部工具) # ==================== MCP工具定义 ==================== @@ -3100,8 +3105,8 @@ async def agent_chat_stream(chat_request: AgentChatRequest, request: Request): logger.info(f"[工具过滤] 使用全部 {len(tools)} 个工具") # ==================== 动态模型选择 ==================== - selected_model = chat_request.model or "kimi-k2-thinking" - model_config = MODEL_CONFIGS.get(selected_model, MODEL_CONFIGS["kimi-k2-thinking"]) + selected_model = chat_request.model or "deepseek" + model_config = MODEL_CONFIGS.get(selected_model, MODEL_CONFIGS["deepseek"]) logger.info(f"[模型选择] 使用模型: {selected_model} ({model_config['model']})") # 返回流式响应 diff --git a/src/views/AgentChat/constants/models.ts b/src/views/AgentChat/constants/models.ts index bb99afda..44873a04 100644 --- a/src/views/AgentChat/constants/models.ts +++ b/src/views/AgentChat/constants/models.ts @@ -25,6 +25,13 @@ export interface ModelConfig { * 包含所有可供用户选择的 AI 模型 */ export const AVAILABLE_MODELS: ModelConfig[] = [ + { + id: 'deepseek', + name: 'DeepSeek', + description: '高性能对话模型,响应迅速', + icon: React.createElement(Zap, { className: 'w-5 h-5' }), + color: 'blue', + }, { id: 'kimi-k2-thinking', name: 'Kimi K2 Thinking', @@ -37,7 +44,7 @@ export const AVAILABLE_MODELS: ModelConfig[] = [ name: 'Kimi K2', description: '快速响应模型,适合简单查询', icon: React.createElement(Zap, { className: 'w-5 h-5' }), - color: 'blue', + color: 'cyan', }, { id: 'deepmoney', @@ -51,7 +58,7 @@ export const AVAILABLE_MODELS: ModelConfig[] = [ /** * 默认选中的模型 ID */ -export const DEFAULT_MODEL_ID = 'kimi-k2-thinking'; +export const DEFAULT_MODEL_ID = 'deepseek'; /** * 根据 ID 查找模型配置 diff --git a/src/views/AgentChat/index.js b/src/views/AgentChat/index.js index ef7494f4..b40531cc 100644 --- a/src/views/AgentChat/index.js +++ b/src/views/AgentChat/index.js @@ -4,10 +4,11 @@ // 支持两种模式:单一聊天模式 & 投研会议室模式 import React, { useState } from 'react'; -import { Box, Flex, useToast, HStack, Button, Tooltip } from '@chakra-ui/react'; +import { Box, Flex, useToast, HStack, Button, Tooltip, VStack, Text, Icon } from '@chakra-ui/react'; import { motion, AnimatePresence } from 'framer-motion'; -import { MessageSquare, Users } from 'lucide-react'; +import { MessageSquare, Users, Crown, Lock } from 'lucide-react'; import { useAuth } from '@contexts/AuthContext'; +import { useSubscription } from '@hooks/useSubscription'; // 常量配置 - 从 TypeScript 模块导入 import { DEFAULT_MODEL_ID } from './constants/models'; @@ -47,8 +48,12 @@ const ChatMode = { * - 投研会议室模式:多 AI 角色协作讨论投资议题 */ const AgentChat = () => { - const { user } = useAuth(); + const { user, isAuthenticated } = useAuth(); const toast = useToast(); + const { hasSubscriptionLevel, openSubscriptionModal } = useSubscription(); + + // ==================== MAX 权限检查 ==================== + const isMaxUser = user?.subscription_type === 'max' || hasSubscriptionLevel('max'); // ==================== 聊天模式状态 ==================== const [chatMode, setChatMode] = useState(ChatMode.SINGLE); @@ -105,6 +110,142 @@ const AgentChat = () => { const inputRef = React.useRef(null); // ==================== 渲染组件 ==================== + + // 非 MAX 用户显示升级提示 + if (!isMaxUser) { + return ( + + {/* 背景装饰 */} + + + + {/* 升级提示卡片 */} + + + {/* 图标 */} + + + + + {/* 标题 */} + + + 价小前投研 AI + + + + + Max 旗舰版专属功能 + + + + + {/* 描述 */} + + AI 投研助手是 Max 旗舰版用户的专属功能, + 提供智能股票分析、投研会议室、多模型对话等高级功能。 + 升级到 Max 版即可解锁全部 AI 能力。 + + + {/* 功能列表 */} + + {[ + '智能投研助手:一对一 AI 对话分析', + '投研会议室:多 AI 角色协作讨论', + '多模型选择:DeepSeek、Kimi 等', + '专业工具:股票查询、新闻搜索、财务分析', + ].map((feature, idx) => ( + + + {feature} + + ))} + + + {/* 升级按钮 */} + + + + + {/* 当前订阅状态 */} + {isAuthenticated && user && ( + + 当前订阅:{user.subscription_type === 'pro' ? 'Pro 专业版' : '免费版'} + + )} + + + + ); + } + return ( {/* 模式切换栏 */}