Skip to content
Back to skills

Member Points Analysis

ASecurity

仅支持 CRM8 客户使用;非 CRM8 客户使用没有数据。会员业务 Skill:使用固定积分分析接口 CLI 输出积分笔数、积分额、兑换笔数、兑换额、积分/兑换趋势、规则分布、渠道分布和会员明细。适用于用户问“积分分析”“积分获得和兑换情况怎么样”“哪些规则或渠道贡献积分多”。只使用本文固定命令和 Gateway 门店选择引用;不使用近似指标或其它业务概念替代。当用户的本业务问题提到“整个集团”“集团视角”“不区分门店”或未指定门店时,仍按当前账号/当前上下文默认权限范围执行,不得仅因未指定门店而拒绝或改用其它 Skill。

  • 417 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 8, 2026
ai-agentsshellbashnode

Works with

  • cli

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned November 8, 2026

npx -y skills add infometa/workbuddyskills --skill member-points-analysis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Member Points Analysis?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Member Points Analysis
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/infometa-member-points-analysis/badge)](https://www.skillsdirectory.com/skills/infometa-member-points-analysis)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: member-points-analysis
description: 仅支持 CRM8 客户使用;非 CRM8 客户使用没有数据。会员业务 Skill:使用固定积分分析接口 CLI 输出积分笔数、积分额、兑换笔数、兑换额、积分/兑换趋势、规则分布、渠道分布和会员明细。适用于用户问“积分分析”“积分获得和兑换情况怎么样”“哪些规则或渠道贡献积分多”。只使用本文固定命令和 Gateway 门店选择引用;不使用近似指标或其它业务概念替代。当用户的本业务问题提到“整个集团”“集团视角”“不区分门店”或未指定门店时,仍按当前账号/当前上下文默认权限范围执行,不得仅因未指定门店而拒绝或改用其它 Skill。
version: "1.0.174"
author: shanglong-skill-creator
---

## 适用客户(CRM8)

仅支持 CRM8 客户使用;非 CRM8 客户使用没有数据。

- 开始分析时明确提示上述适用范围。当前用户或连接器上下文已明确为非 CRM8 时,说明没有数据并停止业务查询,不输出零值报告。
- 客户版本未知时,不凭空认定其为 CRM8 或非 CRM8;按当前已认证连接器权限执行本文固定查询,并保留适用范围提示。
- 空结果不能用来判定客户版本。区分非 CRM8 不适用、CRM8 当前筛选无数据、查询失败和真实指标为 0;查询失败不解释为零。

## WorkBuddy 运行兼容(强制)

所有业务查询直接执行连接器安装的 **`sl-sea` 二进制**:Windows 为 `sl-sea.exe`,macOS/Linux 为 `sl-sea`。`<sl-sea-absolute>` 表示按附带运行规则解析出的二进制绝对路径,不能原样执行占位符。禁止调用旧版裸命令 `sl`、`sl.cmd`、`sl.ps1` 或 Node CLI 入口。正文命令模板按当前操作系统使用 PowerShell 或 Bash 直接执行;查询不依赖 Node.js。

先读取本技能附带的 [rules/workbuddy-runtime.md](rules/workbuddy-runtime.md),按其中系统对应的定位与调用规则执行二进制。下文直接命令模板按运行规则转换为当前系统的参数数组执行;Windows 不照搬 Bash 引号写法。所有时间占位符必须替换为实际时间,筛选数组、分页和维度按用户条件调整;示例中的默认空数组不覆盖用户已经确认的筛选。正文表格里的 `<sl-sea-absolute> 域 命令` 仅标识固定接口,实际执行使用绝对程序路径与参数数组。

Agent 元数据见 [agents/claw.yaml](agents/claw.yaml) 与 [agents/openai.yaml](agents/openai.yaml)。本技能独立加载,不依赖专家团 Agent 或外部统计技能。

# 积分分析业务 Skill

## 关键执行规范

1. 本 Skill 只能使用下方列出的固定 `<sl-sea-absolute> general`、`<sl-sea-absolute> channel` CLI 和 Gateway 门店选择引用。
2. 不得搜索命令列表、不得执行 help、不得尝试其它接口路径,不得临场改写接口口径。
3. 固定接口模块失败、返回空对象/空列表、指标为 0 必须分开说明;失败不能写成 0。
4. 默认业务查询模块是 3 个:基础指标与趋势、积分规则分布、积分渠道分布。会员明细只在用户要求名单、样例、会员明细或整体分析需要样例时执行。
5. 不主动执行积分调整、规则启停、导出敏感名单、触达会员等操作。
6. 不输出 token、session、cookie、密钥、认证参数;手机号、卡号等明细默认脱敏。

## 用途

用于分析指定时间、卡型和门店筛选范围内的积分表现,输出积分获得、积分兑换、趋势、规则贡献、渠道贡献和必要的会员明细样例。

## Gateway 门店选择引用

用户指定门店名称、简称、别名或门店 ID 时,通过当前 Gateway 的门店选择能力取得短期 `selectionToken`;未指定门店时按当前账号授权范围执行。

```text
<sl-sea-absolute> store find --type crm --name '<门店关键词>' --format json
```

用户给门店 ID,或名称查询无结果而需要关键词查询时,最多补查一次:

```text
<sl-sea-absolute> store find --type crm --keyword '<门店关键词或门店ID>' --format json
```

先检查进程退出码和业务状态。候选为空时停止并提示未找到门店;多个候选时展示候选名称供用户确认,不静默选择第一条,不展示原始门店编码;确认后只使用 Gateway 返回的短期 `selectionToken`。

门店选择失败时,引导用户在连接器重新认证,再重试原门店选择一次;不读取认证文件、不手工刷新或填写认证参数。

数据概览和其它会员分析只传 Gateway 认可的选择引用字段;这些字段由 Gateway 从 `selectionToken` 解析,Skill 不读取或拼装原始门店编码。相同筛选必须应用到本轮所有相关查询。

## 时间与参数

用户只需要提供当前统计周期。不要向用户额外索要上一周期;`preBeginDate/preEndDate` 按当前周期等长前移。

```text
rangeDays = (Date.parse(endDate) - Date.parse(beginDate) + 1000) / 1000 / 60 / 60 / 24
preBeginDate = beginDate - rangeDays days
preEndDate = endDate - rangeDays days
```

| 参数 | 规则 |
|---|---|
| `beginDate` | 用户指定开始日转成 `yyyy-MM-dd 00:00:00`。 |
| `endDate` | 用户指定结束日按自然日包含,转成 `yyyy-MM-dd 23:59:59`。 |
| 自然语言时间 | 如“近一个月”“本月”“上周”先解析为当前统计周期,再统一生成 `beginDate/endDate`。 |
| 默认时间 | 用户未指定时,默认最近 7 个完整自然日。 |
| `preBeginDate/preEndDate` | 不要求用户填写;按上述公式自动计算。 |
| `dateType` | 默认 `1` 按天;用户问月趋势或按月时用 `2`。 |
| `cardTypeIds` | 未指定卡型时传 `[]`。 |
| `shopFilterType` | 默认 `1`。 |
| `shopFilterTypeValue` | 未指定门店时传 `[]`;指定门店时使用 Gateway 返回的短期 `selectionToken`。 |
| `dimensionType` | 会员明细默认 `1` 按积分;用户明确问兑换明细时用 `2`。 |
| `page/size` | 默认 `page=1,size=10`;用户要求更多时再提高,不要无边界拉全量。 |

通用 `--params` 基础形态:

```json
{
  "shopFilterType": 1,
  "shopFilterTypeValue": [],
  "cardTypeIds": [],
  "dateType": 1,
  "beginDate": "<beginDate>",
  "endDate": "<endDate>",
  "preBeginDate": "<preBeginDate>",
  "preEndDate": "<preEndDate>"
}
```

## 固定接口模块

### 1. 积分基础指标与趋势固定查询

用途:查询积分笔数、积分额、兑换笔数、兑换额、较上一周期变化以及积分/兑换趋势。

```text
<sl-sea-absolute> general get-score-base-info --params '{"shopFilterType":1,"shopFilterTypeValue":[],"cardTypeIds":[],"dateType":1,"beginDate":"<beginDate>","endDate":"<endDate>","preBeginDate":"<preBeginDate>","preEndDate":"<preEndDate>"}' --format json
```

输出字段:

| 字段 | 说明 |
|---|---|
| `scoreCount` | 积分笔数。 |
| `scoreCountFloatRangeValue` / `scoreCountFloatRangeType` | 积分笔数较上一周期变化比例和方向,`0` 无变化、`1` 上浮、`2` 下浮。 |
| `scoreAmount` | 积分额。 |
| `scoreAmountFloatRangeValue` / `scoreAmountFloatRangeType` | 积分额较上一周期变化比例和方向。 |
| `exchangeCount` | 兑换笔数。 |
| `exchangeCountFloatRangeValue` / `exchangeCountFloatRangeType` | 兑换笔数较上一周期变化比例和方向。 |
| `exchangeAmount` | 兑换额。 |
| `exchangeAmountFloatRangeValue` / `exchangeAmountFloatRangeType` | 兑换额较上一周期变化比例和方向。 |
| `scoreTrend.dateList` | 积分趋势日期。 |
| `scoreTrend.scoreAmountList` | 积分额趋势。 |
| `scoreTrend.scoreCountList` | 积分笔数趋势。 |
| `exchangeTrend.dateList` | 兑换趋势日期。 |
| `exchangeTrend.exchangeAmountList` | 兑换额趋势。 |
| `exchangeTrend.exchangeCountList` | 兑换笔数趋势。 |

结果粒度:当前筛选范围的汇总卡片和按天/按月趋势序列。返回 0 是合法结果,不代表接口失败。趋势数组为空或长度不一致时,只报告原始字段,不自行补齐或重算。

### 2. 积分规则分布固定查询

用途:查询各积分规则的积分额、积分笔数、积分会员数和饼图数据。

```text
<sl-sea-absolute> general get-score-rule-data --params '{"shopFilterType":1,"shopFilterTypeValue":[],"cardTypeIds":[],"dateType":1,"beginDate":"<beginDate>","endDate":"<endDate>","preBeginDate":"<preBeginDate>","preEndDate":"<preEndDate>"}' --format json
```

输出字段:

| 字段 | 说明 |
|---|---|
| `scoreTotal` | 规则分布积分额总计。 |
| `ruleList[].ruleName` | 规则名称。 |
| `ruleList[].scoreAmount` | 积分额。 |
| `ruleList[].scoreCount` | 积分笔数。 |
| `ruleList[].scorePersonCount` | 积分会员数。 |
| `ruleList[].proportion` | 占比;若接口未返回或为空,可按 `scoreAmount / scoreTotal` 辅助计算。 |
| `rulePieList[].ruleName` | 饼图规则名称。 |
| `rulePieList[].scoreAmount` | 饼图积分额。 |

结果粒度:积分规则。`ruleList=[]` 且 `scoreTotal=0` 表示当前筛选范围无规则分布数据;不要改用其它接口补造规则。

### 3. 积分渠道分布固定查询

用途:查询各渠道的积分额、积分笔数、积分会员数和饼图数据。

```text
<sl-sea-absolute> channel get-score-channel-data --params '{"shopFilterType":1,"shopFilterTypeValue":[],"cardTypeIds":[],"dateType":1,"beginDate":"<beginDate>","endDate":"<endDate>","preBeginDate":"<preBeginDate>","preEndDate":"<preEndDate>"}' --format json
```

输出字段:

| 字段 | 说明 |
|---|---|
| `scoreTotal` | 渠道分布积分额总计。 |
| `channelList[].channelName` | 渠道名称。 |
| `channelList[].scoreAmount` | 积分额。 |
| `channelList[].scoreCount` | 积分笔数。 |
| `channelList[].scorePersonCount` | 积分会员数。 |
| `channelList[].proportion` | 占比;若接口未返回或为空,可按 `scoreAmount / scoreTotal` 辅助计算。 |
| `channelPieList[].channelName` | 饼图渠道名称。 |
| `channelPieList[].scoreAmount` | 饼图积分额。 |

结果粒度:积分渠道。`channelList=[]` 且 `scoreTotal=0` 表示当前筛选范围无渠道分布数据;不要改用其它接口补造渠道。

### 4. 会员积分明细固定查询

用途:分页查询会员积分或兑换明细,返回积分额、兑换额、次数和最后一次操作时间。

```text
<sl-sea-absolute> general get-member-score --params '{"shopFilterType":1,"shopFilterTypeValue":[],"cardTypeIds":[],"dateType":1,"dimensionType":1,"beginDate":"<beginDate>","endDate":"<endDate>","preBeginDate":"<preBeginDate>","preEndDate":"<preEndDate>","page":1,"size":10}' --format json
```

输入补充:`dimensionType=1` 按积分,`dimensionType=2` 按兑换;默认 `page=1,size=10`。

输出字段:

| 字段 | 说明 |
|---|---|
| `total` | 会员明细总条数。 |
| `list[].memberName` | 姓名。 |
| `list[].shopName` | 所属门店。 |
| `list[].saledShopName` | 售卡门店。 |
| `list[].memberMobile` | 手机号,输出报告中需脱敏。 |
| `list[].cardNo` | 卡号,输出报告中需脱敏。 |
| `list[].cardTypeName` | 卡型。 |
| `list[].memberSex` | 性别。 |
| `list[].memberBirthday` | 生日。 |
| `list[].amount` | 当 `dimensionType=1` 时为积分额;当 `dimensionType=2` 时为兑换额。 |
| `list[].count` | 当 `dimensionType=1` 时为积分次数;当 `dimensionType=2` 时为兑换次数。 |
| `list[].lastOptTime` | 最后一次操作时间。 |

结果粒度:会员卡维度的分页明细。`total=0` 且 `list=[]` 表示当前筛选范围没有会员积分/兑换明细。

## 执行顺序

1. 标准化时间、卡型、门店、趋势粒度和分页参数,计算上一周期。
2. 执行积分基础指标与趋势固定查询。
3. 执行积分规则分布固定查询。
4. 执行积分渠道分布固定查询。
5. 如用户需要名单、样例、会员明细或整体分析需要少量样例,执行会员积分明细固定查询;默认 `dimensionType=1` 按积分、`page=1,size=10`。
6. 如用户明确问兑换会员明细,再执行一次会员积分明细固定查询,把 `dimensionType` 改为 `2`。

用户只问单个模块时,只执行对应固定查询,不为了补全报告追加其它查询。

## 合并与计算规则

| 指标 | 规则 |
|---|---|
| 积分笔数、积分额、兑换笔数、兑换额 | 只使用积分基础指标与趋势固定查询返回值。 |
| 较上一周期 | 使用基础指标接口返回的 `FloatRangeValue` 和 `FloatRangeType`;不自行重算覆盖。 |
| 积分趋势 | 使用 `scoreTrend.dateList`、`scoreAmountList`、`scoreCountList`。 |
| 兑换趋势 | 使用 `exchangeTrend.dateList`、`exchangeAmountList`、`exchangeCountList`。 |
| 趋势解释 | 只有日期数组和数值序列长度一致时才按下标解释高低点。 |
| 规则占比 | 优先使用 `ruleList[].proportion`;缺失时可用 `scoreAmount / scoreTotal` 计算,分母为 0 时不计算。 |
| 渠道占比 | 优先使用 `channelList[].proportion`;缺失时可用 `scoreAmount / scoreTotal` 计算,分母为 0 时不计算。 |
| 规则和渠道 | 是不同维度,不能按行直接关联,也不能把规则贡献归因到某个渠道。 |
| 会员明细 | 默认最多展示 3 条脱敏样例;手机号、卡号不要完整展开。 |
| 兑换明细 | 只有执行 `dimensionType=2` 后才能输出兑换额/兑换次数会员排行。 |

## 输出报告结构

1. 筛选条件:时间、上一周期、卡型、门店、趋势粒度、会员明细口径。
2. 执行摘要:执行了哪些固定接口模块,哪些成功、失败或为空。
3. 核心指标:积分笔数、积分额、兑换笔数、兑换额,含较上一周期变化。
4. 趋势判断:积分获得和积分兑换的高低点、连续为 0、异常波动。
5. 结构分布:积分规则 Top 项、积分渠道 Top 项,并注明分布口径。
6. 明细提示:会员积分/兑换明细总条数、脱敏样例或不展示原因。
7. 风险与建议:样本少、分母为 0、规则过于集中、渠道过于集中、兑换活跃度异常等。

## 失败策略

| 情况 | 处理 |
|---|---|
| 单个固定接口模块失败 | 说明失败模块和受影响指标,继续分析其它已成功模块,不补造该模块数字;只有用户明确要求排查执行问题时才展示底层命令和错误摘要。 |
| 基础指标失败 | 可以继续输出规则、渠道和明细,但必须标注缺少核心汇总。 |
| 返回空对象或空列表 | 说明当前条件无数据,提示检查时间、卡型、门店或权限。 |
| 字段缺失 | 标注缺失字段,不用近似字段替代。 |
| 登录或解密失败 | 说明认证或解密失败导致查询不可用,不输出认证信息;只有用户明确要求排查执行问题时,才展示 CLI 错误摘要。 |

Files in this skill

  • SKILL.md14.6 KB
  • _meta.json971 B
  • agents/claw.yaml1.1 KB
  • agents/openai.yaml302 B
  • rules/workbuddy-runtime.md6.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.