这些审计记录原本堆积在 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>
4.9 KiB
4.9 KiB
变更审计记录:审核弹窗手机号不显示修复 + 自动匹配优化 + 身份标签中文化
| 字段 | 值 |
|---|---|
| 日期 | 2026-03-23 19:30:00 |
| Prompt-ID | P20260323-190000 |
| Session-ID | abb5b8d0 |
| Session 路径 | docs/audit/session_logs/2026-03/23/19_abb5b8d0_165704 |
操作摘要
审核弹窗手机号显示 - 修复(SQL phone 字段来源错误);前端弹窗打开时自动匹配手机号对应人员并选择角色;助教/员工身份标签从数字改为中文;人员下拉日期加"入职日期"前缀。
原始原因与直接原因
- 原始原因:用户报告审核弹窗手机号显示
-;要求自动匹配手机号对应人员并自动选择角色;身份标签从数字改为中文;日期前加"入职日期"前缀 - 直接原因:
list_applicationsSQL 用了u.phone(auth.users,可能 null),应改为ua.phone(user_applications,NOT NULL)- 前端弹窗打开时未并行查 coach/staff 人员列表做自动匹配
- 助教
identity_label直接用level::text(数字),应从dws.cfg_assistant_level_price配置表读取中文等级名 - 员工
identity_label用staff_identity::text(数字),应改用job字段(职位名称) - 人员下拉日期缺少"入职日期"前缀
变更范围(Changed)
- 后端
GET /api/tenant/applications:SQL 中u.phone→ua.phone - 后端
GET /api/tenant/site-staff(role=coach):新增查询dws.cfg_assistant_level_price配置表构建 level_map,identity_label从level_map.get(level)读取中文等级名 - 后端
GET /api/tenant/site-staff(role≠coach):identity_label从staff_identity::text改为job字段 - 前端 ReviewModal:弹窗打开时并行查 coach + staff 人员列表,按手机号自动匹配(优先助教→coach,其次员工→staff)
- 前端 staffOptions label 格式:
身份 - 姓名 - 手机号 - 入职日期 YYYY-MM-DD
风险与回滚(Risk & Rollback)
- 风险点:
dws.cfg_assistant_level_price配置表数据不全时,level_map.get()回退为str(level),不会报错但显示数字 - 回滚要点:后端 SQL 改回
u.phone;identity_label改回level::text/staff_identity::text;前端去掉自动匹配逻辑
验证(Verification)
- Playwright 验证:打开审核弹窗 → 手机号显示
13810502304✅ → 自动选中"员工"角色 + "店长 - 厉超 - 13810502304 - 入职日期 2025-12-23" ✅
文件清单(Files changed)
apps/backend/app/routers/tenant_users.py(list_applications SQL phone 字段 + list_site_staff identity_label 逻辑)apps/tenant-admin/src/pages/UserApproval/index.tsx(自动匹配 + staffOptions label 格式)
本次对话文件变更
新增:
docs/audit/prompt_logs/prompt_log_20260323_170814.mddocs/audit/session_logs/2026-03/23/19_abb5b8d0_165704/main_01_2f435f10.md
删除:
docs/audit/session_logs/2026-03/23/19_abb5b8d0_165704/main_01_39ddae75.md(session 日志重建替换)
改动注解
apps/backend/app/routers/tenant_users.py
- 变更类型:修改
- 原始原因:用户反馈审核弹窗手机号显示
-,身份标签显示为数字而非中文 - 思路分析:
list_applicationsSQL 中u.phone(来自auth.users,可能为 NULL)改为ua.phone(来自auth.user_applications,NOT NULL),确保手机号始终有值list_site_staff中 coach 角色:新增查询dws.cfg_assistant_level_price配置表构建level_map,identity_label从level_map.get(level)读取中文等级名(如"初级助教"),回退为str(level)list_site_staff中非 coach 角色:identity_label从staff_identity::text(数字)改为job字段(职位名称,如"店长")list_applications新增site_id查询参数支持;tenant_admin按tenant_id过滤(解决新建店铺不在 JWTmanaged_site_ids中的问题)
- 修改结果:审核弹窗手机号正确显示;助教/员工身份标签显示中文;tenant_admin 可看到所有管辖租户下的申请
apps/tenant-admin/src/pages/UserApproval/index.tsx
- 变更类型:修改
- 原始原因:用户要求弹窗打开时自动匹配手机号对应人员并选择角色
- 思路分析:弹窗打开时并行请求 coach + staff 人员列表,按手机号匹配(优先助教→coach,其次员工→staff),自动设置角色和人员选择;staffOptions label 格式优化为
身份 - 姓名 - 手机号 - 入职日期 YYYY-MM-DD - 修改结果:审核弹窗打开后自动匹配并选中对应人员和角色,减少管理员手动操作
合规检查
- ⚠️ 接口代码已变更但 OpenAPI spec 未同步(
compliance.openapi_spec_stale=true),需手动导出或下次启动后端时执行python scripts/ops/_export_openapi.py - DDL 基线:无新增迁移 SQL,无需操作
db-schema-change标签来自累积变更,本次对话未涉及数据库结构变更