Files
Neo-ZQYY/docs/audit/changes/2026-03-23__review-modal-phone-display-auto-match-identity-label.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

4.9 KiB
Raw Blame History

变更审计记录:审核弹窗手机号不显示修复 + 自动匹配优化 + 身份标签中文化

字段
日期 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 字段来源错误);前端弹窗打开时自动匹配手机号对应人员并选择角色;助教/员工身份标签从数字改为中文;人员下拉日期加"入职日期"前缀。

原始原因与直接原因

  • 原始原因:用户报告审核弹窗手机号显示 -;要求自动匹配手机号对应人员并自动选择角色;身份标签从数字改为中文;日期前加"入职日期"前缀
  • 直接原因:
    1. list_applications SQL 用了 u.phoneauth.users可能 null应改为 ua.phoneuser_applicationsNOT NULL
    2. 前端弹窗打开时未并行查 coach/staff 人员列表做自动匹配
    3. 助教 identity_label 直接用 level::text(数字),应从 dws.cfg_assistant_level_price 配置表读取中文等级名
    4. 员工 identity_labelstaff_identity::text(数字),应改用 job 字段(职位名称)
    5. 人员下拉日期缺少"入职日期"前缀

变更范围Changed

  • 后端 GET /api/tenant/applicationsSQL 中 u.phoneua.phone
  • 后端 GET /api/tenant/site-staffrole=coach新增查询 dws.cfg_assistant_level_price 配置表构建 level_mapidentity_labellevel_map.get(level) 读取中文等级名
  • 后端 GET /api/tenant/site-staffrole≠coachidentity_labelstaff_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.phoneidentity_label 改回 level::text / staff_identity::text;前端去掉自动匹配逻辑

验证Verification

  • Playwright 验证:打开审核弹窗 → 手机号显示 13810502304 → 自动选中"员工"角色 + "店长 - 厉超 - 13810502304 - 入职日期 2025-12-23"

文件清单Files changed

  • apps/backend/app/routers/tenant_users.pylist_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.md
  • docs/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.mdsession 日志重建替换)

改动注解

apps/backend/app/routers/tenant_users.py

  • 变更类型:修改
  • 原始原因:用户反馈审核弹窗手机号显示 -,身份标签显示为数字而非中文
  • 思路分析:
    1. list_applications SQL 中 u.phone(来自 auth.users,可能为 NULL改为 ua.phone(来自 auth.user_applicationsNOT NULL确保手机号始终有值
    2. list_site_staff 中 coach 角色:新增查询 dws.cfg_assistant_level_price 配置表构建 level_mapidentity_labellevel_map.get(level) 读取中文等级名(如"初级助教"),回退为 str(level)
    3. list_site_staff 中非 coach 角色:identity_labelstaff_identity::text(数字)改为 job 字段(职位名称,如"店长"
    4. list_applications 新增 site_id 查询参数支持;tenant_admintenant_id 过滤(解决新建店铺不在 JWT managed_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 标签来自累积变更,本次对话未涉及数据库结构变更