diff --git a/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java b/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java index 53fdbd3e..aea2f3f4 100644 --- a/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java +++ b/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java @@ -15,7 +15,7 @@ import org.dromara.aihr.domain.AihrModelDto.ProviderRequest; import org.dromara.aihr.domain.AihrModelDto.ProviderResponse; import org.dromara.aihr.domain.AihrModelDto.ProviderStatusRequest; import org.dromara.aihr.domain.AihrModelDto.ModelUsage; -import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.tenant.helper.TenantHelper; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -478,7 +478,7 @@ public class AihrModelSeedService { } private String tenantId() { - return fallback(LoginHelper.getTenantId(), TENANT_ID); + return fallback(TenantHelper.getTenantId(), TENANT_ID); } private static String normalizeBaseUrl(String baseUrl) { diff --git a/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrModelSeedServiceTest.java b/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrModelSeedServiceTest.java new file mode 100644 index 00000000..6d78cc70 --- /dev/null +++ b/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrModelSeedServiceTest.java @@ -0,0 +1,27 @@ +package org.dromara.aihr.service; + +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +@Tag("dev") +class AihrModelSeedServiceTest { + + @Test + void modelRuntimeUsesDynamicTenantContext() throws Exception { + Path source = Path.of("src/main/java/org/dromara/aihr/service/AihrModelSeedService.java"); + if (!Files.exists(source)) { + source = Path.of("ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service/AihrModelSeedService.java"); + } + String code = Files.readString(source); + + assertTrue(code.contains("import org.dromara.common.tenant.helper.TenantHelper;")); + assertTrue(code.contains("fallback(TenantHelper.getTenantId(), TENANT_ID)")); + assertFalse(code.contains("fallback(LoginHelper.getTenantId(), TENANT_ID)")); + } +} diff --git a/docs/BRD_IMPLEMENTATION_AUDIT.md b/docs/BRD_IMPLEMENTATION_AUDIT.md index 954333b2..9ca0978a 100644 --- a/docs/BRD_IMPLEMENTATION_AUDIT.md +++ b/docs/BRD_IMPLEMENTATION_AUDIT.md @@ -205,3 +205,4 @@ - 2026-07-14 最新线上资源复核:生产根站与 `/h5/` 均返回 `200`,线上管理端 `index-CJZ3Ax3Z.js` SHA-256 为 `8b9278a26ccb760abce489b12a20b221748c64d4c4153613d2511777bb9677bc`,H5 `index-D4-NrEpb.js` SHA-256 为 `ab15bfd17cabe58e2f34b0ac61ee198a837128ed85dc6bb0ddf77bc3e22dcd9c`;当前 HEAD `1757dcb8` 重建后的本地入口分别为 `index-v0LFXtVo.js` SHA-256 `0fc78c86e734be76aeb8ae03a551f98df9f689db5352a92af77c781c70efccde`、`index-Byx3WtY1.js` SHA-256 `1d2a9d8f947e8a198c31f15a5cf4b66ba4220b1f549c4376c72cc1da56b1d7eb`。两端仍未发布,本轮只读核验,无静态资源同步、后端重启或业务数据写入。 - 2026-07-14 生产迁移资产复核:`aihr_practice_audio`、`aihr_practice_calibration` 已存在于 reset SQL 和运行时懒建表定义,但 `backend/script/sql/update/` 尚无对应版本化生产迁移脚本;生产 schema 曾通过人工 `CREATE TABLE IF NOT EXISTS` 修复。当前不把 reset SQL 或懒建表当正式发布迁移,待 DBA/运维确认迁移归属和执行窗口后,再补经审阅的幂等脚本并做回滚/结构核验。 - 2026-07-14 BRD 用户端入口复核:员工端“问师傅/练/学习中心/案例学习”均已有真实页面和业务路径;“工作上报”进入明确的建设中页,但该能力属于阶段二信息直达或阶段三北森/报事集成范围,不属于一期陪练缺口。当前不把建设中入口改成空壳功能,待对应阶段专项计划和接口契约确定后再实现。 +- 2026-07-14 BRD G3/G6 异步模型租户上下文复核:`AihrModelSeedService` 原先用 `LoginHelper.getTenantId()` 解析模型配置,异步上传队列、目录导入等 worker 虽已用 `TenantHelper.dynamic(tenantId, ...)`,进入模型/语音/RAG调用后仍可能因无登录态回退 `000000`;现统一改用动态租户优先的 `TenantHelper.getTenantId()`,普通请求仍回退登录租户,补源码契约测试。覆盖模型配置、对练/面试、语音、SOP 向量/重排/视觉和异步资料加工的共享边界;未修改数据库或生产环境。