feat: PLANNING体系首版(00路线图/02任务总表/03执行协议/I-03/I-04/registry42口径)+M1止血交付

This commit is contained in:
2026-09-12 14:25:25 +08:00
commit 39af400fc8
472 changed files with 36277 additions and 0 deletions
@@ -0,0 +1,60 @@
# Favorites 页面 MobileGuard 弹窗警告修复
## Summary
修复 `/favorites` 路由在桌面端未登录时弹出的 MobileGuard 登录弹窗警告问题。将 Favorites 页面从 MobileGuard 切换到 AuthGuard,使用与其他需要登录的页面一致的认证模式。
## Current State Analysis
### 问题描述
- `/favorites` 路由目前使用 `<MobileGuard>` 包裹(App.tsx 第134行)
- MobileGuard 组件在桌面端检测到未登录用户时,会显示一个登录提示 Modal 弹窗(`showLoginPrompt` 状态控制)
- 这个弹窗是强制的(`closable`, `maskClosable`),用户需要手动关闭
- 这与其它需要登录的页面(如 `/bug` 使用 AuthGuard)的认证模式不一致
### 当前行为
1. 用户访问 `/favorites` 且未登录
2. MobileGuard 检测到 `!isLogin`,设置 `showLoginPrompt = true`
3. 显示登录提示 Modal,遮挡页面内容
4. 用户必须点击"去登录"或"稍后再说"才能继续
### 期望行为
1. 用户访问 `/favorites` 且未登录
2. 显示全局登录弹窗(通过 LoginModalContext)
3. 页面内容为空(AuthGuard 返回 null)
4. 登录后自动显示收藏夹内容
## Proposed Changes
### 修改文件: `src/App.tsx`
**变更内容:**
将 `/favorites` 路由从 `<MobileGuard>` 改为 `<AuthGuard>`
**修改前:**
```tsx
<Route path="/favorites" element={<MobileGuard><Favorites /></MobileGuard>} />
```
**修改后:**
```tsx
<Route path="/favorites" element={<AuthGuard><Favorites /></AuthGuard>} />
```
**原因:**
- AuthGuard 使用全局的 `LoginModalContext` 显示登录弹窗,行为更一致
- AuthGuard 在未登录时返回 `null`,不会渲染子组件,避免不必要的 API 请求
- 与 `/bug` 等页面的认证模式保持一致
## Assumptions & Decisions
1. **假设:** 用户希望 Favorites 页面在桌面端不再显示 MobileGuard 的登录弹窗
2. **决策:** 使用 AuthGuard 替代 MobileGuard,保持认证逻辑的一致性
3. **不修改范围:** 仅修改 `/favorites` 路由,不影响其他使用 MobileGuard 的路由
## Verification
1. 启动开发服务器 `npm run dev`
2. 确保未登录状态
3. 访问 `/favorites`
4. 验证:不再显示 MobileGuard 的登录弹窗,而是显示全局登录提示
5. 登录后验证:收藏夹内容正常加载显示