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>
This commit is contained in:
Neo
2026-04-20 06:35:42 +08:00
parent 80bda9b991
commit 14a12342b5
96 changed files with 9521 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
# 变更审计记录Change Audit Record
- 日期/时间2026-03-23 08:00:00
- Prompt-IDP20260323-role-routing
- 原始原因用户要求按角色区分登录后跳转页面、tab-bar 可见性、全页面权限守卫,新增 head_coach教练和 manager管理员两个角色
- 直接原因:小程序原有逻辑所有用户统一跳转同一页面,无角色区分;页面无权限守卫,手动输入路径可绕过
## 变更范围Changed
- 数据库:`auth.roles` 新增 head_coach、manager 两条角色记录及对应 `auth.role_permissions` 映射
- 后端 API`/api/xcx/me``/api/xcx/login``/api/xcx/dev-login` 返回 `role` 字段
- 后端 Schema`WxLoginResponse``UserStatusResponse` 增加 `role` 字段
- 小程序全局:`app.ts` checkAuthStatus 按状态路由disabled 强制登出
- 小程序权限守卫:新建 `utils/auth-guard.ts`包含角色→tab 映射、角色→首页映射、页面→角色权限矩阵、checkPageAccess 函数
- 小程序 tab-bar`globalData.visibleTabs` 动态读取可见 tab
- 小程序登录页:登录成功后保存 role、syncVisibleTabs、按角色跳转
- 小程序 15 个业务页面onShow 添加 checkPageAccess 守卫
- 小程序 3 个状态页apply/reviewing/no-permissionapproved 跳转改为 getRoleHome(role)
- 全局类型:`authUser` 增加 `role``globalData` 增加 `visibleTabs`
- BD 手册:更新 `BD_Manual_auth_tables.md` 角色从 4 条到 6 条
## 风险与回滚Risk & Rollback
- 风险点:
- checkPageAccess 每次 onShow 都请求 `/api/xcx/me`,高频页面切换可能增加后端压力(后续可加缓存/节流)
- 角色为空时 tab 只显示"我的",新用户首次登录如果后端未返回 role 会只看到我的页
- 迁移脚本依赖 `auth.roles``auth.permissions` 表已存在
- 回滚要点:
- 数据库:执行 `DELETE FROM auth.role_permissions WHERE role_id IN (SELECT id FROM auth.roles WHERE code IN ('head_coach','manager')); DELETE FROM auth.roles WHERE code IN ('head_coach','manager');`
- 后端:移除 schema 中 role 字段、路由中角色查询逻辑
- 小程序:移除 auth-guard.ts、各页面 checkPageAccess 调用、恢复 app.ts/login.ts/apply.ts/reviewing.ts/no-permission.ts 原有跳转逻辑
## 验证Verification
1. 数据库验证:`SELECT code, name FROM auth.roles ORDER BY id;` 应返回 6 条coach, staff, head_coach, manager, site_admin, tenant_admin
2. 后端验证:调用 `GET /api/xcx/me`approved 用户响应应包含 `role` 字段
3. 小程序验证:
- coach 角色登录 → 跳转任务页tab 只显示"任务+我的"
- staff 角色登录 → 跳转看板页tab 只显示"看板+我的"
- head_coach/manager 角色登录 → 跳转看板页tab 显示"任务+看板+我的"
- coach 手动访问看板页 → 被守卫拦截跳回任务页
- staff 手动访问任务页 → 被守卫拦截跳回看板页
- 账号被禁用 → 任何页面 onShow 触发强制登出
## 文件清单Files changed
| 文件 | 操作 |
|------|------|
| `db/zqyy_app/migrations/2026-03-23__add_head_coach_manager_roles.sql` | 新建 |
| `apps/backend/app/schemas/xcx_auth.py` | 修改 |
| `apps/backend/app/routers/xcx_auth.py` | 修改 |
| `apps/miniprogram/typings/index.d.ts` | 修改 |
| `apps/miniprogram/miniprogram/utils/auth-guard.ts` | 新建 |
| `apps/miniprogram/miniprogram/custom-tab-bar/index.ts` | 修改 |
| `apps/miniprogram/miniprogram/app.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/login/login.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/apply/apply.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/reviewing/reviewing.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/no-permission/no-permission.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/task-list/task-list.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/task-detail/task-detail.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/notes/notes.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/performance/performance.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/performance-records/performance-records.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/board-finance/board-finance.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/board-customer/board-customer.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/board-coach/board-coach.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/customer-detail/customer-detail.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/customer-service-records/customer-service-records.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/coach-detail/coach-detail.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/chat/chat.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/chat-history/chat-history.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/my-profile/my-profile.ts` | 修改 |
| `apps/miniprogram/miniprogram/pages/dev-tools/dev-tools.ts` | 修改 |
| `docs/database/BD_Manual_auth_tables.md` | 修改 |