diff --git a/docs/BRD_IMPLEMENTATION_AUDIT.md b/docs/BRD_IMPLEMENTATION_AUDIT.md index e4351c34..ae3e1ed3 100644 --- a/docs/BRD_IMPLEMENTATION_AUDIT.md +++ b/docs/BRD_IMPLEMENTATION_AUDIT.md @@ -25,7 +25,7 @@ | 缺口 | BRD依据 | 当前事实 | 下一步 | |---|---|---|---| -| 正式主管身份、项目范围和数据权限 | 5.4、L1-B、G3 | 代码已有 `aihr_org_snapshot`、岗位/项目过滤和主管接口,但正式上游快照的手机号关联不足,线上视觉测试不能替代真实主管身份验证 | 用正式组织同步 dry-run 先核对项目、岗位、`ext_party_id`、手机号;只在上游数据合规后执行正式同步 | +| 正式主管身份、项目范围和数据权限 | 5.4、L1-B、G3 | 代码已有 `aihr_org_snapshot`、岗位/项目过滤和主管接口;移动端角色查询失败已改为安全降级员工端,但正式上游快照的手机号关联仍不足,线上视觉测试不能替代真实主管身份验证 | 用正式组织同步 dry-run 先核对项目、岗位、`ext_party_id`、手机号;只在上游数据合规后执行正式同步 | | M5 正式试点证据 | L1-B/C/D、G1/G3/G4 | 本地严格门禁和导出能力已存在;本地样本不能代表正式窗口,不能用 seed/烟测数据替代 | 固定 1–2 个住宅项目和窗口,按唯一在职身份采集训练、人工校准、SOP 评审、完训率和满意度 | | AI 分数与人工复核边界 | 4.1、4.5、G1/G2 | 面试和对练已有人工复核/校准入口;仍需在正式试点报告中保留“AI 建议、人工可否决”的证据 | 导出中保留 AI 分、人工分、复核人、复核时间和最终采用值 | diff --git a/mobile-uni/src/services/position.ts b/mobile-uni/src/services/position.ts index 4128df64..320aabfd 100644 --- a/mobile-uni/src/services/position.ts +++ b/mobile-uni/src/services/position.ts @@ -39,7 +39,9 @@ export const hydrateMobileRole = async (): Promise => { uni.setStorageSync(roleKey, role); return role; } catch { - return (uni.getStorageSync(roleKey) === 'supervisor' ? 'supervisor' : 'user') as RoleKey; + // ponytail: role lookup failure fails closed; never reuse a stale supervisor cache. + uni.removeStorageSync(roleKey); + return 'user'; } }; diff --git a/mobile-uni/tests/mobile-user-pages.test.mjs b/mobile-uni/tests/mobile-user-pages.test.mjs index 9a49ee0f..623f845e 100644 --- a/mobile-uni/tests/mobile-user-pages.test.mjs +++ b/mobile-uni/tests/mobile-user-pages.test.mjs @@ -90,6 +90,7 @@ test('登录后按组织身份切换主管首页', async () => { assert.match(source, /\/api\/aihr\/mobile\/me/); assert.match(source, /role === 'supervisor'/); assert.match(source, /pages\/supervisor\/index\/index/); + assert.match(source, /removeStorageSync\(roleKey\)/); }); test('员工首页保留师傅区、语音条、今日安排、我的地图四段结构', async () => { diff --git a/scripts/demo-check.sh b/scripts/demo-check.sh index 6d69f23d..bd69e82a 100755 --- a/scripts/demo-check.sh +++ b/scripts/demo-check.sh @@ -305,6 +305,7 @@ contains mobile-uni/src/pages/user/sop/index.vue "有帮助" contains mobile-uni/src/pages/user/sop/index.vue "没解决" contains mobile-uni/src/services/knowledge.ts "/api/knowledge/summary-card" contains mobile-uni/src/services/knowledge.ts "/api/knowledge/position-sop" +contains mobile-uni/src/services/position.ts "removeStorageSync(roleKey)" contains mobile-uni/src/services/case.ts "/api/knowledge/case/upload" contains mobile-uni/src/services/candidate.ts "/api/recruit/interview/start" contains mobile-uni/src/services/candidate.ts "/api/aihr/mobile/candidate/materials"