liusheng
4 天以前 0bbbd746e8c39d91ad7b47a4e36e29ab972dc98c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.ruoyi.task.api;
 
/**
 * 任务模块<b>对外接口</b>(其它模块可依赖的稳定入口)。
 *
 * <h3>⚠️ 真正的跨模块数据面是 ruoyi-common 的 4 个契约,不是本接口</h3>
 * 任务/子任务被其它模块使用的能力,已经按"接口在 ruoyi-common、实现在归属模块"的既有手法
 * 下沉成 4 个契约,并由本模块实现:
 * <ul>
 *   <li>{@code com.ruoyi.common.core.service.VisitTaskCreateApi} —— 查已发布长期任务、落库子任务、回写待执行子任务;</li>
 *   <li>{@code com.ruoyi.common.core.service.ServiceTaskMatchApi} —— 按科室/诊断/手术编码匹配长期任务;</li>
 *   <li>{@code com.ruoyi.common.core.service.SubtaskStatApi} —— 门诊随访统计取"随访人次/人数";</li>
 *   <li>{@code com.ruoyi.common.core.service.SubtaskOptionMatchApi} —— AI 选项匹配。</li>
 * </ul>
 * 调用方<b>直接注入那 4 个接口</b>即可,不必经过本接口。
 *
 * <h3>那本接口做什么</h3>
 * 只暴露"模块是否可用"这一个稳定判断,让调用方能在调任务能力前先行降级,
 * 而不必知道 {@code TaskSwitch} / {@code sys_config} 的内部细节。
 *
 * <h3>关闭时的行为</h3>
 * 本模块的端点会被 {@code TaskAvailabilityInterceptor} 拦下并返回明确业务错误;
 * 而 {@code isEnabled()} 供其它模块在<b>调用前</b>判断,避免"拿到 500 才知道关了"。
 */
public interface TaskApi {
 
    /**
     * 任务模块是否已启用(运行时读 {@code sys_config} 的 {@code task.enabled},最多 10 秒延迟)
     */
    boolean isEnabled();
}