nearboss 业务数据 API

Agent 使用的 nearboss 业务数据 API。纯接口契约:只列端点 + 输入参数 + 输出参数。 基于真实库表校验、优化建议、目标态 v1 / 优化态 v2 全部结论蒸馏。 不含意图识别 —— 自然语言→端点+参数的转换由消费侧(本项目)负责,本文档只定义 API 本身。 版本前缀:/pos/ai/v1;时间一律 13 位 epoch 毫秒(UTC+4);金额一律 Money 对象。


0. 公共约定

0.1 响应信封 Envelope<T>(所有端点统一外壳)

字段类型说明
api_versionstring契约版本,如 v1
codeint0=成功;非 0 见 error
messagestring人类可读信息
dataT业务载荷(各端点 Output)
errorError?失败时存在
metaMeta?货币/时区/数据来源等自描述
request_idstring链路追踪
server_timeepoch ms服务端时间

失败回真实 HTTP 状态(400/401/403/404/409/410/422/429/503)。

0.2 Error

字段类型说明
error_codestring语义码,如 AIGENT_QUERY_RANGE_TOO_LARGE
categoryenumvalidation / conflict / degraded / not_found / rate_limited / unsupported
retriablebool是否可退避重试
detailsobject?结构化补充(如 {max_days,requested_days}
retry_after_msint?retriable 时的建议退避

0.3 Money

字段类型说明
amountint最小货币单位整数(fils)
currencystringISO 4217,如 AED
minor_unitint小数位数,AED=2

0.4 PageMeta(分页响应共用)

{ total, page, page_size, pages, has_next }

0.5 分页/排序/投影请求壳(列表类端点共用入参)

字段类型默认说明
pageint1页码
page_sizeint20≤100
sort[{field,order}]order∈ASC|DESC
viewenumFULLSLIM=仅 id/name/status 等轻量列

一、数据专家 API

1.1 指标查询 POST /pos/ai/v1/metrics:query

聚合 / 趋势 / 同比三形态合一。

Input

字段类型必填说明
store_idstring门店
metricsstring[]指标 key(见 §1.6 白名单,可多选)
aggregationenumSUM|AVG|MAX|MIN|COUNT
time_granularityenumDAY|MONTH|YEAR|NONE(NONE=区间汇总单值)
date_fromepoch ms区间起(含)
date_toepoch ms区间止(含)
compareenumNONE|WOW|MOM|YOY,默认 NONE

Output

字段类型说明
seriesRow[]按粒度分组的数据行
series[].periodstring周期标签(如 2026-06-10 / 2026-06
series[].valuesmap{<metric>: {value, prev, pct, unit, is_ratio}}prev/pct 无同比时为 null
metaMeta{currency, tz_offset, source, data_basis, coverage_days}

越界:AIGENT_QUERY_RANGE_TOO_LARGE(>400 天,details{max_days,requested_days}); 粒度不支持:AIGENT_GRANULARITY_UNSUPPORTED{supported:[...]}

1.2 维度拆分取数 POST /pos/ai/v1/metrics:dimensions

按渠道 / 支付 / 来源 / 会员维拆分(源 report_daily_statistics 预聚合列;维度不可用时按门店 available:false)。

Input

字段类型必填说明
store_idstring门店
metricstring单指标 key
dimensionenumCHANNEL|PAYMENT|ORDER_SOURCE|MEMBER_TYPE
date_from / date_toepoch ms区间(含头含尾)

Output

字段类型说明
breakdownItem[]各维度值切片
breakdown[].dimension_valuestringDINING_ROOM/PAY_BY_CARD
breakdown[].valuenumber该切片指标值
breakdown[].sharenumber占比 0–1
metaMeta同 §1.1

1.3 经营健康分级 POST /pos/ai/v1/insights/health

Inputstore_iddate_fromdate_to(≥14 天两期对比)

Output

字段类型说明
gradeenumEXCELLENT|GOOD|WARNING|RISK
signalsItem[]{metric, current, prev, pct, direction}
summarystring结论摘要
metaMetacoverage_days

1.4 Peer 对标 POST /pos/ai/v1/insights/peer-benchmark

Inputstore_idmetric(如 avg_ticket)、date_fromdate_topeer_scope(AREA_CUISINE 默认)

Output

字段类型说明
self_valuenumber本店值
peer_mediannumberpeer 中位
peer_p25 / peer_p75number四分位
percentilenumber本店在 peer 中的分位 0–100
peer_sizeintpeer 样本店数(<5 返 AIGENT_INSUFFICIENT_DATA
metaMetapeer 口径(area×cuisine)

1.5 菜单工程四象限 POST /pos/ai/v1/insights/menu-engineering

Inputstore_iddate_fromdate_to(≥30 天明细)

Output

字段类型说明
itemsItem[]商品级
items[].spu_id / spu_name商品
items[].quadrantenumSTAR|PLOWHORSE|PUZZLE|DOG
items[].sold_qtyint销量
items[].profit_indexnumber毛利指数
metaMeta

1.6 滞销 / 死 SKU POST /pos/ai/v1/insights/slow-movers

Inputstore_idwindow_days(默 30)、threshold(默销量阈)

Outputitems[]{spu_id, spu_name, sold_qty, last_sold_at, stock_num, status}meta

1.7 时段×星期热度 POST /pos/ai/v1/insights/time-heatmap

main_order.create_time(唯一时刻源)。

Inputstore_idmetric(order_count/income)、date_fromdate_to(≥4 周)

Output

字段类型说明
gridCell[]7×24
grid[].weekdayint0–6
grid[].hourint0–23
grid[].valuenumber指标值
peakobject{weekday, hour, value}

1.8 会员 RFM 分层 POST /pos/ai/v1/insights/member-rfm

Inputstore_iddate_fromdate_to

Output

字段类型说明
segmentsSeg[]{segment, member_count, share, avg_recency_days, avg_frequency, avg_monetary:Money}
metaMetamember_id 填充率不足时返 AIGENT_INSUFFICIENT_DATA

1.9 会员构成总览 GET /pos/ai/v1/member/overview

Input(query)store_iddate_fromdate_to

Output{total, new_in_period, returning, by_source:[{source_type,count,share}], trend:[{period,new_count}]}meta{scope_note:MEMBER_IS_MER_SCOPED}

1.10 门店画像 GET /pos/ai/v1/stores/{store_id}/profile

Output

字段类型说明
store_id / store_name基本
cuisinestring菜系
trading_areaobject{area_id, area_name}
geoobject?未审计字段为 null + field_audit 标记
launch_dateepoch ms?同上

1.11 报表导出(异步作业,3 端点)

步骤端点InputOutput
创建草稿POST /pos/ai/v1/report/exportsstore_idmetrics[]date_fromdate_toformat(CSV|XLSX){draft_token, expires_at, estimated_rows}
确认POST /pos/ai/v1/report/exports:confirmdraft_token(幂等键){job_id, status}
查终态GET /pos/ai/v1/report/exports/{job_id}{job_id, status, download_url?, error?}status∈ACCEPTED|PROCESSING|DELIVERED|FAILED

越界:AIGENT_EXPORT_RANGE_TOO_LARGE(>90 天);token 门店绑定不符:AIGENT_TOKEN_SCOPE_MISMATCH(403)。

1.12 能力自描述 GET /pos/ai/v1/metrics/capabilities

Input(query)store_id(按店返可用维度/能力)

Output

字段类型说明
metricsItem[]{key, label, unit, is_ratio}
supported_aggregationsenum[]
supported_granularitiesenum[]
compare_basesenum[]WOW/MOM/YOY
dimensionsItem[]{dimension, available, data_basis, fill_rate}
insightsItem[]{key, available, data_basis}
limitsobject{bi_max_days, export_max_days}
currency / tz_offset

§指标白名单(12 项,metrics[] 取值)

key含义单位来源
income净收入(成功额−退款额)Moneyturnover−refund 派生
success_amount成功交易额Moneyturnover 直取
success_count成功笔数order_quantity
refund_amount退款额Moneyrefund 直取
refund_count退款笔数main_order.order_status=refunded 聚合
fail_amount失败额Money废单/取消聚合
fail_count失败笔数blankout+cancel 聚合
settle_amount总结算额Moneyturnover−refund 派生
order_count订单总数order_quantity
refund_rate退款率ratiorefund/turnover
success_rate成功率ratio成功/(成功+失败)
avg_ticket客单价Moneyaverage_order_price 直取

二、营销专家 API

2.1 活动类型目录 GET /pos/ai/v1/meta/campaign-activity-types

Output

字段类型说明
typesType[]{type_code, label, description, discount_model}
types[].discount_modelenumPERCENT_TO_PAY|FIXED_AMOUNT_OFF|FLASH_PRICE|...

类型码:FIXED_AMOUNT_OFF(定额减)/WHOLE_ORDER_PERCENT(整单折)/FLASH_SALE(秒杀)等,均带 legacy_code 过渡。

2.2 商品检索 GET /pos/ai/v1/products

Input(query)store_idspu_keywordpagepage_size

Output

字段类型说明
itemsItem[]{spu_id, spu_name, price:Money, original_price:Money, stock_num}
page_metaPageMeta

2.3 活动预览 POST /pos/ai/v1/campaigns:preview

生成草稿 + 一次性 token(不落库)。

Input

字段类型必填说明
store_idstring
activity_typeenum见 §2.1
activity_namestring
date_start / date_endepoch ms活动期
time_start / time_endepoch ms每日时段;空=全天
is_long_termbool长期活动
percent_to_payint条件10–99(折扣类)
amount_offMoney条件定额减类
flash_priceMoney条件秒杀类
spu_idsstring[]条件适用商品(秒杀/单品类)

Output

字段类型说明
preview_tokenstringcommit 幂等键
expires_atepoch msTTL
summaryobject可读摘要(展示用)
draftobject规范化后的活动草稿(机读原始字段,可回填编辑)

2.4 活动确认发布 POST /pos/ai/v1/campaigns:commit

Input

字段类型必填说明
preview_tokenstring幂等:同 token TTL 内二次提交返同一 campaign_id
draftobject编辑后回传(提供则以最新资源重校验)

Output{campaign_id, status, published_at}

快照过期:AIGENT_PREVIEW_STALE(区别于 EXPIRED); 门店越权:AIGENT_TOKEN_SCOPE_MISMATCH(403)。

2.5 活动列表 GET /pos/ai/v1/campaigns

Input(query,含 §0.5 分页/排序/投影壳)

字段类型说明
store_idstring
statusesenum[]多状态过滤
keywordstring匹配活动名
created_from / created_toepoch ms创建时间区间
ended_reasonenum结束原因过滤

Output

字段类型说明
itemsRow[]活动行
items[].campaign_id / activity_name / activity_type / status基本
items[].date_start / date_end / time_start / time_endepoch ms机读原始值
items[].is_long_term / is_all_daybool显式布尔
items[].enabled_actionsenum[]当前可执行动作(见 §2.7)
items[].ended_reasonenum?已结束时
page_metaPageMeta

2.6 活动详情 GET /pos/ai/v1/campaigns/{id}

Output:§2.5 行字段超集 + 明细

追加字段类型说明
discount_detailobject{discount_model, percent_to_pay?, amount_off?:Money, flash_price?:Money}
spusItem[]适用商品 {spu_id, spu_name, price:Money}
progressobject?秒杀类 {sold, total, progress}
all_actions[{action, endpoint, available, status}]机读可调对象

2.7 活动生命周期(4 端点)

动作端点InputOutput
暂停POST /pos/ai/v1/campaigns/{id}:pauseexpected_status?(CAS){campaign_id, status}
恢复POST /pos/ai/v1/campaigns/{id}:resumeexpected_status?{campaign_id, status}
终止POST /pos/ai/v1/campaigns/{id}:terminateexpected_status?{campaign_id, status}(库存归还恰好一次)
撤回POST /pos/ai/v1/campaigns/{id}:withdrawexpected_status?{campaign_id, status}(PENDING/DRAFT 用)

状态前置不满足:AIGENT_STATE_CONFLICT(409,details{current_status, allowed_actions}); 目标态已达成→幂等成功返当前状态。

2.8 会员标签操作(preview→commit)

步骤端点InputOutput
预览POST /pos/ai/v1/member/tags:previewstore_idmember_idop(ADD|REMOVE)、tag{preview_token, expires_at, affected}
确认POST /pos/ai/v1/member/tags:commitpreview_token(幂等){member_id, tags}

2.9 会员查询

端点Input(query)Output
GET /pos/ai/v1/member 列表store_idkeyword、§0.5 壳items[]{member_id, nickname, phone(脱敏), level, tags}page_meta
GET /pos/ai/v1/member/{id} 详情上行超集 + {join_at, source_type, recent_orders};手机/邮箱默认脱敏,view=FULL+平台身份才全量

附:端点清单一览

数据专家(14)metrics:query · metrics:dimensions · insights/health · insights/peer-benchmark · insights/menu-engineering · insights/slow-movers · insights/time-heatmap · insights/member-rfm · member/overview · stores/{id}/profile · report/exports(创建) · report/exports:confirm · report/exports/{id} · metrics/capabilities

营销专家(13)meta/campaign-activity-types · products · campaigns:preview · campaigns:commit · campaigns(列表) · campaigns/{id} · campaigns/{id}:pause · :resume · :terminate · :withdraw · member/tags:preview · member/tags:commit · member/member/{id}