Files
Neo-ZQYY/docs/audit/changes/2026-03-28__fix-miniprogram-login-landing-page.md
Neo 14a12342b5 chore(audit): 补追 96 份未入仓审计孤本 — 覆盖 2026-02-26 ~ 2026-04-08
这些审计记录原本堆积在 docs/audit/changes/changes/ 嵌套误产物目录下(由开发机迁移
79d3c2e 前后的不明批量操作产生)。由于同期 .gitignore 屏蔽了 docs/audit/ 全目录,
它们从未入过 git 任何分支 history。删除即永久丢失。

按 docs/specs/audit-gap-recovery/tasks.md 阶段 1 执行,将全部 96 份 D 类孤本
(主目录无同名、git history 亦无记录)复制到 docs/audit/changes/ 主目录入仓。

涵盖主题: P1-P18 全栈集成 / 多模块累积变更 / ETL bug 修复 / 业务日切 /
   召回与任务引擎改造 / 租户管理与审批 / 董事会财务 / 客户与助教详情 /
   DDL 基线合并 / Kiro 到 Claude Code 迁移

阶段 2(B 类内容漂移 1 份)和阶段 4(嵌套目录删除)独立推进。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 06:35:42 +08:00

65 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 变更审计记录:修复小程序登录落地页跳转失效
| 字段 | 值 |
|------|-----|
| 日期 | 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` 需补充权限码驱动登录跳转说明(本次审计中已更新)