这些审计记录原本堆积在 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>
5.0 KiB
5.0 KiB
变更审计记录(Change Audit Record)
- 日期/时间:2026-03-23 08:00:00
- Prompt-ID:P20260323-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.tscheckAuthStatus 按状态路由,disabled 强制登出 - 小程序权限守卫:新建
utils/auth-guard.ts,包含角色→tab 映射、角色→首页映射、页面→角色权限矩阵、checkPageAccess 函数 - 小程序 tab-bar:从
globalData.visibleTabs动态读取可见 tab - 小程序登录页:登录成功后保存 role、syncVisibleTabs、按角色跳转
- 小程序 15 个业务页面:onShow 添加 checkPageAccess 守卫
- 小程序 3 个状态页(apply/reviewing/no-permission):approved 跳转改为 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表已存在
- checkPageAccess 每次 onShow 都请求
- 回滚要点:
- 数据库:执行
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)
- 数据库验证:
SELECT code, name FROM auth.roles ORDER BY id;应返回 6 条(coach, staff, head_coach, manager, site_admin, tenant_admin) - 后端验证:调用
GET /api/xcx/me,approved 用户响应应包含role字段 - 小程序验证:
- 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 |
修改 |