POST /api/special/run-algorithm/{algorithmName}
统一算法网关协议 (Gateway Protocol)

所有业务算法服务均通过此统一端点以 RPC 方式调用。请求头需携带 Authorization: <token>,底层入参统一包装在 params 数组中,计算结果统一由 results 返回。

💻 通用 cURL 调用模板
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/{algorithmName}" \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_JWT_TOKEN" \
  -d '{
    "params": [...],
    "nargout": 1,
    "instanceId": ""
  }'
📥 公共请求体 (Request JSON 规范)
{
  // 【必填】业务参数数组 (array)
  // 网关将数组按索引 params[0], params[1]... 映射为底层函数的顺序入参
  "params": [
    [12.5, 14.1, 15.3, ...], // params[0]: 脑电采样切片或标签序列
    250                      // params[1]: 采样率或其它配置项
  ],

  // 【必填】期望返回参数数量 (number)
  // 单返回值算法填 1;多元状态算法(如入睡指数)填 3 或 5
  "nargout": 1,

  // 【可选】实例会话保持句柄 (string)
  // 传空字符串 "" 随机分配;传已有 ID 可复用常驻热实例,避免冷启动
  "instanceId": ""
}
📤 公共响应体 (Response JSON 规范)
{
  // 【固定】接口执行状态 (string)
  // 计算正常完成时固定返回 "success"
  "status": "success",

  // 【透传】承载本次计算的虚拟实例 ID (string)
  // 后续高频连续请求可将其传入请求体 instanceId,避免冷启动延迟
  "instanceId": "i-0a1b2c3d4e",

  // 【核心】算法计算结果 (number | array)
  // • 当 nargout == 1 时:直接返回标量数值或一层特征数组
  // • 当 nargout > 1 时:返回多输出数组 [out1, out2, out3...]
  "results": ...
}
💡 实例生命周期与并发指南:
1. 冷启动与休眠:算法实例闲置 120 秒后会自动休眠。冷启动首次耗时约 3~8 秒,实例唤醒后后续请求进入毫秒级响应(约 50~200ms)。
2. 单线程隔离:每个专属实例为单线程执行。多用户高并发生产环境建议不锁定单一自定义 ID,或按用户 Session 隔离分配。
📥 0. 测试数据源 (仅用于脑龄/入睡指数)

在调用算法前,请先下载脑电测试数据。该数据包含一个大的浮点数数组。

状态: 未加载
POST/api/resource/InnerToken/post
通过用户名密码换取 JWT Token。成功后会自动填充上方 Token 栏。
Request Info
Waiting...
Response Data
Waiting...
GET/api/resource/InnerToken/getone
Request Info
Waiting...
Response Data
Waiting...
POST/api/special/run-algorithm/plus
Instance ID 机制说明:
1. 冷启动优化:算法服务器闲置 120s 后会休眠。使用 instanceId 可以保持会话,避免频繁冷启动带来的高延迟。
2. 单线程限制:每个算法实例是单线程的。高并发生产环境建议不传 ID 或为每个用户分配唯一 ID,防止阻塞。
3. 不传 ID (空):进入默认负载均衡池(可能每次都遇到冷启动)。
⚠️ 费用警告:
如果您传递大量不同的自定义字符串作为 ID,系统会创建对应数量的虚拟服务器实例,可能导致高额费用。请根据业务权衡。
字段 类型 必填 说明
📥 请求参数 (Request Body)
params number[] 是 固定为 [0, 0]
nargout number 是 期望的返回值数量,固定为 1
instanceId string 否 实例ID,用于保持会话,空字符串表示随机分配
📤 响应结果 (Response Body)
results number - 预热成功固定返回 0
instanceId string - 云端分配或确认的实例ID,后续业务请求需带上以复用实例
status string - 接口调用状态,如 "success"
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/plus" \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_TOKEN" \
  -d '{
    "params": [0, 0],
    "nargout": 1,
    "instanceId": ""
  }'
Request Info
Waiting...
Response Data
Waiting...
POST/api/special/run-algorithm/YLBA_mainfunction
传递全量数据进行分析。
字段 类型 必填 说明
📥 请求参数 (Request Body)
params[0] number[] 是 单通道完整脑电数据,建议至少10秒以上的有效数据
params[1] number 是 采样率,通常为 250
params[2] number 是 用户的真实年龄(数值类型)
📤 响应结果 - 基础神经状态评分 (Basic Neuro Scores)
results[0][0] number - 实际年龄
results[0][1] number - 预测脑龄
results[0][2] number - 专注度评分(百分制)
results[0][3] number - 放松度评分(百分制)
results[0][4] number - 疲劳度评分(百分制)
📤 响应结果 - 核心指标对比 (用户自身 vs 同龄段均值)
results[0][5] number - 用户 Alpha 频段相对功率 (%)
results[0][6] number - 同龄段 Alpha 频段相对功率均值 (%)
results[0][7] number - 用户 Gamma 频段相对功率 (%)
results[0][8] number - 同龄段 Gamma 频段相对功率均值 (%)
results[0][9] number - 用户 Alpha/Theta 频段功率比值
results[0][10] number - 同龄段 Alpha/Theta 功率比值均值
results[0][11] number - 用户 Beta/Theta 频段功率比值
results[0][12] number - 同龄段 Beta/Theta 功率比值均值
results[0][13] number - 用户 IAF (个体 Alpha 峰值频率, Hz)
results[0][14] number - 同龄段 IAF 均值 (Hz)
results[0][15] number - 用户 Gamma 频段维纳熵 (谱平坦度)
results[0][16] number - 同龄段 Gamma 频段维纳熵均值
results[0][17] number - 用户 信号干扰指数 (Beta 频段相对功率, %)
results[0][18] number - 同龄段 信号干扰指数均值 (%)
results[0][19] number - 睡眠障碍风险指数 (SDRI)
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YLBA_mainfunction" \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_TOKEN" \
  -d '{
    "params": [
      [12.1, 14.5, 13.8, "...(完整脑电数据,>=10秒)..."],
      250,
      35
    ],
    "nargout": 1,
    "instanceId": ""
  }'
Request Info (数组过大时,显示已折叠)
Waiting...
Response Data
Waiting...
POST/api/special/run-algorithm/YL_getSOI
滑动窗口机制:
每次请求需要 10秒 (2500点) 的数据。通过设置步进时间(Overlap)来控制调用频率。
例如:步进 1秒 = 90% 重叠 (0-10s, 1-11s...); 步进 5秒 = 50% 重叠 (0-10s, 5-15s...)。
注:需将上一次返回的 State (results[2]) 传回。
(每点一次按钮前进的时间)
当前窗口范围: 0 - 0 (Total: 0)
窗口大小: 10s (2500 pts)
历史状态 (State): 无 (Initial)
执行结果历史
字段 类型 必填 说明
📥 请求参数 (Request Body)
params[0] number[] 是 单 epoch 原始脑电信号(例如 10秒窗口 共 2500 个点)
params[1] number 是 采样率数值,固定为 250.0
params[2] number | number[] 否 上一阶段的平滑状态。首次请求传空数组 []
📤 响应结果 (Response Body)
results[0] number - 当前 epoch 的入睡指数 (SOI) 评分,范围约 0-100,越高越接近入睡
results[1][0] number[] - 提取的 8 维脑电特征向量 (包含 Delta/Theta 相对功率等)
results[2] number - 更新后的平滑 SOI 值 (状态),需保存并在下一次请求作为 params[2] 传入
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YL_getSOI" \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_TOKEN" \
  -d '{
    "params": [
      [14.2, 13.8, 15.1, "...(2500 floats)..."],
      250.0,
      []
    ],
    "nargout": 3,
    "instanceId": ""
  }'
Request Info (显示 10s 数据切片)
Waiting...
Response Data
Waiting...
POST/api/special/run-algorithm/YL_getSleepScore
计算睡眠评分。参数 1:睡眠分期数组(可编辑);参数 2:入睡时间(0-23点)。
字段 类型 必填 说明
📥 请求参数 (Request Body)
params[0] number[] 是 睡眠分期标签序列 (0=Wake, 1=Light, 2=Deep, 3=REM),每点代表30秒
params[1] number 是 记录开始时刻 (0-23小时)
📤 响应结果 (Response Body)
results[0][0] number - 综合睡眠质量得分 (0-100,四舍五入)
results[0][1] number - 总睡眠时长 (分钟)
results[0][2] number - 中途清醒时长 (分钟)
results[0][3] number - 浅睡时长 (分钟)
results[0][4] number - 浅睡占比 (0-1)
results[0][5] number - 深睡时长 (分钟)
results[0][6] number - 深睡占比 (0-1)
results[0][7] number - REM 时长 (分钟)
results[0][8] number - REM 占比 (0-1)
results[0][9] number - 入睡时刻 (当天累计秒数)
results[0][10] number - 终末清醒时刻 (当天累计秒数)
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YL_getSleepScore" \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_TOKEN" \
  -d '{
    "params": [
      [0, 0, 1, 2, 3, 2, 1, 1, 2, 3],
      3
    ],
    "nargout": 1,
    "instanceId": ""
  }'
Request Info
Waiting...
Response Data
Waiting...
POST /api/special/run-algorithm/YL_getSOI_simplify
简化版 SOI (YL_getSOI_simplify):输入 1 秒级底层评分特征 [Attention, Relaxation, Fatigue],通过推断引擎输出 4 个离散睡眠阶段(1=清醒、2=放松/过渡、3=浅睡、4=稳定睡眠)及状态句柄。
状态流转说明:
1. 按秒调用:外层按 1 秒间隔调用本接口,传入当前特征数组 params[0]。
2. 上下文句柄透传:首次调用时 params[1] ~ params[4] 全部传空数组 []。后续调用时,需将上一次接口吐出的 results[1] ~ results[4] 原样透传回对应的 params[1] ~ params[4]。
3. nargout 设置:请求 Body 中的 nargout 必须固定设置为 5。
实时特征输入 (1 秒):
快速预设:
记忆体状态: 无 (Initial)
当前推断阶段: 未计算
平滑状态: 未计算
推断日志历史
字段 类型 必填 说明
📥 请求参数 (Request Body)
params[0] number[] 是 包含当前 1 秒内底层 3 个指标: [Attention, Relaxation, Fatigue] (0-100)
params[1] number[] 否 算法概率状态句柄。首次调用传 [],后续透传上一次的 results[1]
params[2] number[][] 否 算法缓冲队列句柄。首次调用传 [],后续透传上一次的 results[2]
params[3] number | number[] 否 算法平滑状态句柄。首次调用传 [],后续透传上一次的 results[3]
params[4] number[] 否 算法防抖状态句柄。首次调用传 [],后续透传上一次的 results[4]
nargout number 是 期望返回参数数量,固定为 5
instanceId string 否 算法服务端实例 ID
📤 响应结果 (Response Results)
results[0] number - 推断睡眠阶段:
1 = 清醒 (Wake)
2 = 放松/过渡 (Relax/Transition)
3 = 浅睡 (Light Sleep)
4 = 稳定睡眠 (Stable Sleep)
results[1] number[] - 概率状态句柄,下一次原样透传回 params[1]
results[2] number[][] - 缓冲队列句柄,下一次原样透传回 params[2]
results[3] number - 平滑状态句柄,下一次原样透传回 params[3]
results[4] number[] - 防抖状态句柄,下一次原样透传回 params[4]
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YL_getSOI_simplify" \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_TOKEN" \
  -d '{
    "params": [
      [20.0, 80.0, 75.0],
      [],
      [],
      [],
      []
    ],
    "nargout": 5,
    "instanceId": ""
  }'
Request Info
Waiting...
Response Data
Waiting...
POST /api/special/run-algorithm/YLSS_sleepStage
单通道 EEG 自动睡眠分期 (YLSS_sleepStage):输入 30 秒原始单通道脑电数据切片(在 250Hz 采样率下为 7500 个采样点数值),结合整夜 Epoch 序号和上一阶段分期标签,输出当前 Epoch 的离散睡眠分期标签(0=Wake 清醒、1=Light Sleep 浅睡、2=Deep Sleep 深睡、3=REM 快速眼动)。
当前切片范围: 0 - 7500 (单 Epoch 窗口: 30s / 7500 点)
当前 Epoch 序号: #1
上一阶段标签: 0 (初始默认)
当前推断分期 (results): 未计算
已累积分期序列长度: 0
分期推断日志历史 (最新在最前)
📈 睡眠时相时序图 (Hypnogram Timeline)
0-清醒 (Wake) 1-浅睡 (Light) 2-深睡 (Deep) 3-REM
字段 类型 必填 说明
📥 请求参数 (Request Body)
params[0] number[] 是 单个 30 秒 Epoch 的原始单通道脑电采样数值序列(250Hz 下为 7500 个数值)
params[1] number 是 采样率数值,固定为 250
params[2] number 是 当前 Epoch 在整夜序列中的位置序号(从 1 开始计数的正整数:第 1 个 30 秒传 1,第 2 个传 2,以此类推)
params[3] number 是 上一个 Epoch 的睡眠分期标签。首次调用传 0(清醒),后续调用透传上一次接口返回的 results
nargout number 是 期望返回参数数量,固定为 1
instanceId string 否 算法服务端实例 ID
📤 响应结果 (Response Body)
results number - 当前 30 秒 Epoch 的睡眠分期标签:
0 = 清醒 (Wake)
1 = 浅睡 (Light Sleep)
2 = 深睡 (Deep Sleep)
3 = 快速眼动 (REM)
instanceId string - 云端分配或确认的实例 ID
status string - 接口调用状态,成功时固定为 "success"
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YLSS_sleepStage" \
  -H "Content-Type: application/json" \
  -H "Authorization: YOUR_TOKEN" \
  -d '{
    "params": [
      [12.5, 14.1, 15.3, 11.2, 8.7, "...(7500 floats)..."],
      250,
      1,
      0
    ],
    "nargout": 1,
    "instanceId": ""
  }'
Request Info (展示当前 30s 数据切片信息)
Waiting...
Response Data
Waiting...