1. 问题背景
目前鲸选产品的报错,不管是后端返回的还是前端返回的报错,都只有一个简单的描述, 比如“未知错误”,“库存锁定异常”,“锁定异常”等等, 对于现场排查问题以及问题反馈至研发环节因为查询大量日志而造成了时间的浪费。
zl-app-service对错误进行的包装并不能满足C端场景的需求。为此需要重新设计一种适合C端的报错体系。
2. 方案设计
2.1. C端报错方案
C端报错分为两段
-
code=[componentId][res.code].[hhmmssSSS]v[版本号]
-
message=res.msg
componentId 即直接报错方 res.code 直接报错方的报错码 hh:mm:ss.SSS C端发出请求时traceId的时戳
错误定位逻辑:
-
componentId直接定位组件负责人
-
elk 搜索 traceId: 截取返回的时戳,拼接上年月日。
2.2. 错误逻辑上报
新增errorLevel字段,报错等级分为3个等级,其中D级需要前端上报错误。
public enum ErrorLevel {
/** 客服和运营 */
B,
/** C端顾客 */
C,
/** 运维和开发 */
D
}
错误上报格式
export class ErrorLog {
appId: string;(1)
appVersion: string;(2)
traceId: string;(3)
time: date;(4)
componentId: string;(5)
errorLevel: string;(6)
code: number;(7)
}
| 1 | C端标识(唯一) |
| 2 | C端版本号 |
| 3 | 请求traceId |
| 4 | 报障时间 |
| 5 | 组件id |
| 6 | 错误等级 |
| 7 | 错误码 |
2.3. 对中台组件调用的错误包装
zl-app为每个中台组件及第三方远程服务设置一个报错码前缀。
2.3.1. 错误码前缀检索表
| 组件 | 错误码前缀 |
|---|---|
zl-app |
800 |
资料 |
801 |
知而行 |
802 |
投放cms |
803 |
ts |
804 |
促销中台 |
805 |
鼎力云 |
806 |
nf |
807 |
群脉 |
808 |
jCrm |
809 |
weiXin |
810 |
联华信息部oto |
811 |
fms短信 |
812 |
tlsp |
813 |
高德 |
814 |
sas |
815 |
亿猫 |
816 |
云闪付 |
817 |
兑吧 |
818 |
2.3.2. 错误码检索表
| 错误码 | 报错等级 | 业务意义 |
|---|---|---|
800000 |
D |
数据异常,请联系客服 |
800001 |
D |
数据异常,请联系客服(第三方服务) |
800002 |
D |
访问超时,请稍后再试 |
800003 |
C |
为了您更好的体验,请升级客户端版本 |
800004 |
B |
数据异常,请联系客服(数据库,数据不存在) |
800005 |
B |
数据异常,请联系客服(数据库,数据被人修改) |
800006 |
D |
数据异常(参数不合法),请联系客服 |
800007 |
C |
功能未开放 |
800008 |
B |
未知的平台 |
800009 |
C |
该卡已经绑定他用户,不能再开通 |
800011 |
B |
券类型[{0}]不支持,请联系客服 |
800012 |
C |
新注册用户{0}天后才可注销 |
800013 |
C |
账户注销中,限制登录 |
800014 |
B |
充值金额数据异常,请联系客服 |
800015 |
C |
渠道类型配置错误,请联系客服(知而行channelType配置错误) |
800016 |
C |
暂不支持的活动类型 |
800017 |
D |
查询商品数不能超过{0} |
800018 |
D |
服务器开小差了,请稍后再试(redis访问异常) |
800020 |
C |
领取失败,您的号码有风险,请联系客服人员 |
800021 |
C |
输入的手机号与登陆手机号不一致 |
800022 |
C |
您的操作太频繁了,请稍后再试 |
800023 |
B |
未查询到商品(活动商品和资料商品不一致) |
800024 |
C |
会员不存在 |
800025 |
C |
验证码已过期 |
800026 |
C |
验证码输入不正确 |
800027 |
B |
获取钉钉用户信息错误 |
800028 |
B |
获取绿城用户信息错误 |
800029 |
B |
获取支付宝用户信息错误 |
800030 |
C |
登录密码错误,请重试 |
800031 |
C |
登录密码未设置 |
800032 |
C |
登录会员不存在,请重新登录 |
800033 |
C |
密码登录异常,请使用短信验证码登录 |
800034 |
C |
定位异常,请确认定位功能是否开启 |
800035 |
C |
文件上传失败 |
800036 |
C |
身份认证失败 |
800037 |
B |
获取云闪付用户信息错误 |
800038 |
C |
支付宝身份证与会员卡身份证不一致 |
800039 |
D |
支付宝认证失败(支付宝解密错误) |
800040 |
C |
支付宝未实名认证 |
800041 |
B |
会员数据异常,请联系客服 |
801000 |
D |
调用mas。数据异常,请联系客服(success=true) |
801001 |
D |
调用mas。数据异常,请联系客服(success=false) |
801002 |
D |
调用mas。访问超时,请稍后再试 |
801003 |
D |
调用mas。资料数据异常,请联系客服(索引异常) |
801004 |
D |
调用mas。资料数据异常,请联系客服(索引异常) |
801005 |
C |
调用mas。未查询到手机号对应的员工信息 |
801006 |
C |
调用mas。该手机号对应的员工状态不可用 |
801007 |
B |
调用mas。商品价格异常,请联系客服(资料原价缺失) |
802000 |
D |
调用zex。数据异常,请联系客服(success=true) |
802001 |
D |
调用zex。数据异常,请联系客服(success=false) |
802002 |
D |
调用zex。会员查询超时,请稍后再试 |
802003 |
D |
调用zex。促销查询超时,请稍后再试 |
802004 |
D |
调用zex。券查询超时,请稍后再试 |
802005 |
D |
调用zex。数据异常,请联系客服(未识别的知而行错误码) |
802006 |
C |
调用zex。会员登录过期,请刷新页面(知而行token过期) |
802007 |
D |
调用zex。请求数据异常,请联系客服(请求参数缺失) |
802008 |
C |
调用zex。会员不存在 |
802009 |
C |
调用zex。会员存在但联华卡不存在 |
802010 |
C |
调用zex。会员手机号不存在 |
802011 |
C |
调用zex。会员身份证号不存在 |
802012 |
C |
调用zex。未找到有效活动或超过限量 |
802013 |
C |
调用zex。未找到有效活动~ |
802014 |
C |
调用zex。每天限领{0}张 |
802015 |
C |
调用zex。每人限领{0}张 |
802016 |
C |
调用zex。手慢啦,今日优惠券已抢完 |
802017 |
C |
调用zex。手慢啦,优惠券已抢完 |
802018 |
C |
调用zex。活动太火爆了,请稍后再试 |
802019 |
C |
调用zex。已经领取过了哦~ |
802020 |
C |
调用zex。当日券已领完~ |
802021 |
C |
调用zex。券已领完~ |
802022 |
C |
调用zex。券适用商品无使用范围, 使用范围异常 |
802023 |
C |
调用zex。会员更新失败, 原因: {0} |
802024 |
C |
调用zex。会员重复注册: {0} |
802025 |
C |
调用zex。手机号已经被其他会员使用 |
802026 |
C |
调用zex。注册了错误的卡类型: {0} |
802027 |
C |
调用zex。会员更新不支持该识别类型 |
802028 |
C |
调用zex。会员绑定失败 |
802029 |
C |
调用zex。会员解绑失败 |
802030 |
C |
调用zex。该会员已绑定其他uid |
802031 |
C |
调用zex。该uid已绑定其他会员 |
802032 |
C |
调用zex。该uid已绑定该会员 |
802033 |
C |
调用zex。不可以改绑, 原因: {0} |
802034 |
C |
调用zex。未查询到目标卡号,改绑失败 |
802035 |
C |
调用zex。不存在相应储值卡信息 |
802036 |
C |
调用zex。存在多张离线储值卡 |
802037 |
C |
调用zex。该卡号已被用户{0}的账号绑定 |
802038 |
C |
调用zex。根据卡号没有找到会员的卡, cardNumber: {0} |
802039 |
C |
调用zex。会员刷脸开通电子储值卡失败 |
802040 |
C |
调用zex。会员刷脸绑卡失败 |
802041 |
C |
调用zex。身份号、手机号、卡号三者没有对应一个会员 |
802042 |
C |
调用zex。请走刷脸认证绑卡模式 |
802043 |
C |
调用zex。查询返回的权益包不止一个 |
802044 |
C |
调用zex。查询返回的权益项详情不止一个 |
802045 |
C |
调用zex。校验邀约码失败: {0} |
802046 |
C |
调用zex。查询员工邀约失败: {0} |
802047 |
C |
调用zex。会员权益包解析出错 |
802048 |
C |
调用zex。储值卡状态异常, online: {0} |
802049 |
C |
调用zex。未查询到蓝鲸会员商品, skuId: {0} |
802050 |
C |
调用zex。会员卡[{0}]不存在 |
802051 |
C |
调用zex。会员卡[{0}]ID不存在 |
802052 |
D |
调用zex。促销时间解析异常 |
802053 |
C |
调用zex。促销查询异常,请稍后再试 |
802054 |
C |
调用zex。储值卡已购买蓝鲸会员 |
802055 |
D |
调用zex。会员查询异常 |
802056 |
C |
调用zex。会员的离线实体卡已有绑定关系 |
803000 |
D |
调用cms。数据异常,请联系客服(success=true) |
803001 |
D |
调用cms。数据异常,请联系客服(success=false) |
803002 |
D |
调用cms。访问超时,请稍后再试 |
803003 |
D |
调用cms。活动数据异常,请联系客服 |
804000 |
D |
调用ts。数据异常,请联系客服(success=true) |
804001 |
D |
调用ts。数据异常,请联系客服(success=false) |
804002 |
D |
调用ts。访问超时,请稍后再试 |
804003 |
C |
调用ts。卡不存在 |
804004 |
D |
调用ts。卡类型不存在 |
804005 |
C |
调用ts。会员卡已离线,请至门店处理或更换卡 |
804006 |
C |
调用ts。会员卡{0},请更换卡号 |
804007 |
C |
调用ts。会员卡{0},请至门店办理或更换卡号 |
804008 |
C |
调用ts。购卡人身份证号不匹配 |
804009 |
C |
调用ts。TS开卡返回的虚拟卡不存在 |
804010 |
C |
调用ts。充值卡错误: {0} |
804011 |
C |
调用ts。支付密码错误 |
804012 |
D |
调用ts。充余额查询失败:{0} |
804013 |
B |
调用ts。{0} |
805000 |
D |
调用spms。数据异常,请联系客服(success=true) |
805001 |
D |
调用spms。数据异常,请联系客服(success=false) |
805002 |
D |
调用spms。访问超时,请稍后再试 |
806000 |
D |
调用uCloud。数据异常,请联系客服(success=true) |
806001 |
D |
调用uCloud。数据异常,请联系客服(success=false) |
806002 |
D |
调用uCloud。访问超时,请稍后再试 |
806003 |
C |
调用uCloud。会员不存在 |
806004 |
C |
调用uCloud。会员注册失败 |
806005 |
C |
调用uCloud。会员注册不允许多个身份 |
806006 |
D |
调用uCloud。券适用范围异常 |
806007 |
C |
调用uCloud。卡号已绑定的手机号是否自动解绑 |
806008 |
C |
调用uCloud。会员实名认证失败 |
806009 |
C |
调用uCloud。推送实名认证结果失败 |
806010 |
C |
调用uCloud。卡不存在或已过期 |
807000 |
D |
调用nf。数据异常,请联系客服(success=true) |
807001 |
D |
调用nf。数据异常,请联系客服(success=false) |
807002 |
D |
调用nf。访问超时,请稍后再试 |
807003 |
C |
调用nf。发送开通储值事件失败 |
807004 |
C |
调用nf。发送事件失败, 事件类型: {0} |
809000 |
D |
调用jcrm。数据异常,请联系客服(success=true) |
809001 |
D |
调用jcrm。数据异常,请联系客服(success=false) |
809002 |
D |
服务jcrm。访问超时,请稍后再试 |
809000 |
D |
调用qunMai。数据异常,请联系客服(success=true) |
809001 |
D |
调用qunMai。数据异常,请联系客服(success=false) |
809002 |
D |
服务qunMai。访问超时,请稍后再试 |
810000 |
D |
调用weiXin。数据异常,请联系客服(success=true) |
810001 |
D |
调用weiXin。数据异常,请联系客服(success=false) |
810002 |
D |
调用weiXin。访问超时,请稍后再试 |
810003 |
D |
调用weiXin。签名异常 |
811000 |
D |
调用oto。数据异常,请联系客服(success=true) |
811001 |
D |
调用oto。数据异常,请联系客服(success=false) |
811002 |
D |
调用oto。访问超时,请稍后再试 |
812000 |
D |
调用fms。数据异常,请联系客服(success=true) |
812001 |
D |
调用fms。数据异常,请联系客服(success=false) |
812002 |
D |
调用fms。访问超时,请稍后再试 |
813000 |
D |
调用tlsp。数据异常,请联系客服(success=true) |
813001 |
D |
调用tlsp。数据异常,请联系客服(success=false) |
813002 |
D |
调用tlsp。访问超时,请稍后再试 |
814000 |
D |
调用高德。数据异常,请联系客服(success=true) |
814001 |
D |
调用高德。数据异常,请联系客服(success=false) |
814002 |
D |
调用高德。访问超时,请稍后再试 |
815000 |
D |
调用sas。数据异常,请联系客服(success=true) |
815001 |
D |
调用sas。数据异常,请联系客服(success=false) |
815002 |
D |
调用sas。访问超时,请稍后再试 |
816000 |
D |
调用亿猫。数据异常,请联系客服(success=true) |
816001 |
D |
调用亿猫。数据异常,请联系客服(success=false) |
816002 |
D |
调用亿猫。访问超时,请稍后再试 |
816003 |
D |
调用亿猫。解锁购物车异常。 |
817000 |
D |
调用云闪付。数据异常,请联系客服(success=true) |
817001 |
D |
调用云闪付。数据异常,请联系客服(success=false) |
817002 |
D |
调用云闪付。云闪付授权过期,请刷新页面(云闪付token过期) |
817003 |
D |
调用云闪付。不合法的授权码 |
817004 |
D |
调用云闪付。非法请求 |
817005 |
D |
调用云闪付。验签失败 |
817006 |
D |
调用云闪付。缓存中不包含此商户appId |
817007 |
D |
调用云闪付。缓存中不包含此backendToken |
817008 |
D |
调用云闪付。获取商户信息异常 |
817009 |
D |
调用云闪付。无权限访问此接口 |
817010 |
D |
调用云闪付。不支持此访问域名 |
817011 |
C |
调用云闪付。未授权提供手机号 |
817012 |
D |
调用云闪付。手机号不存在 |
818000 |
D |
调用兑吧。数据异常,请联系客服(success=true) |
818001 |
D |
调用兑吧。数据异常,请联系客服(success=false) |
818002 |
D |
调用兑吧。访问超时,请稍后再试 |
818003 |
D |
调用兑吧。编码错误 |
818004 |
D |
调用兑吧。用户不存在 |
818004 |
D |
调用兑吧。重复的通知 |
819004 |
D |
调用phoenix。数据异常,请联系客服 |
819004 |
D |
调用phoenix。数据异常,请联系客服 |
819004 |
D |
调用phoenix。访问超时,请稍后再试 |
819004 |
D |
调用phoenix。不支持的会员查询类型 |
819004 |
D |
调用phoenix。会员不存在 |