fix(case): align project scope query with 2026-07-16 org snapshot contract

客户反馈核验中发现:案例素材上传对所有 APP 用户报
「当前账号没有可用项目身份」——projectScopesForAppUser 查询快照表
已不存在的 project_ext_org_id 列(07-16 组织新契约更名为 project_code),
DataAccessException 被兜底吞掉后 scope 恒为空。全代码库仅此一处引用
旧列名(aihr_case_record 自身列不受影响,读写走同一解析器语义一致)。

修复后生产全链路跑通:主管上传语音(TTS合成测试音频)→ ASR 转写
→ organize 结构化(背景/处理/结果)→ curate 入库 → 员工 records 可见。
后端已发布(备份 ruoyi-admin.jar.bak-20260718095809,重启25s恢复)。

同轮生产验证(有奖征题闭环,零代码改动):员工发问→运营审核→
后台发悬赏征题(rewardPoints=50+deadline)→员工回答→审核→采纳最佳
→积分0→50到账(明细正确)、重复采纳不重复发奖、员工调管理接口403、
员工端问题榜/积分页 UI 呈现全部正确。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-18 10:01:53 +08:00
co-authored by Claude Fable 5
parent dd3f39ef44
commit 13ec3bf20c
@@ -243,16 +243,18 @@ public class AihrCaseService {
return List.of();
}
try {
// 2026-07-16 org contract renamed the snapshot project column to project_code;
// case scopes follow it (aihr_case_record keeps its own project_ext_org_id column).
return jdbcTemplate.query("""
SELECT DISTINCT project_ext_org_id
SELECT DISTINCT project_code
FROM aihr_org_snapshot
WHERE tenant_id = ?
AND employment_status = 'active'
AND project_ext_org_id IS NOT NULL
AND project_ext_org_id <> ''
AND project_code IS NOT NULL
AND project_code <> ''
AND (person_phone = ? OR ext_party_id = ?)
ORDER BY project_ext_org_id
""", (rs, rowNum) -> rs.getString("project_ext_org_id"), tenantId(), username, username);
ORDER BY project_code
""", (rs, rowNum) -> rs.getString("project_code"), tenantId(), username, username);
} catch (DataAccessException e) {
log.warn("resolve app user project scope failed(处理错误已隐藏)");
return List.of();