package com.ruoyi.inhospvisit.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 出入院随访模块的 MVC 配置:把 {@link InhospVisitAvailabilityInterceptor} 挂到 * 本模块 URL 前缀下的全部端点上。 * *
* 现在改为通配 {@link #GUARDED_PREFIX},语义是: * 本模块 URL 前缀下的所有端点都受开关管,新加接口自动生效,无需改配置。 *
* 丢掉的静态可断言性用探针补回来了,而且补得更强: * {@code sql/_probe/verify_inhospvisit_switch.py} 不再比对"清单字面量", * 而是做两件更本质的事: *
* 但只拦 HTTP,不动跨模块数据契约: *
* ⚠️ 旧注释写"14 个端点 / 复合端点 4 个",实测是 15 / 3 —— 这类"注释里的数字" * 正是口径混乱的来源,所以探针改为从源码实测。 */ @Configuration public class InhospVisitWebConfig implements WebMvcConfigurer { /** * 本模块的 URL 前缀。模块内所有控制器都挂在它下面 * ({@code InhospVisitController} 与 {@code InhospVisitDataController} 实测均为 * {@code @RequestMapping("/smartor/patinhosp")})。 *
* ⚠️ 加新控制器时必须也用这个前缀 —— 否则它不会受开关管。 * 探针会从源码实测所有控制器的 {@code @RequestMapping} 与端点, * 凡覆盖不到本前缀的都会 FAIL。 */ public static final String MODULE_URL_PREFIX = "/smartor/patinhosp"; /** * 拦截器实际注册的模式(通配整个前缀)。 */ public static final String GUARDED_PREFIX = MODULE_URL_PREFIX + "/**"; @Autowired private InhospVisitAvailabilityInterceptor inhospVisitAvailabilityInterceptor; /** * 供测试/非 Spring 环境直接构造 */ public InhospVisitWebConfig() { } public InhospVisitWebConfig(InhospVisitAvailabilityInterceptor interceptor) { this.inhospVisitAvailabilityInterceptor = interceptor; } /** * 本模块需要"关闭即明确报错"的路径模式。 *
* ⚠️ 只有一条通配(见类注释的取舍说明)。
* 不要把它当成"受管端点清单"用 ——
* 真实端点清单请用 {@code sql/_probe/verify_inhospvisit_switch.py} 从控制器源码实测。
*/
public static List