[2025-07-18] 添加Amazon应用开发指南
Some checks failed
Publish to Confluence / confluence (push) Failing after 30s

This commit is contained in:
liuxiaohua 2025-07-18 12:03:16 +08:00
parent b30017d1e3
commit 26d9f8f85b
10 changed files with 1109 additions and 3 deletions

View File

@ -0,0 +1,91 @@
<!-- Space: qifu -->
<!-- Parent: 后端技术&知识&规范 -->
<!-- Parent: 技术方案 -->
<!-- Parent: 基建 -->
<!-- Parent: 01-发布文档 -->
<!-- Title: 20250718-尾程派送及领星对接发布 -->
<!-- Macro: :anchor\((.*)\):
Template: ac:anchor
Anchor: ${1} -->
<!-- Macro: \!\[.*\]\((.+)\)\<\!\-\- width=(.*) \-\-\>
Template: ac:image
Url: ${1}
Width: ${2} -->
<!-- Macro: \<\!\-\- :toc: \-\-\>
Template: ac:toc
Printable: 'false'
MinLevel: 2
MaxLevel: 4 -->
<!-- Include: 杂项/声明文件.md -->
<!-- :toc: -->
# 20250718-尾程派送及领星对接发布
## 发布说明
### 涉及项目
| 项目 | 分支 | 发布顺序 | 数据库变更 | 配置变更 | 负责人 | 备注 |
|------------------|---------------------|------|-----------------------|-------------------------|-----|----------------------------|
| qifu-saas-eg | master | 1 | [数据库脚本DDL](#数据库脚本DDL) | [Nacos配置文件](#Nacos配置文件) | 刘晓华 | 注意配置文件中需要修改的部分需要修改为对应环境的数据 |
### 附件
#### 数据库脚本DDL
##### qifu-saas-eg数据库DDL
```sql
```
##### qifu-saas-eg数据库DML
```sql
```
#### Nacos配置文件
```yaml
qifu:
eg:
yihao:
customer-code: JY000004
app-id: 327573739
app-key: vwjeoRPmo9DLsF1JIle2GB5groFFqQAW #还未知
daokai:
customer-code: 10015
app-key: 3da5819f-9eff-4339-901f-66a70af20a24
ling-xing:
app-key: d4106418cf1e48ea951e8e02efc17fd1
app-secret: c20bcbd29bd048d3a512fadccf626522
customer-code: 3685001
hye:
app-key: 17e598d30986425293806ce52be75318
customer-code: HYE0074
version: 1.0
nonce: slnkda
```
### 其余配置
#### 开发者平台配置
----
## 开发说明
> 开发分支feat/20250611-orderfix
### 功能列表
- 义乌壹皓usps
- 道凯ups、fedex
- 派送翼usps、ups
- 环洋国际usps、fedex

View File

@ -0,0 +1,59 @@
<!-- Space: qifu -->
<!-- Parent: 后端技术&知识&规范 -->
<!-- Parent: 技术方案 -->
<!-- Parent: 基建 -->
<!-- Parent: 03-接入指南 -->
<!-- Parent: 0301-电商接入指南 -->
<!-- Title: 20250717-Amazon应用开发指南 -->
# Amazon应用开发指南
## 成为开发者
### 开发者类型与适用场景
| **类型** | **适用对象** | **审核要求** | **数据访问范围** |
|-----------|--------------|-----------|------------------|
| **私有开发者** | 仅服务单个卖家账户 | 宽松 | 仅限自身账户数据 |
| **公共开发者** | 开发多卖家使用的公共应用 | 严格安全与合规审核 | 需受限角色PII获取敏感数据 |
> ⚠️ **敏感数据限制**买家地址、电话等PII数据需申请**受限角色**,且禁止存储在国内服务器。
### 开发者注册
- 注册链接https://developer.amazonservices.com/register#register
- 点击Create Solution Provider Account
- ![](https://picture.texous.cn/blog/20250716173546178.png)
- 点击创建您的亚马逊账户
- ![](https://picture.texous.cn/blog/20250716173614502.png)
- ![](https://picture.texous.cn/blog/20250716173635493.png)
- 输入您的姓名,邮箱地址,和密码
- 注册解决方案体工商账户
- ![](https://picture.texous.cn/blog/20250716181547320.png)
- ![](https://picture.texous.cn/blog/20250716181727364.png)
- 设置解决方案类型
- ![](https://picture.texous.cn/blog/20250716181849061.png)
### 身份验证
- 进入SPP
- ![](https://picture.texous.cn/blog/20250716173846797.png)
- 点击验证身份/开始使用
- ![](https://picture.texous.cn/blog/20250716182210031.png)
- 点击下一页
- ![](https://picture.texous.cn/blog/20250716182842274.png)
- 点击下一步
- 填写对应的企业信息
- ![](https://picture.texous.cn/blog/20250716174006695.png)
- 个人信息录入(需要身份证,以及人脸识别,所以需要电脑有摄像头)
- 完成后等待 72小时会发送通知到对应的邮箱
### 开发人员资料填写
- ![](https://picture.texous.cn/blog/20250717190911526.png)
- ![](https://picture.texous.cn/blog/20250717190743504.png)
### 设置解决方案提供商账户资料和权限
## 注意事项
> 💡 **提示**:首次申请建议**跳过PII角色**,通过后再修改资料追加,可缩短审核时间。
> 更多细则参考:[SP-API官方文档](https://developer-docs.amazon.com/sp-api)。

View File

@ -0,0 +1,45 @@
# Amazon应用开发指南
## 成为开发者
### 开发者类型与适用场景
| **类型** | **适用对象** | **审核要求** | **数据访问范围** |
|-----------|--------------|-----------|------------------|
| **私有开发者** | 仅服务单个卖家账户 | 宽松 | 仅限自身账户数据 |
| **公共开发者** | 开发多卖家使用的公共应用 | 严格安全与合规审核 | 需受限角色PII获取敏感数据 |
> ⚠️ **敏感数据限制**买家地址、电话等PII数据需申请**受限角色**,且禁止存储在国内服务器。
### 开发者注册
- 注册链接https://developer.amazonservices.com/register#register
- 点击Create Solution Provider Account
- ![](https://picture.texous.cn/blog/20250716173546178.png)
- 点击创建您的亚马逊账户
- ![](https://picture.texous.cn/blog/20250716173614502.png)
- ![](https://picture.texous.cn/blog/20250716173635493.png)
- 输入您的姓名,邮箱地址,和密码
- 注册解决方案体工商账户
- ![](https://picture.texous.cn/blog/20250716181547320.png)
- ![](https://picture.texous.cn/blog/20250716181727364.png)
- 设置解决方案类型
- ![](https://picture.texous.cn/blog/20250716181849061.png)
### 身份验证
- 进入SPP
- ![](https://picture.texous.cn/blog/20250716173846797.png)
- 点击验证身份/开始使用
- ![](https://picture.texous.cn/blog/20250716182210031.png)
- 点击下一页
- ![](https://picture.texous.cn/blog/20250716182842274.png)
- 点击下一步
- 填写对应的企业信息
- ![](https://picture.texous.cn/blog/20250716174006695.png)
### 设置解决方案提供商账户资料和权限
## 注意事项
> 💡 **提示**:首次申请建议**跳过PII角色**,通过后再修改资料追加,可缩短审核时间。
> 更多细则参考:[SP-API官方文档](https://developer-docs.amazon.com/sp-api)。

View File

@ -9,3 +9,4 @@
> wifi: `yuanmeng`, 密码: `YmQf1223` > wifi: `yuanmeng`, 密码: `YmQf1223`
> wifi: `RC-soft5`, 密码: `YmQf1223`打卡需要连该WiFi > wifi: `RC-soft5`, 密码: `YmQf1223`打卡需要连该WiFi
> wifi: `RC-SOFT5`, 密码: `YmQf1223`打卡需要连该WiFi > wifi: `RC-SOFT5`, 密码: `YmQf1223`打卡需要连该WiFi

View File

@ -37,3 +37,7 @@ https://admin.17track.net/api/settings
账号zhangxinxin@keyfil.com 账号zhangxinxin@keyfil.com
密码00uBYf31 密码00uBYf31
密钥AB905010AF804EE4CA84009BBBB4A4EC 密钥AB905010AF804EE4CA84009BBBB4A4EC
### 公司信息
- ![](https://picture.texous.cn/blog/20250717153234705.png)

View File

@ -0,0 +1,488 @@
{
"type": "excalidraw",
"version": 2,
"source": "https://excalidraw-jetbrains-plugin",
"elements": [
{
"id": "15tAokYMg_sVZSWxBYEk0",
"type": "rectangle",
"x": 514,
"y": 272,
"width": 199.99999999999997,
"height": 119.99999999999999,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 3
},
"seed": 744495866,
"version": 85,
"versionNonce": 936349690,
"isDeleted": false,
"boundElements": [
{
"type": "text",
"id": "5t6KGJPiblXU2dL-seqN5"
},
{
"id": "podkqgoM7w-0UAV2xwFCB",
"type": "arrow"
},
{
"id": "ugBb8kdwPFv_iMZNyxxJi",
"type": "arrow"
}
],
"updated": 1752720499194,
"link": null,
"locked": false
},
{
"id": "5t6KGJPiblXU2dL-seqN5",
"type": "text",
"x": 574,
"y": 319.5,
"width": 80,
"height": 25,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 1043175930,
"version": 95,
"versionNonce": 1419236774,
"isDeleted": false,
"boundElements": null,
"updated": 1752720474403,
"link": null,
"locked": false,
"text": "业务授权",
"fontSize": 20,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 18,
"containerId": "15tAokYMg_sVZSWxBYEk0",
"originalText": "业务授权",
"lineHeight": 1.25
},
{
"id": "lt4H43spCJYzXBq-mPMVE",
"type": "ellipse",
"x": 891,
"y": 231,
"width": 240.9999999999999,
"height": 202,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"seed": 134617830,
"version": 77,
"versionNonce": 1227843194,
"isDeleted": false,
"boundElements": [
{
"id": "podkqgoM7w-0UAV2xwFCB",
"type": "arrow"
},
{
"id": "ugBb8kdwPFv_iMZNyxxJi",
"type": "arrow"
}
],
"updated": 1752720499194,
"link": null,
"locked": false
},
{
"id": "58d7tEYW5U-cakd_L36tr",
"type": "text",
"x": 957,
"y": 261,
"width": 120,
"height": 25,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 433459194,
"version": 118,
"versionNonce": 516033978,
"isDeleted": false,
"boundElements": null,
"updated": 1752720430136,
"link": null,
"locked": false,
"text": "三方授权中心",
"fontSize": 20,
"fontFamily": 1,
"textAlign": "left",
"verticalAlign": "top",
"baseline": 18,
"containerId": null,
"originalText": "三方授权中心",
"lineHeight": 1.25
},
{
"id": "YPQScdt1QM1B2TKg-cd01",
"type": "ellipse",
"x": 913,
"y": 309,
"width": 85,
"height": 85,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"seed": 859633190,
"version": 53,
"versionNonce": 1211681638,
"isDeleted": false,
"boundElements": [
{
"type": "text",
"id": "hf_F6m-HhQMHw_BWuXaGh"
}
],
"updated": 1752720449636,
"link": null,
"locked": false
},
{
"id": "hf_F6m-HhQMHw_BWuXaGh",
"type": "text",
"x": 935.4479617995718,
"y": 338.9479617995717,
"width": 40,
"height": 25,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 463143078,
"version": 17,
"versionNonce": 1393979046,
"isDeleted": false,
"boundElements": null,
"updated": 1752720449636,
"link": null,
"locked": false,
"text": "界面",
"fontSize": 20,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 18,
"containerId": "YPQScdt1QM1B2TKg-cd01",
"originalText": "界面",
"lineHeight": 1.25
},
{
"id": "_uAySmrdr66S2aFPgQ_yq",
"type": "ellipse",
"x": 1022,
"y": 309,
"width": 85,
"height": 85,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"seed": 968787686,
"version": 84,
"versionNonce": 1471342266,
"isDeleted": false,
"boundElements": [
{
"type": "text",
"id": "CQlxLdKsgHWeAHZ8oVkq1"
}
],
"updated": 1752720461038,
"link": null,
"locked": false
},
{
"id": "CQlxLdKsgHWeAHZ8oVkq1",
"type": "text",
"x": 1044.4479617995717,
"y": 338.9479617995717,
"width": 40,
"height": 25,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 746472058,
"version": 52,
"versionNonce": 934612154,
"isDeleted": false,
"boundElements": null,
"updated": 1752720464269,
"link": null,
"locked": false,
"text": "服务",
"fontSize": 20,
"fontFamily": 1,
"textAlign": "center",
"verticalAlign": "middle",
"baseline": 18,
"containerId": "_uAySmrdr66S2aFPgQ_yq",
"originalText": "服务",
"lineHeight": 1.25
},
{
"id": "podkqgoM7w-0UAV2xwFCB",
"type": "arrow",
"x": 726,
"y": 287,
"width": 177,
"height": 31,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"seed": 923416698,
"version": 61,
"versionNonce": 1406627770,
"isDeleted": false,
"boundElements": null,
"updated": 1752720487901,
"link": null,
"locked": false,
"points": [
[
0,
0
],
[
90,
-31
],
[
177,
-1
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "15tAokYMg_sVZSWxBYEk0",
"focus": -0.06799999999999999,
"gap": 12
},
"endBinding": {
"elementId": "lt4H43spCJYzXBq-mPMVE",
"focus": 0.07861869002320906,
"gap": 1.046204497810578
},
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"id": "ugBb8kdwPFv_iMZNyxxJi",
"type": "arrow",
"x": 906,
"y": 395,
"width": 192,
"height": 30,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": {
"type": 2
},
"seed": 1178530854,
"version": 93,
"versionNonce": 1547253690,
"isDeleted": false,
"boundElements": null,
"updated": 1752720506867,
"link": null,
"locked": false,
"points": [
[
0,
0
],
[
-82,
30
],
[
-192,
1
]
],
"lastCommittedPoint": null,
"startBinding": {
"elementId": "lt4H43spCJYzXBq-mPMVE",
"focus": -0.22143336931568755,
"gap": 8.463260597449704
},
"endBinding": {
"elementId": "15tAokYMg_sVZSWxBYEk0",
"focus": 0.43578947368421056,
"gap": 4
},
"startArrowhead": null,
"endArrowhead": "arrow"
},
{
"id": "mOY-0a7X4f_bInVmtooTD",
"type": "text",
"x": 727,
"y": 225.5,
"width": 160,
"height": 20,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 419828026,
"version": 112,
"versionNonce": 571840105,
"isDeleted": false,
"boundElements": null,
"updated": 1752720595801,
"link": null,
"locked": false,
"text": "发起授权(携带参数)",
"fontSize": 16,
"fontFamily": 1,
"textAlign": "left",
"verticalAlign": "top",
"baseline": 14,
"containerId": null,
"originalText": "发起授权(携带参数)",
"lineHeight": 1.25
},
{
"id": "hFURTdjw-KuuXR_1fVIdc",
"type": "text",
"x": 732,
"y": 440.5,
"width": 160,
"height": 20,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"frameId": null,
"roundness": null,
"seed": 174127799,
"version": 173,
"versionNonce": 269737673,
"isDeleted": false,
"boundElements": null,
"updated": 1752720608768,
"link": null,
"locked": false,
"text": "结果返回(携带参数)",
"fontSize": 16,
"fontFamily": 1,
"textAlign": "left",
"verticalAlign": "top",
"baseline": 14,
"containerId": null,
"originalText": "结果返回(携带参数)",
"lineHeight": 1.25
}
],
"appState": {
"gridSize": null,
"viewBackgroundColor": "#ffffff"
},
"files": {}
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1px"
height="1px" viewBox="-0.5 -0.5 1 1"
content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-04-15T16:58:14.004Z&quot; agent=&quot;5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36&quot; etag=&quot;9hHl-fft3fX4wfAVMn7f&quot; version=&quot;14.6.0&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;23iRSUPoRavnBvh4doch&quot; name=&quot;Page-1&quot;&gt;dZHBEoIgEIafhjtCZZ3N6tLJQ2dGNmEGXQdptJ4+HTBjrJk97H77Lz8shGf1cLaiVVeUYAijciD8SBhLNoyRKah8epLSrQeV1TKIFlDoFwRIA31oCV0kdIjG6TaGJTYNlC5iwlrsY9kdTezaigpWoCiFWdOblk55umfpwi+gKzU7J7uD79RiFoeXdEpI7L8QzwnPLKLzWT1kYKblzXvxc6c/3c/FLDTux8CYLGePRfRDPH8D&lt;/diagram&gt;&lt;/mxfile&gt;">
<defs/>
<g/>
</svg>

After

Width:  |  Height:  |  Size: 988 B

View File

@ -0,0 +1,97 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2">
<diagram name="Page-1" id="2YBvvXClWsGukQMizWep">
<mxGraphModel dx="868" dy="576" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="aM9ryv3xv72pqoxQDRHE-1" value="业务线" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1">
<mxGeometry x="60" y="40" width="100" height="440" as="geometry" />
</mxCell>
<mxCell id="aM9ryv3xv72pqoxQDRHE-2" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="aM9ryv3xv72pqoxQDRHE-1" vertex="1">
<mxGeometry x="45" y="70" width="10" height="310" as="geometry" />
</mxCell>
<mxCell id="aM9ryv3xv72pqoxQDRHE-3" value="请求授权" style="html=1;verticalAlign=bottom;startArrow=oval;endArrow=block;startSize=8;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" parent="aM9ryv3xv72pqoxQDRHE-1" target="aM9ryv3xv72pqoxQDRHE-2" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="-15" y="70" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="aM9ryv3xv72pqoxQDRHE-5" value="认证中心前端" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="1" vertex="1">
<mxGeometry x="280" y="40" width="100" height="440" as="geometry" />
</mxCell>
<mxCell id="aM9ryv3xv72pqoxQDRHE-6" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" parent="aM9ryv3xv72pqoxQDRHE-5" vertex="1">
<mxGeometry x="45" y="80" width="10" height="280" as="geometry" />
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-5" value="" style="html=1;points=[[0,0,0,0,5],[0,1,0,0,-5],[1,0,0,0,5],[1,1,0,0,-5]];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};" vertex="1" parent="aM9ryv3xv72pqoxQDRHE-5">
<mxGeometry x="50" y="170" width="10" height="40" as="geometry" />
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-6" value="&lt;font style=&quot;font-size: 9px;&quot;&gt;跳转授权&lt;/font&gt;" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" target="mIc7CyHy_PGnAQ7WKizZ-5" parent="aM9ryv3xv72pqoxQDRHE-5">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="150" as="sourcePoint" />
<Array as="points">
<mxPoint x="85" y="180" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="aM9ryv3xv72pqoxQDRHE-7" value="&lt;font style=&quot;font-size: 9px;&quot;&gt;重定向(&lt;/font&gt;&lt;span style=&quot;font-size: 9px;&quot;&gt;携带授权参数)&lt;/span&gt;" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" parent="1" source="aM9ryv3xv72pqoxQDRHE-2" target="aM9ryv3xv72pqoxQDRHE-6" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="195" y="130" as="sourcePoint" />
<Array as="points">
<mxPoint x="180" y="120" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="aM9ryv3xv72pqoxQDRHE-8" value="&lt;font style=&quot;font-size: 9px;&quot;&gt;重定向(携带授权参数和结果)&lt;/font&gt;" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="115" y="396" as="targetPoint" />
<Array as="points">
<mxPoint x="190" y="396" />
</Array>
<mxPoint x="325" y="396" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-1" value="认证中心后端" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" vertex="1" parent="1">
<mxGeometry x="500" y="40" width="100" height="440" as="geometry" />
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-2" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};" vertex="1" parent="mIc7CyHy_PGnAQ7WKizZ-1">
<mxGeometry x="45" y="100" width="10" height="50" as="geometry" />
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-7" value="" style="html=1;points=[[0,0,0,0,5],[0,1,0,0,-5],[1,0,0,0,5],[1,1,0,0,-5]];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};" vertex="1" parent="mIc7CyHy_PGnAQ7WKizZ-1">
<mxGeometry x="45" y="223" width="10" height="107" as="geometry" />
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-10" value="" style="html=1;points=[[0,0,0,0,5],[0,1,0,0,-5],[1,0,0,0,5],[1,1,0,0,-5]];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};" vertex="1" parent="mIc7CyHy_PGnAQ7WKizZ-1">
<mxGeometry x="50" y="266.5" width="10" height="40" as="geometry" />
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-11" value="&lt;font style=&quot;font-size: 9px;&quot;&gt;授权获取Token&lt;/font&gt;" style="html=1;align=left;spacingLeft=2;endArrow=block;rounded=0;edgeStyle=orthogonalEdgeStyle;curved=0;rounded=0;" edge="1" target="mIc7CyHy_PGnAQ7WKizZ-10" parent="mIc7CyHy_PGnAQ7WKizZ-1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="55" y="246.5" as="sourcePoint" />
<Array as="points">
<mxPoint x="85" y="276.5" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-3" value="&lt;font style=&quot;font-size: 9px;&quot;&gt;获取授权链接(携带参数)&lt;/font&gt;" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;" edge="1" parent="1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="335" y="143" as="sourcePoint" />
<mxPoint x="545" y="143" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-4" value="&lt;font style=&quot;font-size: 9px;&quot;&gt;授权链接&lt;/font&gt;" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="545" y="173" as="sourcePoint" />
<mxPoint x="335" y="173" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-8" value="&lt;font style=&quot;font-size: 9px;&quot;&gt;授权回调携带codestate&lt;/font&gt;" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=5;" edge="1" target="mIc7CyHy_PGnAQ7WKizZ-7" parent="1" source="aM9ryv3xv72pqoxQDRHE-6">
<mxGeometry relative="1" as="geometry">
<mxPoint x="475" y="268" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="mIc7CyHy_PGnAQ7WKizZ-9" value="&lt;font style=&quot;font-size: 9px;&quot;&gt;返回授权结果和授权参数&lt;/font&gt;" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;exitX=0;exitY=1;exitDx=0;exitDy=-5;" edge="1" source="mIc7CyHy_PGnAQ7WKizZ-7" parent="1" target="aM9ryv3xv72pqoxQDRHE-6">
<mxGeometry relative="1" as="geometry">
<mxPoint x="475" y="338" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -24,3 +24,13 @@ C:/Programs/Developer/ktctl_0.3.7/ktctl.exe clean --namespace qifu-develop --kub
- --dryRun 只打印要删除的Kubernetes资源名称不删除资源 - --dryRun 只打印要删除的Kubernetes资源名称不删除资源
- --thresholdInMinus value 清理至少已失联超过多长时间的Kubernetes资源 (单位分钟默认值15) - --thresholdInMinus value 清理至少已失联超过多长时间的Kubernetes资源 (单位分钟默认值15)
- --localOnly 仅清理本地日志和还原本地路由/DNS配置 - --localOnly 仅清理本地日志和还原本地路由/DNS配置
----
### 低代码平台
#### 前端启动
```shell
#- 在 jeecgboot-vue3 目录下执行
fnm exec --using=20.14.0 C:\Programs\Developer\nodejs20\pnpm.cmd run dev
```

View File

@ -0,0 +1,303 @@
# 业务服务监控大盘规划方案
基于 SkyWalking 和 KubeSphere 的监控能力,我建议规划以下四个核心监控大盘,形成完整的业务服务监控体系:
```mermaid
graph TD
A[业务服务监控体系] --> B[全局业务健康大盘]
A --> C[微服务性能大盘]
A --> D[交易链路追踪大盘]
A --> E[基础设施资源大盘]
```
## 1. 全局业务健康大盘Global Business Health Dashboard
### 定位与目标
- **面向角色**:业务决策者、产品经理、技术负责人
- **核心价值**:实时掌握业务整体健康状态,快速识别业务异常
- **刷新频率**实时5秒级
### 核心内容
```mermaid
graph LR
A[业务健康度] --> B[核心指标]
A --> C[地域分布]
A --> D[异常告警]
B --> B1[总交易量]
B --> B2[交易成功率]
B --> B3[平均响应时间]
B --> B4[活跃用户数]
C --> C1[区域交易热力图]
C --> C2[城市响应延迟TOP10]
D --> D1[当前P0告警]
D --> D2[告警趋势]
```
**具体指标**
1. 业务健康度评分(综合计算)
2. 实时交易量/分钟(按业务线分类)
3. 交易成功率(成功/失败比例)
4. 关键服务SLA达标率99.9%基准线)
5. 用户地域分布热力图
6. 异常交易实时流最近10笔失败交易
7. 核心服务黄金指标RED
- 请求率(Requests)
- 错误率(Errors)
- 延迟(Duration)
**数据来源**
- SkyWalking业务指标、SLA数据
- 业务数据库:交易量、成功率
- KubeSphere服务可用性状态
## 2. 微服务性能大盘Microservices Performance Dashboard
### 定位与目标
- **面向角色**SRE、开发团队、架构师
- **核心价值**:深度洞察微服务性能瓶颈,优化服务架构
- **刷新频率**准实时15秒级
### 核心内容
```mermaid
graph TB
A[服务拓扑] --> B[服务依赖关系]
A --> C[关键路径标注]
D[性能指标] --> E[JVM监控]
D --> F[数据库性能]
D --> G[缓存效率]
H[资源效率] --> I[CPU/MEM使用]
H --> J[网络IO]
H --> K[线程池状态]
```
**具体指标**
1. 微服务拓扑图(动态展示服务间调用关系)
2. 服务性能TOP10排名按响应时间、错误率
3. JVM深度监控
- GC次数/耗时
- 堆内存使用
- 线程状态分布
4. 数据库访问性能:
- 慢SQL统计
- 连接池使用率
- 事务耗时分布
5. 缓存效率分析:
- 缓存命中率
- Redis命令延迟
- 缓存穿透/击穿告警
6. 消息队列监控:
- 积压消息量
- 消费延迟
- 死信队列
**数据来源**
- SkyWalking服务拓扑、JVM指标、SQL分析
- KubeSphere Prometheus容器资源指标
- Redis/MQ导出器缓存和消息队列指标
## 3. 交易链路追踪大盘Transaction Tracing Dashboard
### 定位与目标
- **面向角色**:开发人员、测试工程师、技术支持
- **核心价值**:端到端追踪业务请求,快速定位故障点
- **刷新频率**:按需查询
### 核心内容
```mermaid
graph LR
A[链路查询] --> B[条件筛选]
A --> C[TraceID搜索]
D[链路分析] --> E[耗时分解]
D --> F[异常标记]
D --> G[日志关联]
H[统计洞察] --> I[慢请求分析]
H --> J[错误类型分布]
```
**具体功能**
1. 交易链路查询:
- 按TraceID搜索
- 按服务/接口/状态码筛选
2. 全链路可视化:
- 请求完整路径展示
- 各阶段耗时分解
- 异常节点高亮标记
3. 深度分析:
- 耗时分布直方图
- 错误类型统计
- 关联日志查看
4. 对比分析:
- 成功 vs 失败请求路径对比
- 不同版本性能对比
5. 智能洞察:
- 自动识别瓶颈服务
- 异常模式推荐
**数据来源**
- SkyWalking全链路追踪数据
- ELK/Loki关联日志
- KubeSphere服务版本信息
## 4. 基础设施资源大盘Infrastructure Resource Dashboard
### 定位与目标
- **面向角色**:运维团队、基础设施工程师
- **核心价值**:全面掌握底层资源状态,保障服务运行基础
- **刷新频率**实时10秒级
### 核心内容
```mermaid
graph TB
A[集群概览] --> B[节点状态]
A --> C[资源水位]
D[节点详情] --> E[CPU/MEM/DISK]
D --> F[网络流量]
D --> G[进程资源]
H[存储分析] --> I[PV/PVC使用]
H --> J[IO性能]
K[中间件健康] --> L[数据库]
K --> M[缓存]
K --> N[消息队列]
```
**具体指标**
1. 集群全局视图:
- 节点健康状态(就绪/异常)
- 整体资源使用率CPU/内存/存储)
2. 节点级监控:
- 物理资源使用CPU、内存、磁盘、网络
- 关键进程资源占用
- 温度/风扇状态(如有)
3. 存储分析:
- PV/PVC容量监控
- 读写IOPS和吞吐量
- 存储类分布
4. 网络性能:
- 入口/出口流量
- 网络错误率
- 连接数统计
5. 中间件健康:
- 数据库连接池
- Redis内存/延迟
- Kafka分区/ISR状态
6. 自动伸缩:
- HPA/VPA操作记录
- 资源预测分析
**数据来源**
- KubeSphere集群、节点、存储指标
- Node Exporter物理节点指标
- 中间件导出器数据库、缓存、MQ指标
## 大盘关联与联动设计
```mermaid
sequenceDiagram
participant User
participant Global_Dashboard
participant Microservices_Dashboard
participant Tracing_Dashboard
participant Infra_Dashboard
User->>Global_Dashboard: 发现异常业务指标
Global_Dashboard->>Microservices_Dashboard: 钻取到具体服务
Microservices_Dashboard->>Tracing_Dashboard: 分析问题链路
Tracing_Dashboard->>Infra_Dashboard: 检查底层资源
Infra_Dashboard-->>User: 定位根本原因
```
## 实施计划8周
| 周次 | 工作内容 | 交付物 |
|------|----------|--------|
| 1-2 | 数据源对接与验证<br>• SkyWalking API集成<br>• KubeSphere监控接口调试 | 数据源对接文档<br>指标映射表 |
| 3-4 | 全局业务健康大盘开发<br>• 核心业务指标可视化<br>• 健康度评分模型 | 业务健康大盘V1<br>评分模型文档 |
| 5-6 | 微服务性能大盘开发<br>• 服务拓扑集成<br>• JVM/DB深度监控 | 微服务性能大盘<br>性能基线报告 |
| 7 | 交易链路追踪大盘开发<br>• 全链路可视化<br>• 智能分析功能 | 链路追踪大盘<br>分析用例文档 |
| 8 | 基础设施资源大盘开发<br>• 资源水位监控<br>• 中间件健康检查 | 资源大盘<br>压测报告 |
## 技术实现要点
1. **统一数据网关**
```python
# 数据聚合网关示例
from flask import Flask, jsonify
import requests
app = Flask(__name__)
@app.route('/api/metrics/business')
def business_metrics():
# 从SkyWalking获取业务指标
sw_data = requests.get("http://skywalking-oap:12800/metrics")
# 从KubeSphere获取服务状态
ks_data = requests.get("http://kubesphere-api/api/monitoring")
return jsonify({**sw_data.json(), **ks_data.json()})
```
2. **Grafana高级特性**
```json
{
"dashboard": {
"title": "业务健康大盘",
"panels": [
{
"type": "graph",
"title": "交易成功率",
"datasource": "Unified-Gateway",
"transformations": [
{
"id": "reduce",
"options": {
"reducers": ["last"]
}
}
]
}
]
}
}
```
3. **智能告警联动**
```yaml
# 告警联动规则
groups:
- name: business-alert
rules:
- alert: PaymentFailure
expr: payment_success_rate < 95
annotations:
dashboard: "/d/global-business" # 跳转全局大盘
trace_query: "service:payment-service status:error" # 跳转链路追踪
```
## 预期成效
1. **故障定位时间缩短**
- 从小时级 → 分钟级
- 平均MTTR降低60%
2. **资源利用率提升**
- 识别低效服务,优化资源分配
- 预计资源成本降低20-30%
3. **业务决策支持**
- 实时业务指标可视化
- 产品迭代数据支持
4. **跨团队协作增强**
- 统一监控语言
- 问题协同处理效率提升50%
通过这四个监控大盘的建设,将形成从业务指标到基础设施的完整监控链条,实现对业务服务的全方位可视化管理。