From c7334191e539b20073a7d2108c31149759ce6390 Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Tue, 4 Nov 2025 20:17:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4mock=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.js | 9 ++++ src/mocks/data/users.js | 18 +++---- src/mocks/handlers/account.js | 2 +- src/mocks/handlers/auth.js | 97 +++++++++++++++++++++++++++++++++-- src/mocks/handlers/stock.js | 2 +- 5 files changed, 114 insertions(+), 14 deletions(-) diff --git a/src/index.js b/src/index.js index 9e77e897..8c244d44 100755 --- a/src/index.js +++ b/src/index.js @@ -13,6 +13,15 @@ import App from './App'; // 注册 Service Worker(用于支持浏览器通知) function registerServiceWorker() { + // ⚠️ Mock 模式下跳过 Service Worker 注册(避免与 MSW 冲突) + if (process.env.REACT_APP_ENABLE_MOCK === 'true') { + console.log( + '%c[App] Mock 模式已启用,跳过通知 Service Worker 注册(避免与 MSW 冲突)', + 'color: #FF9800; font-weight: bold;' + ); + return; + } + // 仅在支持 Service Worker 的浏览器中注册 if ('serviceWorker' in navigator) { // 在页面加载完成后注册 diff --git a/src/mocks/data/users.js b/src/mocks/data/users.js index 5eeda785..7a481204 100644 --- a/src/mocks/data/users.js +++ b/src/mocks/data/users.js @@ -112,20 +112,20 @@ export function getCurrentUser() { const stored = localStorage.getItem('mock_current_user'); if (stored) { const user = JSON.parse(stored); - console.log('[Mock State] 获取当前登录用户:', { - id: user.id, - phone: user.phone, - nickname: user.nickname, - subscription_type: user.subscription_type, - subscription_status: user.subscription_status, - subscription_days_left: user.subscription_days_left - }); + // console.log('[Mock State] 获取当前登录用户:', { // 已关闭:减少日志 + // id: user.id, + // phone: user.phone, + // nickname: user.nickname, + // subscription_type: user.subscription_type, + // subscription_status: user.subscription_status, + // subscription_days_left: user.subscription_days_left + // }); return user; } } catch (error) { console.error('[Mock State] 解析用户数据失败:', error); } - console.log('[Mock State] 未找到当前登录用户'); + // console.log('[Mock State] 未找到当前登录用户'); // 已关闭:减少日志 return null; } diff --git a/src/mocks/handlers/account.js b/src/mocks/handlers/account.js index f24ab6b9..37905800 100644 --- a/src/mocks/handlers/account.js +++ b/src/mocks/handlers/account.js @@ -130,7 +130,7 @@ export const accountHandlers = [ ); } - console.log('[Mock] 获取自选股列表'); + // console.log('[Mock] 获取自选股列表'); // 已关闭:减少日志 return HttpResponse.json({ success: true, diff --git a/src/mocks/handlers/auth.js b/src/mocks/handlers/auth.js index b48a27db..d604e824 100644 --- a/src/mocks/handlers/auth.js +++ b/src/mocks/handlers/auth.js @@ -24,8 +24,6 @@ export const authHandlers = [ const body = await request.json(); const { credential, type, purpose } = body; - console.log('[Mock] 发送验证码:', { credential, type, purpose }); - // 生成验证码 const code = generateVerificationCode(); mockVerificationCodes.set(credential, { @@ -33,7 +31,20 @@ export const authHandlers = [ expiresAt: Date.now() + 5 * 60 * 1000 // 5分钟后过期 }); - console.log(`[Mock] 验证码已生成: ${credential} -> ${code}`); + // 超醒目的验证码提示 - 方便开发调试 + console.log( + `%c\n` + + `╔════════════════════════════════════════════╗\n` + + `║ 验证码: ${code.padEnd(22)}║\n` + + `╚════════════════════════════════════════════╝\n`, + 'color: #ffffff; background: #16a34a; font-weight: bold; font-size: 16px; padding: 20px; line-height: 1.8;' + ); + + // 额外的高亮提示 + console.log( + `%c 验证码: ${code} `, + 'color: #ffffff; background: #dc2626; font-weight: bold; font-size: 24px; padding: 15px 30px; border-radius: 8px; margin: 10px 0;' + ); return HttpResponse.json({ success: true, @@ -43,6 +54,86 @@ export const authHandlers = [ }); }), + // 1.1 发送手机验证码(前端实际调用的接口) + http.post('/api/auth/send-sms-code', async ({ request }) => { + await delay(NETWORK_DELAY); + + const body = await request.json(); + const { phone } = body; + + console.log('[Mock] 发送手机验证码请求:', { phone }); + + // 生成验证码 + const code = generateVerificationCode(); + mockVerificationCodes.set(phone, { + code, + expiresAt: Date.now() + 5 * 60 * 1000 // 5分钟后过期 + }); + + // 超醒目的验证码提示 - 方便开发调试 + console.log( + `%c\n` + + `╔════════════════════════════════════════════╗\n` + + `║ 📱 手机验证码: ${code.padEnd(19)}║\n` + + `║ 📞 手机号: ${phone.padEnd(23)}║\n` + + `╚════════════════════════════════════════════╝\n`, + 'color: #ffffff; background: #16a34a; font-weight: bold; font-size: 16px; padding: 20px; line-height: 1.8;' + ); + + // 额外的高亮提示 + console.log( + `%c 📱 验证码: ${code} `, + 'color: #ffffff; background: #dc2626; font-weight: bold; font-size: 24px; padding: 15px 30px; border-radius: 8px; margin: 10px 0;' + ); + + return HttpResponse.json({ + success: true, + message: `验证码已发送到 ${phone}(Mock: ${code})`, + // 开发环境下返回验证码,方便测试 + dev_code: code + }); + }), + + // 1.2 发送邮箱验证码(前端实际调用的接口) + http.post('/api/auth/send-email-code', async ({ request }) => { + await delay(NETWORK_DELAY); + + const body = await request.json(); + const { email } = body; + + console.log('[Mock] 发送邮箱验证码请求:', { email }); + + // 生成验证码 + const code = generateVerificationCode(); + mockVerificationCodes.set(email, { + code, + expiresAt: Date.now() + 5 * 60 * 1000 // 5分钟后过期 + }); + + // 超醒目的验证码提示 - 方便开发调试 + console.log( + `%c\n` + + `╔════════════════════════════════════════════╗\n` + + `║ 📧 邮箱验证码: ${code.padEnd(19)}║\n` + + `║ 📮 邮箱: ${email.padEnd(27)}║\n` + + `╚════════════════════════════════════════════╝\n`, + 'color: #ffffff; background: #2563eb; font-weight: bold; font-size: 16px; padding: 20px; line-height: 1.8;' + ); + + // 额外的高亮提示 + console.log( + `%c 📧 验证码: ${code} `, + 'color: #ffffff; background: #dc2626; font-weight: bold; font-size: 24px; padding: 15px 30px; border-radius: 8px; margin: 10px 0;' + ); + + return HttpResponse.json({ + success: true, + message: `验证码已发送到 ${email}(Mock: ${code})`, + // 开发环境下返回验证码,方便测试 + dev_code: code + }); + }), + // 2. 验证码登录 http.post('/api/auth/login-with-code', async ({ request }) => { await delay(NETWORK_DELAY); diff --git a/src/mocks/handlers/stock.js b/src/mocks/handlers/stock.js index 5491e2e0..623702c2 100644 --- a/src/mocks/handlers/stock.js +++ b/src/mocks/handlers/stock.js @@ -130,7 +130,7 @@ export const stockHandlers = [ try { const stocks = generateStockList(); - console.log('[Mock Stock] 获取股票列表成功:', { count: stocks.length }); + // console.log('[Mock Stock] 获取股票列表成功:', { count: stocks.length }); // 已关闭:减少日志 return HttpResponse.json(stocks); } catch (error) {