销量预测服务 API 调用文档
线上试用本文档介绍销量预测服务的核心接口、请求方式、响应结构以及 Python 和 cURL 调用示例。
Base URL
https://open.redgecko.cn
API 版本
/api/v1
认证方式
API Key(Header: X-API-Key)
1. 销量预测接口
`daily_predict` 接口用于根据历史交易数据预测指定门店和商品未来若干天的销量。
接口信息
| 项目 | 内容 |
|---|---|
| 接口路径 | POST /api/v1/店铺tag/daily_predict |
| 功能说明 | 根据历史交易数据预测指定门店和商品未来指定天数的销量,0表示预测当前日期,预测值为-1表示数据量交少或者数据极度不连续等原因导致预测置信度较低。 |
| 认证要求 | 需要 API Key |
请求 Headers
X-API-Key: {your_api_key}
Content-Type: application/json
Content-Type: application/json
请求体参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
store_code |
string | 是 | 门店编码 |
product_code |
string | 是 | 商品编码 |
last_data |
array[object] | 是 | 历史交易数据列表 |
predict_days |
integer | 否 | 预测天数,默认 1 天,0表示预测当前日期,最大值根据项目沟通确定 |
`last_data` 数据项字段说明
| 字段名 | 类型 | 说明 |
|---|---|---|
| 日期 | string | 交易日期,格式 YYYY.MM.DD |
| 门店 | string | 门店名称 |
| 门店编号 | string | 门店编码 |
| 商品编码 | string | 商品编码 |
| 商品名称 | string | 商品名称 |
| 商品状态 | string | 商品状态 |
| 经营方式 | string | 经营方式 |
| 库存单位 | string | 库存单位 |
| 实销数量 | number | 实际销售数量 |
| 销售成本 | number | 销售成本 |
| … 其他字段(实销金额、未税实销金额、未税销售成本等)详见完整数据模型 | ||
请求示例
{
"store_code": "2495",
"product_code": "920896",
"predict_days": 3,
"last_data": [
{
"日期": "2026.06.30",
"门店": "***",
"门店编号": "***",
"商品编码": "***",
"商品名称": "***",
"商品状态": "***",
"经营方式": "***",
"库存单位": "EA",
"实销数量": 1,
"实销金额": 3.72,
"未税实销金额": 3.72,
"销售成本": 3.2714,
"未税销售成本": 3.2714,
"未税基础毛利": 0.4486,
"毛利补偿": 0.0,
"未税毛利补偿": 0.0,
"未税净毛利": -2.8228,
"未税净毛利率": -0.758817204301,
"未税商损金额": -3.2714
}
]
}
响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| request_id | string | 请求唯一标识 |
| status | string | 处理状态(success/failed) |
| message | string | 处理消息 |
| data | object | 预测结果数据 |
| data.store_code | string | 门店编码 |
| data.product_code | string | 商品编码 |
| data.predict_days | integer | 预测天数 |
| data.current_date | string | 当前日期 |
| data.predictions | array | 预测结果列表 |
| data.predictions[].predict_date | string | 预测日期 |
| data.predictions[].predict_sales | float | 预测销量 |
| data.predictions[].lower_bound | float | 预测下限 |
| data.predictions[].upper_bound | float | 预测上限 |
| processing_time | float | 处理耗时(秒) |
响应示例
{
"request_id": "abc123def4567890",
"status": "success",
"message": "销量预测完成,预测未来3天数据",
"data": {
"store_code": "2495",
"product_code": "920896",
"predict_days": 3,
"current_date": "2026-07-01",
"predictions": [
{
"predict_date": "2026-07-01",
"predict_sales": 1.2,
"lower_bound": 0.8,
"upper_bound": 1.6
},
{
"predict_date": "2026-07-02",
"predict_sales": 1.5,
"lower_bound": 1.0,
"upper_bound": 2.0
},
{
"predict_date": "2026-07-03",
"predict_sales": 1.8,
"lower_bound": 1.2,
"upper_bound": 2.4
}
]
},
"processing_time": 2.34
}
cURL 调用示例
curl -X POST "http://127.0.0.1:8000/api/v1/wm/daily_predict" \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"store_code": "2495",
"product_code": "920896",
"predict_days": 3,
"last_data": [...]
}'
2. 数据强化训练
`daily_learn` 接口用于向指定门店添加新的历史交易数据,以便模型持续学习和迭代,如果通过该接口按照门店更新模型的训练数据,则调用预测接口时可以不传递历史数据。
接口信息
| 项目 | 内容 |
|---|---|
| 接口路径 | POST /api/v1/wm/daily_learn |
| 功能说明 | 向指定门店添加新的历史交易数据,用于模型学习 |
| 认证要求 | 需要 API Key |
请求 Headers
X-API-Key: {your_api_key}
Content-Type: application/json
Content-Type: application/json
请求体参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
store_code |
string | 是 | 门店编码 |
data_list |
array[object] | 是 | 新交易数据列表(字段同 last_data) |
请求示例
{
"store_code": "2495",
"data_list": [
{
"日期": "2026.07.03",
"门店": "盒*马**店",
"门店编号": "****",
"商品编码": "****",
"商品名称": "***",
"商品状态": "正常商品",
"经营方式": "自营",
"库存单位": "EA",
"实销数量": 1,
"实销金额": 3.72,
"未税实销金额": 3.72,
"销售成本": 3.2714,
"未税销售成本": 3.2714,
"未税基础毛利": 0.4486,
"毛利补偿": 0.0,
"未税毛利补偿": 0.0,
"未税净毛利": -2.8228,
"未税净毛利率": -0.758817204301,
"未税商损金额": -3.2714
}
]
}
响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| request_id | string | 请求唯一标识 |
| status | string | 处理状态(success/failed) |
| message | string | 处理消息 |
| data | object | 处理结果 |
| data.store_code | string | 门店编码 |
| data.result | string | 写入结果 |
| processing_time | float | 处理耗时(秒) |
响应示例
{
"request_id": "abc123def4567890",
"status": "success",
"message": "数据添加完成",
"data": {
"store_code": "2495",
"result": "写入成功"
},
"processing_time": 0.15
}
cURL 调用示例
curl -X POST "http://127.0.0.1:8000/api/v1/wm/daily_learn" \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"store_code": "2495",
"data_list": [...]
}'
Python 调用示例
使用 Python `requests` 库快速调用预测与数据添加接口。
import requests
BASE_URL = "http://127.0.0.1:8000"
API_KEY = "your_api_key"
def predict_sales():
"""销量预测"""
url = f"{BASE_URL}/api/v1/wm/daily_predict"
payload = {
"store_code": "2495",
"product_code": "920896",
"predict_days": 3,
"last_data": [
{
"日期": "2026.06.30",
"门店": "****",
"门店编号": "****",
"商品编码": "****",
"商品名称": "****",
"商品状态": "正常商品",
"经营方式": "自营",
"库存单位": "EA",
"实销数量": 1,
"实销金额": 3.72,
"未税实销金额": 3.72,
"销售成本": 3.2714,
"未税销售成本": 3.2714,
"未税基础毛利": 0.4486,
"毛利补偿": 0.0,
"未税毛利补偿": 0.0,
"未税净毛利": -2.8228,
"未税净毛利率": -0.758817204301,
"未税商损金额": -3.2714
}
]
}
headers = {
"Content-Type": "application/json",
"X-API-Key": API_KEY
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
def add_data():
"""添加交易数据"""
url = f"{BASE_URL}/api/v1/wm/daily_learn"
payload = {
"store_code": "2495",
"data_list": [
{
"日期": "2026.07.03",
"门店": "***",
"门店编号": "***",
"商品编码": "***",
"商品名称": "***",
"商品状态": "正常商品",
"经营方式": "自营",
"库存单位": "EA",
"实销数量": 1,
"实销金额": 3.72,
"未税实销金额": 3.72,
"销售成本": 3.2714,
"未税销售成本": 3.2714,
"未税基础毛利": 0.4486,
"毛利补偿": 0.0,
"未税毛利补偿": 0.0,
"未税净毛利": -2.8228,
"未税净毛利率": -0.758817204301,
"未税商损金额": -3.2714
}
]
}
headers = {
"Content-Type": "application/json",
"X-API-Key": API_KEY
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
if __name__ == "__main__":
add_data()
predict_sales()
错误码说明
接口返回状态码与常见错误响应示例。
| 状态码 | 说明 |
|---|---|
| 200 | 请求成功 |
| 400 | 请求参数错误 |
| 401 | API Key 无效或缺失 |
| 413 | 文件过大 |
| 500 | 服务器内部错误 |
错误响应示例
{
"detail": "预测天数不能超过7天"
}