本文档为 SPEC.md 的补充,详细说明各功能模块的业务逻辑、业务规则和技术实现细节。
AI 数字人是基于大语言模型的智能对话系统,为用户提供产品咨询、健康建议、常见问题解答等服务。
| 步骤 | 说明 | 超时/限制 |
|---|---|---|
| 1. 用户输入 | 用户发送文本消息 | 最大 500 字符 |
| 2. 敏感词过滤 | 检查消息是否包含敏感词 | 敏感词库从 Redis 加载 |
| 3. 知识库检索 | 匹配相关知识条目 | 返回最多 5 条 |
| 4. Context 构建 | 将知识库内容拼接为 prompt | 知识库内容截断至 2000 字符 |
| 5. AI 调用 | 请求大模型生成回答 | 超时 30 秒 |
| 6. 结果过滤 | 检查回答是否包含敏感词 | 过滤后返回 |
| 7. 记录存储 | 存储对话到数据库 | 异步写入 |
enagic:ai:sensitive,格式为逗号分隔的词列表li_enagic_ai_conversation 表POST /enagic/buyer/ai/chat
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| question | String | 是 | 用户问题,最大 500 字符 |
| sessionId | String | 否 | 会话 ID,用于关联历史 |
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| answer | String | AI 回答内容 |
| sessionId | String | 会话 ID |
错误码:
| 错误码 | 说明 |
|---|---|
| 1001 | 敏感词过滤拦截 |
| 1002 | AI 服务调用超时 |
| 1003 | AI 服务返回异常 |
GET /enagic/buyer/ai/history
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sessionId | String | 否 | 会话 ID |
| page | Integer | 否 | 页码,默认 1 |
| pageSize | Integer | 否 | 每页条数,默认 10 |
| 分类编码 | 分类名称 | 说明 |
|---|---|---|
| PRODUCT | 产品知识 | 产品功效、使用方法、注意事项 |
| HEALTH | 健康知识 | 健康信息、营养建议 |
| FAQ | 常见问题 | 常见问题解答 |
| 状态 | 说明 |
|---|---|
| ACTIVE | 启用,参与知识检索 |
| INACTIVE | 停用,不参与检索 |
健康布施者是平台的分销/推广角色,负责邀请客户、推广产品、 提供售后服务。区别于普通分销商,健康布施者有永久绑定关系和荣誉体系。
用户扫码 → 解析 URL 参数 inviter_id → 写入 li_member.health_advisor_id → 永久绑定
触发条件:
永久绑定:
li_member.permanent_bind = true 标记| 勋章等级 | 勋章类型 | 触发条件 | 积分奖励 | 显示图标 |
|---|---|---|---|---|
| 一星 | STAR_1 | 首次成功邀请 1 人 | +10 分 | ⭐ |
| 二星 | STAR_2 | 累计邀请 5 人 | +50 分 | ⭐⭐ |
| 三星 | STAR_3 | 累计邀请 20 人 | +200 分 | ⭐⭐⭐ |
| 宗师 | MASTER | 累计邀请 50 人 | +500 分 | 👑 |
勋章发放时机:
li_enagic_advisor_medal 记录积分来源:
| 来源 | 积分规则 |
|---|---|
| 邀请客户 | +10 分/次 |
| 勋章升级 | 参见勋章体系表格 |
| 客户消费 | 消费金额 × 1% = 积分 |
积分用途:
GET /enagic/buyer/advisor/info
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | Long | 布施者 ID |
| memberName | String | 会员名称 |
| name | String | 真实姓名 |
| medalLevel | String | 当前勋章等级 |
| totalInvites | Integer | 累计邀请人数 |
| availableCommission | BigDecimal | 可用佣金 |
| advisorCredits | Integer | 顾问积分 |
| status | String | 状态 ACTIVE/INACTIVE |
POST /enagic/buyer/advisor/apply
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | String | 是 | 真实姓名 |
| idNumber | String | 是 | 身份证号(实名认证) |
业务规则:
GET /enagic/buyer/advisor/invite-qr
返回: 二维码图片(base64 或 URL)
参数: 自动使用当前登录用户的 memberId 作为邀请人
VIP 会员是平台的高价值客户群体,享受专属权益。与 Lilishop 原生 VIP 不同,Enagic VIP 无到期时间,采用分享激励模式。
li_enagic_member_vip 记录| 字段 | 类型 | 说明 |
|---|---|---|
| name | String | 配置名称,如"银卡 VIP"、"金卡 VIP" |
| vipLevel | Integer | VIP 等级,1-10 |
| price | BigDecimal | 价格,单位元 |
| upgradeCondition | String | 升级条件描述,如"累计消费满 5000" |
| validityDays | Integer | 有效期天数,-1 表示永久 |
| benefits | String | 权益说明,JSON 数组格式 |
| status | String | OPEN/CLOSE |
触发条件:
提醒内容:
亲爱的 VIP 会员,感谢您一直以来的支持!
您已 X 天没有分享好物了,快去分享心仪的商品吧~
发送方式:
| 权益类型 | 说明 |
|---|---|
| 折扣 | 商品购买享 X 折 |
| 积分 | 消费获得双倍积分 |
| 专属客服 | 专属客服通道 |
| 免费配送 | 订单免配送费 |
| 优先发货 | 订单优先处理 |
GET /enagic/buyer/vip/info
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| vipLevel | Integer | 当前 VIP 等级 |
| vipName | String | VIP 名称 |
| openTime | LocalDateTime | 开通时间 |
| nextGratitudeRemindTime | LocalDateTime | 下次感恩提醒时间 |
POST /enagic/buyer/vip/open
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| configId | Long | 是 | VIP 配置 ID |
业务规则:
抵扣金是平台赠送或奖励的虚拟货币,可用于订单支付抵扣。
| 来源 | 规则 |
|---|---|
| 充值赠送 | 后台配置赠送比例,如充值 100 送 20 |
| 活动奖励 | 平台活动奖励 |
| 退款返还 | 订单退款时优先退还原抵扣金 |
下单时冻结:
解冻时机:
| 类型 | 说明 | 金额方向 |
|---|---|---|
| RECHARGE | 充值 | + |
| ORDER_DEDUCT | 订单抵扣 | - |
| REFUND | 退款返还 | + |
| FROZEN | 冻结 | - (冻结) |
| UNFREEZE | 解冻 | + (解冻) |
| ACTIVITY_REWARD | 活动奖励 | + |
GET /enagic/buyer/deduction/info
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| deductionBalance | BigDecimal | 可用余额 |
| frozenBalance | BigDecimal | 冻结金额 |
GET /enagic/buyer/deduction/log
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| amount | BigDecimal | 变动金额(正数增加,负数减少) |
| type | String | 流水类型 |
| orderSn | String | 关联订单号 |
| remark | String | 备注 |
| createTime | LocalDateTime | 创建时间 |
客户运维是针对购买客户的售后服务系统,通过流程化的节点提醒,提升客户体验。
数据结构(JSON):
{
"flowName": "标准30天运维流程",
"description": "适用于常规商品的运维流程",
"nodes": [
{
"name": "发货提醒",
"day": 1,
"content": "您的订单已发货,请注意查收",
"remindType": "WECHAT_MSG"
},
{
"name": "收货确认",
"day": 3,
"content": "请确认收货并开始使用产品",
"remindType": "WECHAT_MSG"
},
{
"name": "使用指导",
"day": 7,
"content": "产品使用指导(可调用 AI)",
"remindType": "AI_REMINDER"
},
{
"name": "使用回访",
"day": 30,
"content": "使用体验回访",
"remindType": "WECHAT_MSG"
}
]
}
节点属性:
| 属性 | 类型 | 说明 |
|---|---|---|
| name | String | 节点名称 |
| day | Integer | 距离发货的天数 |
| content | String | 提醒内容 |
| remindType | String | 提醒类型:WECHAT_MSG/AI_REMINDER/SMS |
触发时机:
ORDER_DELIVERED 事件生成逻辑:
li_enagic_operation_plan 记录执行时机:
nextNodeTime <= now 时,触发节点执行执行动作:
li_enagic_operation_recordcurrentNodeIndex 和 nextNodeTime触发条件:
转移流程:
li_enagic_member_transfer 记录GET /enagic/buyer/operation/my-plans
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| memberId | Long | 是 | 会员 ID |
| status | String | 否 | 状态筛选 |
| pageNum | Integer | 否 | 页码 |
| pageSize | Integer | 否 | 每页条数 |
响应参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | Long | 计划 ID |
| flowName | String | 流程名称 |
| currentNodeName | String | 当前节点 |
| status | String | 状态 |
| nextNodeTime | LocalDateTime | 下次节点时间 |
POST /enagic/manager/operation/plan/remind
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 是 | 计划 ID |
素材二维码用于追踪内容的传播效果和用户邀请关系。
li_enagic_article_qr 表pages/article/detail?id={articleId}&inviter={memberId}&expire={timestamp}
/enagic/buyer/advisor/bind-customer 完成绑定view_roleGET /enagic/buyer/article/qr/{articleId}
响应:
┌─────────────────┐
│ 用户行为 │
└────────┬────────┘
│
▼
┌─────────────────────────────────────────┐
│ 订单模块(复用 Lilishop) │
│ 订单创建 → 订单支付 → 订单发货 → 完成 │
└────────┬────────────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ RocketMQ 事件 (enagic-consumer) │
├─────────────────────────────────────────┤
│ ORDER_CREATED → 抵扣金冻结 │
│ ORDER_DELIVERED → 创建运维计划 │
│ ORDER_COMPLETED → 抵扣金确认扣款 │
│ ORDER_CANCELLED → 抵扣金解冻 │
└────────┬────────────────────────────────┘
│
┌────┴────┐
│ │
▼ ▼
┌───────┐ ┌───────┐
│运维计划│ │健康布施者│
│提醒 │ │业绩统计│
└───────┘ └───────┘
| 任务名称 | cron 表达式 | 功能 | 处理数据量 |
|---|---|---|---|
| enagic-operation-remind | 0 0 9 * * ? | 运维计划节点提醒 | 扫描所有 IN_PROGRESS 计划 |
| enagic-gratitude-remind | 0 0 10 * * ? | VIP 感恩提醒 | 扫描所有 VIP 客户 |
| enagic-transfer-check | 0 0 12 * * ? | 客户自动转移检查 | 扫描所有跳过次数 >=3 的计划 |
| enagic-medal-check | 0 0 8 * * ? | 勋章发放检查 | 扫描所有健康布施者 |
| enagic-behavior-clean | 0 0 2 * * ? | 行为日志清理 | 删除 90 天前的日志 |
enagic:
ai:
provider: siliconflow # 或 aliyun
api-key: ${AI_API_KEY}
model: Qwen/Qwen2.5-7B-Instruct
base-url: https://api.siliconflow.cn/v1
timeout: 30000
max-context-length: 2000
enagic:
health-advisor:
enabled: true
permanent-bind: true # 是否永久绑定
invite-bonus-points: 10 # 邀请奖励积分
enagic:
vip:
enabled: true
no-expiry: true # 无到期时间模式
gratitude-remind-days: 30 # 感恩提醒周期(天)
enagic:
deduction:
enabled: true
min-deduction: 1 # 最低抵扣金额
max-deduction-ratio: 100 # 最高抵扣比例(百分比)
enagic:
operation:
enabled: true
default-flow-id: 1 # 默认运维流程 ID
skip-threshold: 3 # 跳过次数阈值,触发转移
文档版本:V1.0 创建日期:2026-05-08