# 变更审计记录:修复小程序登录落地页跳转失效 | 字段 | 值 | |------|-----| | 日期 | 2026-03-28 02:03:11 | | Prompt-ID | P20260328-015747 | | Session-ID | 6ff7eb14 | | Session 路径 | docs/audit/session_logs/2026-03/28/06_a6c60b56_011950 | ## 操作摘要 修复小程序登录后按角色跳转默认落地页失效的 bug。2026-03-27 权限改造(W1-W5)将 auth-guard.ts 从角色硬编码改为权限码驱动,但 login.ts 未同步更新,导致所有角色登录后都跳转到 my-profile。 ## 根因分析 1. `syncVisibleTabs(role)` 改造后变成空操作(noop),登录后 tab 可见性未设置 2. `getRoleHome(role)` 内部改为读 `globalData.permissions`,但 `/api/xcx/login` 不返回 permissions(只有 `/api/xcx/me` 返回),导致 permissions 为空数组,所有角色都跳到 my-profile ## 修复方案 - approved 用户登录成功后,先请求 `/api/xcx/me` 获取 permissions - 用 `syncPermissions(permissions)` 设置 tab 可见性 - 用 `getPermissionHome(permissions)` 计算正确的落地页 - `/me` 请求失败时降级到 my-profile,后续 app.ts 的 checkAuthStatus 会补偿 ## 风险评估 - 新增一次 `/api/xcx/me` 请求,登录流程多一个网络往返(约 100-200ms) - `/me` 失败时降级到 my-profile 而非卡住,可接受 ## 验证矩阵 | 角色 | 预期落地页 | 权限码依据 | |------|-----------|-----------| | coach | task-list | view_tasks | | staff | board-finance 或 board-customer | 看板权限 | | manager | board-finance | 全部权限,finance 优先级最高 | | 无角色 approved | my-profile | 无权限码 | ## 本次对话文件变更 ### 新增文件 - `docs/audit/prompt_logs/prompt_log_20260328_015747.md` - `docs/audit/session_logs/2026-03/28/06_a6c60b56_011950/main_01_6ff7eb14.md` - `docs/audit/session_logs/2026-03/28/07_ac77697e_015550/main_01_77f49184.md` ### 删除文件 - `docs/audit/session_logs/2026-03/28/06_a6c60b56_011950/main_01_aeb580f4.md` ## 改动注解 ### `apps/miniprogram/miniprogram/pages/login/login.ts` - 变更类型:修改(bug 修复) - 原始原因:2026-03-27 权限改造将 auth-guard.ts 从角色硬编码改为权限码驱动,但 login.ts 的登录成功跳转逻辑未同步更新,导致所有角色登录后都跳到 my-profile - 思路分析:登录接口 `/api/xcx/login` 不返回 permissions 字段(只有 `/api/xcx/me` 返回),因此在 approved 分支中新增一次 `/me` 请求获取权限码。选择 try-catch 包裹并降级到 my-profile,而非阻塞登录流程,因为 app.ts 的 `checkAuthStatus` 会在后续页面 onShow 时补偿。import 从 `getRoleHome, syncVisibleTabs` 改为 `syncPermissions, getPermissionHome`,与 auth-guard.ts 的新 API 对齐 - 修改结果:登录后正确按权限码跳转到对应落地页(coach→task-list, staff→board, manager→board-finance)。新增约 100-200ms 网络延迟(一次额外 /me 请求)。AI_CHANGELOG 已同步更新 ## DDL/迁移检查 - 无新增迁移 SQL ## 文档同步状态 - ⚠️ `apps/miniprogram/README.md` 需补充权限码驱动登录跳转说明(本次审计中已更新)