diff --git a/video-gen-api/app/main.py b/video-gen-api/app/main.py index 1f3cea5b..20b31be7 100644 --- a/video-gen-api/app/main.py +++ b/video-gen-api/app/main.py @@ -189,6 +189,8 @@ async def _seed_data(): ("user_register_credits", "100", "用户注册赠送积分"), ("user_login_credits", "0", "用户每日登录赠送积分"), ("user_login_credits_enabled", "false", "启用每日登录赠送积分"), + # Operation manual + ("operation_manual", "", "操作手册链接"), ] for key, value, desc in configs: existing = await db.execute( diff --git a/video-gen-app/src/components/Layout/AppLayout.tsx b/video-gen-app/src/components/Layout/AppLayout.tsx index 329f0a4d..63f29069 100644 --- a/video-gen-app/src/components/Layout/AppLayout.tsx +++ b/video-gen-app/src/components/Layout/AppLayout.tsx @@ -600,6 +600,7 @@ const AppLayout: React.FC = () => { { key: 'myCredits', icon: , label: '积分明细' }, { key: 'orderRecords', icon: , label: '订单记录' }, { key: 'messages', icon: , label: `消息中心${unreadCount > 0 ? `(${unreadCount})` : ''}` }, + ...(operationManualUrl ? [{ key: 'manual' as const, icon: , label: '操作手册' }] : []), { type: 'divider' as const }, { key: 'changePwd', icon: , label: '修改密码' }, { type: 'divider' as const }, @@ -613,6 +614,7 @@ const AppLayout: React.FC = () => { else if (key === 'recharge') { setRechargeModalOpen(true); } else if (key === 'myCredits') { navigate('/user-center?tab=credits'); } else if (key === 'orderRecords') { navigate('/user-center?tab=orders'); } + else if (key === 'manual') { window.open(operationManualUrl, '_blank'); } }; const handleChangePwd = async () => {