md2ui 1.0.19 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -20
- package/bin/build.js +13 -2
- package/bin/md2ui.js +25 -12
- package/package.json +2 -2
- package/public/docs/02-Markdown/346/270/262/346/237/223/00-/345/237/272/347/241/200/350/257/255/346/263/225.md +2 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/06-Mermaid/345/244/215/346/235/202/345/233/276/350/241/250/346/265/213/350/257/225.md +1376 -0
- package/public/docs/02-Markdown/346/270/262/346/237/223/assets/img-1777383093712.png +0 -0
- package/public/docs/03-/345/257/274/350/210/252/344/270/216/345/270/203/345/261/200/05-/345/244/247/347/272/262/345/216/213/345/212/233/346/265/213/350/257/225.md +340 -0
- package/public/docs/07-/347/247/273/345/212/250/347/253/257/351/200/202/351/205/215/00-/345/223/215/345/272/224/345/274/217/345/270/203/345/261/200.md +4 -4
- package/src/App.vue +36 -61
- package/src/components/ImageZoom.vue +9 -123
- package/src/components/MermaidNodeView.vue +10 -2
- package/src/components/MobileSearch.vue +97 -0
- package/src/components/TableOfContents.vue +42 -6
- package/src/composables/useDocManager.js +134 -44
- package/src/composables/useDocTree.js +26 -50
- package/src/composables/useMarkdown.js +51 -140
- package/src/composables/useMermaidCache.js +15 -0
- package/src/composables/useScroll.js +317 -32
- package/src/composables/useSearch.js +12 -11
- package/src/config.js +1 -4
- package/src/services/DocService.js +0 -16
- package/src/style.css +235 -10
- package/src/utils/imageConverter.js +129 -0
- package/vite-plugin-doc-api.js +158 -157
- package/vite.config.js +5 -1
- package/src/components/SearchPanel.vue +0 -90
- package/src/components/TableBubbleMenu.vue +0 -177
- package/src/composables/useExportPdf.js +0 -102
|
@@ -0,0 +1,1376 @@
|
|
|
1
|
+
# Mermaid 超复杂图表压力测试
|
|
2
|
+
|
|
3
|
+
本文档用于测试 Mermaid 在极端复杂场景下的渲染能力,包含大规模节点、深层嵌套、复杂交互关系等场景。
|
|
4
|
+
|
|
5
|
+
\## 1. 大规模微服务架构流程图
|
|
6
|
+
|
|
7
|
+
模拟一个包含 30+ 节点的电商微服务架构全链路调用关系。
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
graph TB
|
|
11
|
+
subgraph 客户端层
|
|
12
|
+
WEB[Web 前端]
|
|
13
|
+
APP[移动 App]
|
|
14
|
+
H5[H5 页面]
|
|
15
|
+
MINI[小程序]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
subgraph 网关层
|
|
19
|
+
NGINX[Nginx 负载均衡]
|
|
20
|
+
GW[API Gateway]
|
|
21
|
+
AUTH[鉴权中心]
|
|
22
|
+
LIMIT[限流熔断]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
subgraph 业务服务层
|
|
26
|
+
subgraph 用户域
|
|
27
|
+
USER_SVC[用户服务]
|
|
28
|
+
MEMBER_SVC[会员服务]
|
|
29
|
+
ADDR_SVC[地址服务]
|
|
30
|
+
end
|
|
31
|
+
subgraph 商品域
|
|
32
|
+
PRODUCT_SVC[商品服务]
|
|
33
|
+
SKU_SVC[SKU 服务]
|
|
34
|
+
CATEGORY_SVC[分类服务]
|
|
35
|
+
BRAND_SVC[品牌服务]
|
|
36
|
+
REVIEW_SVC[评价服务]
|
|
37
|
+
end
|
|
38
|
+
subgraph 交易域
|
|
39
|
+
ORDER_SVC[订单服务]
|
|
40
|
+
CART_SVC[购物车服务]
|
|
41
|
+
PAY_SVC[支付服务]
|
|
42
|
+
REFUND_SVC[退款服务]
|
|
43
|
+
COUPON_SVC[优惠券服务]
|
|
44
|
+
PROMO_SVC[促销服务]
|
|
45
|
+
end
|
|
46
|
+
subgraph 物流域
|
|
47
|
+
LOGISTICS_SVC[物流服务]
|
|
48
|
+
WAREHOUSE_SVC[仓储服务]
|
|
49
|
+
DELIVERY_SVC[配送服务]
|
|
50
|
+
end
|
|
51
|
+
subgraph 消息域
|
|
52
|
+
NOTIFY_SVC[通知服务]
|
|
53
|
+
SMS_SVC[短信服务]
|
|
54
|
+
PUSH_SVC[推送服务]
|
|
55
|
+
EMAIL_SVC[邮件服务]
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
subgraph 中间件层
|
|
60
|
+
REDIS[(Redis 集群)]
|
|
61
|
+
MQ[RocketMQ]
|
|
62
|
+
ES[(Elasticsearch)]
|
|
63
|
+
NACOS[Nacos 注册中心]
|
|
64
|
+
SENTINEL[Sentinel 控制台]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
subgraph 数据层
|
|
68
|
+
MYSQL_MASTER[(MySQL 主库)]
|
|
69
|
+
MYSQL_SLAVE[(MySQL 从库)]
|
|
70
|
+
MONGO[(MongoDB)]
|
|
71
|
+
OSS[对象存储 OSS]
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
WEB & APP & H5 & MINI --> NGINX
|
|
75
|
+
NGINX --> GW
|
|
76
|
+
GW --> AUTH
|
|
77
|
+
GW --> LIMIT
|
|
78
|
+
AUTH --> USER_SVC
|
|
79
|
+
LIMIT --> SENTINEL
|
|
80
|
+
|
|
81
|
+
GW --> USER_SVC & PRODUCT_SVC & ORDER_SVC & CART_SVC & LOGISTICS_SVC
|
|
82
|
+
USER_SVC --> MEMBER_SVC & ADDR_SVC
|
|
83
|
+
PRODUCT_SVC --> SKU_SVC & CATEGORY_SVC & BRAND_SVC & REVIEW_SVC
|
|
84
|
+
ORDER_SVC --> PAY_SVC & REFUND_SVC & COUPON_SVC & PROMO_SVC
|
|
85
|
+
ORDER_SVC --> LOGISTICS_SVC
|
|
86
|
+
LOGISTICS_SVC --> WAREHOUSE_SVC & DELIVERY_SVC
|
|
87
|
+
NOTIFY_SVC --> SMS_SVC & PUSH_SVC & EMAIL_SVC
|
|
88
|
+
|
|
89
|
+
ORDER_SVC --> MQ
|
|
90
|
+
PAY_SVC --> MQ
|
|
91
|
+
MQ --> NOTIFY_SVC
|
|
92
|
+
MQ --> LOGISTICS_SVC
|
|
93
|
+
|
|
94
|
+
USER_SVC & ORDER_SVC & PAY_SVC --> MYSQL_MASTER
|
|
95
|
+
MYSQL_MASTER --> MYSQL_SLAVE
|
|
96
|
+
PRODUCT_SVC & REVIEW_SVC --> MONGO
|
|
97
|
+
PRODUCT_SVC --> ES
|
|
98
|
+
USER_SVC & PRODUCT_SVC & ORDER_SVC --> REDIS
|
|
99
|
+
REVIEW_SVC & PRODUCT_SVC --> OSS
|
|
100
|
+
|
|
101
|
+
USER_SVC & PRODUCT_SVC & ORDER_SVC & LOGISTICS_SVC --> NACOS
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 2. 超长序列图 - 电商下单全链路
|
|
105
|
+
|
|
106
|
+
模拟从用户点击下单到收货完成的完整时序交互,涉及 12 个参与者。
|
|
107
|
+
|
|
108
|
+
```mermaid
|
|
109
|
+
sequenceDiagram
|
|
110
|
+
actor 用户
|
|
111
|
+
participant 前端
|
|
112
|
+
participant 网关
|
|
113
|
+
participant 购物车
|
|
114
|
+
participant 订单服务
|
|
115
|
+
participant 库存服务
|
|
116
|
+
participant 优惠券
|
|
117
|
+
participant 支付服务
|
|
118
|
+
participant 第三方支付
|
|
119
|
+
participant 消息队列
|
|
120
|
+
participant 物流服务
|
|
121
|
+
participant 通知服务
|
|
122
|
+
|
|
123
|
+
用户->>前端: 点击结算
|
|
124
|
+
前端->>网关: POST /api/order/confirm
|
|
125
|
+
网关->>网关: JWT 鉴权校验
|
|
126
|
+
网关->>购物车: 获取选中商品
|
|
127
|
+
购物车-->>网关: 返回商品列表
|
|
128
|
+
|
|
129
|
+
网关->>订单服务: 创建预订单
|
|
130
|
+
activate 订单服务
|
|
131
|
+
|
|
132
|
+
订单服务->>库存服务: 预扣库存
|
|
133
|
+
activate 库存服务
|
|
134
|
+
库存服务->>库存服务: 检查库存充足性
|
|
135
|
+
alt 库存不足
|
|
136
|
+
库存服务-->>订单服务: 库存不足异常
|
|
137
|
+
订单服务-->>前端: 提示库存不足
|
|
138
|
+
前端-->>用户: 显示库存不足弹窗
|
|
139
|
+
else 库存充足
|
|
140
|
+
库存服务-->>订单服务: 预扣成功,返回锁定ID
|
|
141
|
+
end
|
|
142
|
+
deactivate 库存服务
|
|
143
|
+
|
|
144
|
+
订单服务->>优惠券: 核销优惠券
|
|
145
|
+
activate 优惠券
|
|
146
|
+
优惠券->>优惠券: 校验有效期和使用条件
|
|
147
|
+
alt 优惠券无效
|
|
148
|
+
优惠券-->>订单服务: 优惠券不可用
|
|
149
|
+
订单服务->>库存服务: 回滚预扣库存
|
|
150
|
+
订单服务-->>前端: 提示优惠券失效
|
|
151
|
+
else 优惠券有效
|
|
152
|
+
优惠券-->>订单服务: 核销成功,返回折扣金额
|
|
153
|
+
end
|
|
154
|
+
deactivate 优惠券
|
|
155
|
+
|
|
156
|
+
订单服务->>订单服务: 计算最终金额(商品价+运费-优惠)
|
|
157
|
+
订单服务-->>前端: 返回订单确认信息
|
|
158
|
+
deactivate 订单服务
|
|
159
|
+
|
|
160
|
+
前端-->>用户: 展示订单确认页
|
|
161
|
+
用户->>前端: 确认支付
|
|
162
|
+
前端->>网关: POST /api/pay/create
|
|
163
|
+
|
|
164
|
+
网关->>支付服务: 创建支付单
|
|
165
|
+
activate 支付服务
|
|
166
|
+
支付服务->>第三方支付: 调用支付接口
|
|
167
|
+
activate 第三方支付
|
|
168
|
+
第三方支付-->>支付服务: 返回支付链接/二维码
|
|
169
|
+
deactivate 第三方支付
|
|
170
|
+
支付服务-->>前端: 返回支付参数
|
|
171
|
+
deactivate 支付服务
|
|
172
|
+
|
|
173
|
+
前端-->>用户: 唤起支付(微信/支付宝)
|
|
174
|
+
用户->>第三方支付: 完成支付
|
|
175
|
+
第三方支付->>支付服务: 异步回调通知
|
|
176
|
+
activate 支付服务
|
|
177
|
+
支付服务->>支付服务: 验签 + 幂等校验
|
|
178
|
+
支付服务->>订单服务: 更新订单状态为已支付
|
|
179
|
+
支付服务->>消息队列: 发送支付成功事件
|
|
180
|
+
deactivate 支付服务
|
|
181
|
+
|
|
182
|
+
消息队列->>库存服务: 确认扣减库存
|
|
183
|
+
消息队列->>物流服务: 触发发货流程
|
|
184
|
+
activate 物流服务
|
|
185
|
+
物流服务->>物流服务: 分配仓库 + 生成运单
|
|
186
|
+
物流服务->>通知服务: 发送发货通知
|
|
187
|
+
deactivate 物流服务
|
|
188
|
+
|
|
189
|
+
通知服务->>用户: 短信/推送:您的订单已发货
|
|
190
|
+
|
|
191
|
+
Note over 用户,通知服务: === 等待物流配送中 ===
|
|
192
|
+
|
|
193
|
+
物流服务->>通知服务: 签收回调
|
|
194
|
+
通知服务->>用户: 推送:您的包裹已签收
|
|
195
|
+
用户->>前端: 确认收货
|
|
196
|
+
前端->>订单服务: 更新订单为已完成
|
|
197
|
+
订单服务->>消息队列: 发送订单完成事件
|
|
198
|
+
消息队列->>通知服务: 触发评价邀请
|
|
199
|
+
通知服务->>用户: 推送:请对本次购物进行评价
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## 3. 复杂状态机 - 订单生命周期
|
|
203
|
+
|
|
204
|
+
包含多层嵌套状态、并行状态和历史状态的完整订单状态机。
|
|
205
|
+
|
|
206
|
+
```mermaid
|
|
207
|
+
stateDiagram-v2
|
|
208
|
+
[*] --> 待提交
|
|
209
|
+
|
|
210
|
+
待提交 --> 待支付: 提交订单
|
|
211
|
+
待提交 --> 已取消: 用户取消
|
|
212
|
+
|
|
213
|
+
state 待支付 {
|
|
214
|
+
[*] --> 等待用户操作
|
|
215
|
+
等待用户操作 --> 支付处理中: 发起支付
|
|
216
|
+
支付处理中 --> 支付验证: 第三方回调
|
|
217
|
+
支付验证 --> 等待用户操作: 验证失败(可重试)
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
待支付 --> 已支付: 支付成功
|
|
221
|
+
待支付 --> 已取消: 超时未支付(30分钟)
|
|
222
|
+
待支付 --> 已取消: 用户主动取消
|
|
223
|
+
|
|
224
|
+
state 已支付 {
|
|
225
|
+
[*] --> 待审核
|
|
226
|
+
待审核 --> 风控审核中: 触发风控规则
|
|
227
|
+
待审核 --> 待发货: 审核通过
|
|
228
|
+
风控审核中 --> 待发货: 风控通过
|
|
229
|
+
风控审核中 --> 审核拒绝: 风控拦截
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
已支付 --> 待发货: 审核完成
|
|
233
|
+
|
|
234
|
+
state 待发货 {
|
|
235
|
+
[*] --> 仓库分配
|
|
236
|
+
仓库分配 --> 拣货中: 分配完成
|
|
237
|
+
拣货中 --> 打包中: 拣货完成
|
|
238
|
+
打包中 --> 已出库: 打包完成
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
待发货 --> 配送中: 物流揽收
|
|
242
|
+
|
|
243
|
+
state 配送中 {
|
|
244
|
+
[*] --> 运输中
|
|
245
|
+
运输中 --> 派送中: 到达目的城市
|
|
246
|
+
派送中 --> 待签收: 快递员派送
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
配送中 --> 已签收: 用户签收
|
|
250
|
+
配送中 --> 异常件: 物流异常
|
|
251
|
+
|
|
252
|
+
异常件 --> 配送中: 重新派送
|
|
253
|
+
异常件 --> 退回中: 无法送达
|
|
254
|
+
|
|
255
|
+
已签收 --> 已完成: 确认收货(或7天自动确认)
|
|
256
|
+
|
|
257
|
+
state 售后流程 {
|
|
258
|
+
[*] --> 售后申请中
|
|
259
|
+
售后申请中 --> 退款审核: 仅退款
|
|
260
|
+
售后申请中 --> 退货审核: 退货退款
|
|
261
|
+
退款审核 --> 退款中: 审核通过
|
|
262
|
+
退货审核 --> 待退货: 审核通过
|
|
263
|
+
待退货 --> 退货运输中: 用户寄回
|
|
264
|
+
退货运输中 --> 退货验收: 商家收货
|
|
265
|
+
退货验收 --> 退款中: 验收通过
|
|
266
|
+
退货验收 --> 退货拒绝: 验收不通过
|
|
267
|
+
退款中 --> 退款完成: 退款到账
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
已签收 --> 售后流程: 申请售后
|
|
271
|
+
已完成 --> 售后流程: 申请售后(15天内)
|
|
272
|
+
|
|
273
|
+
已完成 --> [*]
|
|
274
|
+
已取消 --> [*]
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## 4. 大规模类图 - 领域模型
|
|
278
|
+
|
|
279
|
+
模拟电商核心领域的完整类关系图,包含继承、组合、聚合、依赖等多种关系。
|
|
280
|
+
|
|
281
|
+
```mermaid
|
|
282
|
+
classDiagram
|
|
283
|
+
class BaseEntity {
|
|
284
|
+
<<abstract>>
|
|
285
|
+
+Long id
|
|
286
|
+
+Date createdAt
|
|
287
|
+
+Date updatedAt
|
|
288
|
+
+String createdBy
|
|
289
|
+
+Boolean deleted
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
class User {
|
|
293
|
+
+String username
|
|
294
|
+
+String phone
|
|
295
|
+
+String email
|
|
296
|
+
+String avatar
|
|
297
|
+
+UserStatus status
|
|
298
|
+
+register()
|
|
299
|
+
+login()
|
|
300
|
+
+updateProfile()
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
class UserStatus {
|
|
304
|
+
<<enumeration>>
|
|
305
|
+
ACTIVE
|
|
306
|
+
FROZEN
|
|
307
|
+
CANCELLED
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
class MemberLevel {
|
|
311
|
+
<<enumeration>>
|
|
312
|
+
BRONZE
|
|
313
|
+
SILVER
|
|
314
|
+
GOLD
|
|
315
|
+
PLATINUM
|
|
316
|
+
DIAMOND
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
class Member {
|
|
320
|
+
+MemberLevel level
|
|
321
|
+
+Integer points
|
|
322
|
+
+Date expireDate
|
|
323
|
+
+upgrade()
|
|
324
|
+
+deductPoints(amount)
|
|
325
|
+
+addPoints(amount)
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
class Address {
|
|
329
|
+
+String province
|
|
330
|
+
+String city
|
|
331
|
+
+String district
|
|
332
|
+
+String detail
|
|
333
|
+
+String zipCode
|
|
334
|
+
+String contactName
|
|
335
|
+
+String contactPhone
|
|
336
|
+
+Boolean isDefault
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
class Product {
|
|
340
|
+
+String name
|
|
341
|
+
+String description
|
|
342
|
+
+Category category
|
|
343
|
+
+Brand brand
|
|
344
|
+
+ProductStatus status
|
|
345
|
+
+BigDecimal minPrice
|
|
346
|
+
+BigDecimal maxPrice
|
|
347
|
+
+onShelf()
|
|
348
|
+
+offShelf()
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
class ProductStatus {
|
|
352
|
+
<<enumeration>>
|
|
353
|
+
DRAFT
|
|
354
|
+
ON_SHELF
|
|
355
|
+
OFF_SHELF
|
|
356
|
+
DELETED
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
class SKU {
|
|
360
|
+
+String skuCode
|
|
361
|
+
+String specDesc
|
|
362
|
+
+BigDecimal price
|
|
363
|
+
+BigDecimal costPrice
|
|
364
|
+
+Integer stock
|
|
365
|
+
+String barcode
|
|
366
|
+
+deductStock(qty)
|
|
367
|
+
+addStock(qty)
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
class Category {
|
|
371
|
+
+String name
|
|
372
|
+
+Integer level
|
|
373
|
+
+Category parent
|
|
374
|
+
+List~Category~ children
|
|
375
|
+
+Integer sortOrder
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
class Brand {
|
|
379
|
+
+String name
|
|
380
|
+
+String logo
|
|
381
|
+
+String description
|
|
382
|
+
+String country
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
class Order {
|
|
386
|
+
+String orderNo
|
|
387
|
+
+User buyer
|
|
388
|
+
+OrderStatus status
|
|
389
|
+
+BigDecimal totalAmount
|
|
390
|
+
+BigDecimal discountAmount
|
|
391
|
+
+BigDecimal payAmount
|
|
392
|
+
+BigDecimal freightAmount
|
|
393
|
+
+Address shippingAddress
|
|
394
|
+
+String remark
|
|
395
|
+
+submit()
|
|
396
|
+
+pay()
|
|
397
|
+
+cancel()
|
|
398
|
+
+confirm()
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
class OrderStatus {
|
|
402
|
+
<<enumeration>>
|
|
403
|
+
PENDING_PAYMENT
|
|
404
|
+
PAID
|
|
405
|
+
SHIPPED
|
|
406
|
+
DELIVERED
|
|
407
|
+
COMPLETED
|
|
408
|
+
CANCELLED
|
|
409
|
+
REFUNDING
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
class OrderItem {
|
|
413
|
+
+SKU sku
|
|
414
|
+
+String productName
|
|
415
|
+
+String skuSpec
|
|
416
|
+
+Integer quantity
|
|
417
|
+
+BigDecimal unitPrice
|
|
418
|
+
+BigDecimal subtotal
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
class Payment {
|
|
422
|
+
+String payNo
|
|
423
|
+
+String tradeNo
|
|
424
|
+
+PayChannel channel
|
|
425
|
+
+BigDecimal amount
|
|
426
|
+
+PayStatus status
|
|
427
|
+
+Date paidAt
|
|
428
|
+
+createPay()
|
|
429
|
+
+callback()
|
|
430
|
+
+refund()
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
class PayChannel {
|
|
434
|
+
<<enumeration>>
|
|
435
|
+
WECHAT
|
|
436
|
+
ALIPAY
|
|
437
|
+
UNION_PAY
|
|
438
|
+
CREDIT_CARD
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
class PayStatus {
|
|
442
|
+
<<enumeration>>
|
|
443
|
+
PENDING
|
|
444
|
+
SUCCESS
|
|
445
|
+
FAILED
|
|
446
|
+
REFUNDED
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
class Cart {
|
|
450
|
+
+User user
|
|
451
|
+
+List~CartItem~ items
|
|
452
|
+
+addItem(sku, qty)
|
|
453
|
+
+removeItem(skuId)
|
|
454
|
+
+updateQty(skuId, qty)
|
|
455
|
+
+clear()
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
class CartItem {
|
|
459
|
+
+SKU sku
|
|
460
|
+
+Integer quantity
|
|
461
|
+
+Boolean checked
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
class Coupon {
|
|
465
|
+
+String name
|
|
466
|
+
+CouponType type
|
|
467
|
+
+BigDecimal threshold
|
|
468
|
+
+BigDecimal discount
|
|
469
|
+
+Date startTime
|
|
470
|
+
+Date endTime
|
|
471
|
+
+Integer totalCount
|
|
472
|
+
+Integer usedCount
|
|
473
|
+
+claim()
|
|
474
|
+
+use()
|
|
475
|
+
+verify()
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
class CouponType {
|
|
479
|
+
<<enumeration>>
|
|
480
|
+
FULL_REDUCTION
|
|
481
|
+
PERCENTAGE_OFF
|
|
482
|
+
FREE_SHIPPING
|
|
483
|
+
FIXED_AMOUNT
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
class Review {
|
|
487
|
+
+User user
|
|
488
|
+
+Product product
|
|
489
|
+
+Order order
|
|
490
|
+
+Integer rating
|
|
491
|
+
+String content
|
|
492
|
+
+List~String~ images
|
|
493
|
+
+publish()
|
|
494
|
+
+reply()
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
class Logistics {
|
|
498
|
+
+String trackingNo
|
|
499
|
+
+String carrier
|
|
500
|
+
+LogisticsStatus status
|
|
501
|
+
+List~LogisticsTrace~ traces
|
|
502
|
+
+ship()
|
|
503
|
+
+updateTrace()
|
|
504
|
+
+sign()
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
class LogisticsStatus {
|
|
508
|
+
<<enumeration>>
|
|
509
|
+
PENDING
|
|
510
|
+
PICKED_UP
|
|
511
|
+
IN_TRANSIT
|
|
512
|
+
DELIVERING
|
|
513
|
+
SIGNED
|
|
514
|
+
EXCEPTION
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
class LogisticsTrace {
|
|
518
|
+
+Date time
|
|
519
|
+
+String location
|
|
520
|
+
+String description
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
BaseEntity <|-- User
|
|
524
|
+
BaseEntity <|-- Product
|
|
525
|
+
BaseEntity <|-- Order
|
|
526
|
+
BaseEntity <|-- Payment
|
|
527
|
+
BaseEntity <|-- Coupon
|
|
528
|
+
BaseEntity <|-- Review
|
|
529
|
+
BaseEntity <|-- Logistics
|
|
530
|
+
|
|
531
|
+
User "1" --> "1" Member : 拥有
|
|
532
|
+
User "1" --> "*" Address : 管理
|
|
533
|
+
User "1" --> "1" Cart : 拥有
|
|
534
|
+
User "1" --> "*" Order : 下单
|
|
535
|
+
User "1" --> "*" Review : 发表
|
|
536
|
+
User --> UserStatus
|
|
537
|
+
|
|
538
|
+
Product "1" --> "*" SKU : 包含
|
|
539
|
+
Product "*" --> "1" Category : 属于
|
|
540
|
+
Product "*" --> "1" Brand : 归属
|
|
541
|
+
Product --> ProductStatus
|
|
542
|
+
|
|
543
|
+
Category "1" --> "*" Category : 子分类
|
|
544
|
+
|
|
545
|
+
Order "1" --> "*" OrderItem : 包含
|
|
546
|
+
Order "1" --> "1" Payment : 关联
|
|
547
|
+
Order "1" --> "0..1" Coupon : 使用
|
|
548
|
+
Order "1" --> "1" Logistics : 关联
|
|
549
|
+
Order --> OrderStatus
|
|
550
|
+
OrderItem "*" --> "1" SKU : 引用
|
|
551
|
+
|
|
552
|
+
Cart "1" --> "*" CartItem : 包含
|
|
553
|
+
CartItem "*" --> "1" SKU : 引用
|
|
554
|
+
|
|
555
|
+
Payment --> PayChannel
|
|
556
|
+
Payment --> PayStatus
|
|
557
|
+
Member --> MemberLevel
|
|
558
|
+
Coupon --> CouponType
|
|
559
|
+
Logistics --> LogisticsStatus
|
|
560
|
+
Logistics "1" --> "*" LogisticsTrace : 包含
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
## 5. 复杂甘特图 - 大型项目排期
|
|
564
|
+
|
|
565
|
+
模拟一个跨 6 个月、多团队并行的大型项目排期。
|
|
566
|
+
|
|
567
|
+
```mermaid
|
|
568
|
+
gantt
|
|
569
|
+
title 电商平台 V2.0 重构项目排期
|
|
570
|
+
dateFormat YYYY-MM-DD
|
|
571
|
+
axisFormat %m/%d
|
|
572
|
+
todayMarker stroke-width:3px,stroke:#f00
|
|
573
|
+
|
|
574
|
+
section 项目管理
|
|
575
|
+
需求评审与确认 :done, pm1, 2024-01-02, 10d
|
|
576
|
+
技术方案设计 :done, pm2, after pm1, 14d
|
|
577
|
+
里程碑一评审 :milestone, m1, after pm2, 0d
|
|
578
|
+
中期检查 :milestone, m2, 2024-04-01, 0d
|
|
579
|
+
上线评审 :milestone, m3, 2024-06-15, 0d
|
|
580
|
+
|
|
581
|
+
section 基础架构组
|
|
582
|
+
微服务框架搭建 :done, infra1, after pm2, 14d
|
|
583
|
+
API Gateway 开发 :done, infra2, after infra1, 10d
|
|
584
|
+
统一鉴权中心 :done, infra3, after infra1, 12d
|
|
585
|
+
分布式配置中心 :done, infra4, after infra2, 7d
|
|
586
|
+
链路追踪集成 :active, infra5, after infra4, 10d
|
|
587
|
+
灰度发布系统 :infra6, after infra5, 14d
|
|
588
|
+
性能压测与调优 :infra7, after infra6, 10d
|
|
589
|
+
|
|
590
|
+
section 用户组
|
|
591
|
+
用户中心重构 :done, user1, after infra1, 14d
|
|
592
|
+
会员体系开发 :done, user2, after user1, 10d
|
|
593
|
+
OAuth2 第三方登录 :active, user3, after user2, 10d
|
|
594
|
+
用户画像系统 :user4, after user3, 14d
|
|
595
|
+
积分商城 :user5, after user4, 12d
|
|
596
|
+
|
|
597
|
+
section 商品组
|
|
598
|
+
商品中心重构 :done, prod1, after infra1, 21d
|
|
599
|
+
SKU 管理系统 :done, prod2, after prod1, 14d
|
|
600
|
+
搜索引擎集成(ES) :active, prod3, after prod2, 14d
|
|
601
|
+
智能推荐系统 :prod4, after prod3, 21d
|
|
602
|
+
评价系统升级 :prod5, after prod2, 10d
|
|
603
|
+
|
|
604
|
+
section 交易组
|
|
605
|
+
订单中心重构 :done, trade1, after infra2, 21d
|
|
606
|
+
支付系统升级 :active, trade2, after trade1, 14d
|
|
607
|
+
优惠券引擎 :trade3, after trade2, 14d
|
|
608
|
+
促销活动系统 :trade4, after trade3, 14d
|
|
609
|
+
对账系统 :trade5, after trade2, 10d
|
|
610
|
+
发票系统 :trade6, after trade5, 7d
|
|
611
|
+
|
|
612
|
+
section 物流组
|
|
613
|
+
物流中台开发 :logi1, after trade1, 14d
|
|
614
|
+
仓储管理系统 :logi2, after logi1, 14d
|
|
615
|
+
智能分仓算法 :logi3, after logi2, 10d
|
|
616
|
+
配送调度系统 :logi4, after logi2, 12d
|
|
617
|
+
|
|
618
|
+
section 前端组
|
|
619
|
+
Design System 搭建 :done, fe1, after pm2, 14d
|
|
620
|
+
PC 端重构 :active, fe2, after fe1, 42d
|
|
621
|
+
H5 端重构 :fe3, after fe1, 35d
|
|
622
|
+
小程序重构 :fe4, after fe3, 28d
|
|
623
|
+
管理后台重构 :fe5, after fe2, 28d
|
|
624
|
+
|
|
625
|
+
section 测试与上线
|
|
626
|
+
集成测试 :test1, 2024-05-15, 14d
|
|
627
|
+
性能测试 :test2, after test1, 7d
|
|
628
|
+
安全审计 :test3, after test1, 7d
|
|
629
|
+
UAT 验收 :test4, after test2, 7d
|
|
630
|
+
预发布环境部署 :deploy1, after test4, 3d
|
|
631
|
+
正式上线 :milestone, deploy2, after deploy1, 0d
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
## 6. 复杂 ER 图 - 数据库设计
|
|
635
|
+
|
|
636
|
+
模拟电商核心数据库的实体关系图。
|
|
637
|
+
|
|
638
|
+
```mermaid
|
|
639
|
+
erDiagram
|
|
640
|
+
USERS {
|
|
641
|
+
bigint id PK
|
|
642
|
+
varchar username UK
|
|
643
|
+
varchar phone UK
|
|
644
|
+
varchar email
|
|
645
|
+
varchar password_hash
|
|
646
|
+
varchar avatar_url
|
|
647
|
+
tinyint status
|
|
648
|
+
timestamp created_at
|
|
649
|
+
timestamp updated_at
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
MEMBERS {
|
|
653
|
+
bigint id PK
|
|
654
|
+
bigint user_id FK
|
|
655
|
+
tinyint level
|
|
656
|
+
int points
|
|
657
|
+
date expire_date
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
ADDRESSES {
|
|
661
|
+
bigint id PK
|
|
662
|
+
bigint user_id FK
|
|
663
|
+
varchar province
|
|
664
|
+
varchar city
|
|
665
|
+
varchar district
|
|
666
|
+
varchar detail
|
|
667
|
+
varchar contact_name
|
|
668
|
+
varchar contact_phone
|
|
669
|
+
boolean is_default
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
CATEGORIES {
|
|
673
|
+
bigint id PK
|
|
674
|
+
bigint parent_id FK
|
|
675
|
+
varchar name
|
|
676
|
+
tinyint level
|
|
677
|
+
int sort_order
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
BRANDS {
|
|
681
|
+
bigint id PK
|
|
682
|
+
varchar name
|
|
683
|
+
varchar logo_url
|
|
684
|
+
varchar country
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
PRODUCTS {
|
|
688
|
+
bigint id PK
|
|
689
|
+
varchar name
|
|
690
|
+
text description
|
|
691
|
+
bigint category_id FK
|
|
692
|
+
bigint brand_id FK
|
|
693
|
+
tinyint status
|
|
694
|
+
decimal min_price
|
|
695
|
+
decimal max_price
|
|
696
|
+
timestamp created_at
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
SKUS {
|
|
700
|
+
bigint id PK
|
|
701
|
+
bigint product_id FK
|
|
702
|
+
varchar sku_code UK
|
|
703
|
+
varchar spec_desc
|
|
704
|
+
decimal price
|
|
705
|
+
decimal cost_price
|
|
706
|
+
int stock
|
|
707
|
+
varchar barcode
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
ORDERS {
|
|
711
|
+
bigint id PK
|
|
712
|
+
varchar order_no UK
|
|
713
|
+
bigint user_id FK
|
|
714
|
+
bigint address_id FK
|
|
715
|
+
bigint coupon_id FK
|
|
716
|
+
tinyint status
|
|
717
|
+
decimal total_amount
|
|
718
|
+
decimal discount_amount
|
|
719
|
+
decimal freight_amount
|
|
720
|
+
decimal pay_amount
|
|
721
|
+
varchar remark
|
|
722
|
+
timestamp created_at
|
|
723
|
+
timestamp paid_at
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
ORDER_ITEMS {
|
|
727
|
+
bigint id PK
|
|
728
|
+
bigint order_id FK
|
|
729
|
+
bigint sku_id FK
|
|
730
|
+
varchar product_name
|
|
731
|
+
varchar sku_spec
|
|
732
|
+
int quantity
|
|
733
|
+
decimal unit_price
|
|
734
|
+
decimal subtotal
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
PAYMENTS {
|
|
738
|
+
bigint id PK
|
|
739
|
+
varchar pay_no UK
|
|
740
|
+
bigint order_id FK
|
|
741
|
+
varchar trade_no
|
|
742
|
+
tinyint channel
|
|
743
|
+
decimal amount
|
|
744
|
+
tinyint status
|
|
745
|
+
timestamp paid_at
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
COUPONS {
|
|
749
|
+
bigint id PK
|
|
750
|
+
varchar name
|
|
751
|
+
tinyint type
|
|
752
|
+
decimal threshold
|
|
753
|
+
decimal discount
|
|
754
|
+
timestamp start_time
|
|
755
|
+
timestamp end_time
|
|
756
|
+
int total_count
|
|
757
|
+
int used_count
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
REVIEWS {
|
|
761
|
+
bigint id PK
|
|
762
|
+
bigint user_id FK
|
|
763
|
+
bigint product_id FK
|
|
764
|
+
bigint order_id FK
|
|
765
|
+
tinyint rating
|
|
766
|
+
text content
|
|
767
|
+
json images
|
|
768
|
+
timestamp created_at
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
LOGISTICS {
|
|
772
|
+
bigint id PK
|
|
773
|
+
bigint order_id FK
|
|
774
|
+
varchar tracking_no
|
|
775
|
+
varchar carrier
|
|
776
|
+
tinyint status
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
LOGISTICS_TRACES {
|
|
780
|
+
bigint id PK
|
|
781
|
+
bigint logistics_id FK
|
|
782
|
+
timestamp trace_time
|
|
783
|
+
varchar location
|
|
784
|
+
varchar description
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
CART_ITEMS {
|
|
788
|
+
bigint id PK
|
|
789
|
+
bigint user_id FK
|
|
790
|
+
bigint sku_id FK
|
|
791
|
+
int quantity
|
|
792
|
+
boolean checked
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
USERS ||--o| MEMBERS : "拥有"
|
|
796
|
+
USERS ||--o{ ADDRESSES : "管理"
|
|
797
|
+
USERS ||--o{ ORDERS : "下单"
|
|
798
|
+
USERS ||--o{ REVIEWS : "发表"
|
|
799
|
+
USERS ||--o{ CART_ITEMS : "购物车"
|
|
800
|
+
CATEGORIES ||--o{ CATEGORIES : "子分类"
|
|
801
|
+
CATEGORIES ||--o{ PRODUCTS : "包含"
|
|
802
|
+
BRANDS ||--o{ PRODUCTS : "归属"
|
|
803
|
+
PRODUCTS ||--o{ SKUS : "包含SKU"
|
|
804
|
+
PRODUCTS ||--o{ REVIEWS : "被评价"
|
|
805
|
+
ORDERS ||--o{ ORDER_ITEMS : "包含"
|
|
806
|
+
ORDERS ||--|| PAYMENTS : "支付"
|
|
807
|
+
ORDERS ||--o| COUPONS : "使用"
|
|
808
|
+
ORDERS ||--o| LOGISTICS : "物流"
|
|
809
|
+
ORDERS ||--o{ REVIEWS : "关联"
|
|
810
|
+
ORDER_ITEMS }o--|| SKUS : "引用"
|
|
811
|
+
CART_ITEMS }o--|| SKUS : "引用"
|
|
812
|
+
LOGISTICS ||--o{ LOGISTICS_TRACES : "轨迹"
|
|
813
|
+
ADDRESSES ||--o{ ORDERS : "收货地址"
|
|
814
|
+
```
|
|
815
|
+
|
|
816
|
+
## 7. 复杂流程图 - CI/CD 全流程
|
|
817
|
+
|
|
818
|
+
模拟一个包含多分支、条件判断、并行任务的 CI/CD 流水线。
|
|
819
|
+
|
|
820
|
+
```mermaid
|
|
821
|
+
graph LR
|
|
822
|
+
subgraph 代码提交阶段
|
|
823
|
+
A[开发者 Push] --> B{分支类型?}
|
|
824
|
+
B -->|feature/*| C[触发 CI]
|
|
825
|
+
B -->|develop| D[触发 CI + 部署 DEV]
|
|
826
|
+
B -->|release/*| E[触发 CI + 部署 STG]
|
|
827
|
+
B -->|main| F[触发 CI + 部署 PROD]
|
|
828
|
+
B -->|hotfix/*| G[触发紧急 CI]
|
|
829
|
+
end
|
|
830
|
+
|
|
831
|
+
subgraph CI 流水线
|
|
832
|
+
C & D & E & F & G --> H[拉取代码]
|
|
833
|
+
H --> I[安装依赖]
|
|
834
|
+
I --> J{并行检查}
|
|
835
|
+
J --> K[ESLint 代码检查]
|
|
836
|
+
J --> L[单元测试]
|
|
837
|
+
J --> M[类型检查 TypeScript]
|
|
838
|
+
J --> N[安全扫描 Snyk]
|
|
839
|
+
K & L & M & N --> O{全部通过?}
|
|
840
|
+
O -->|否| P[通知开发者修复]
|
|
841
|
+
P --> Q[阻断流水线]
|
|
842
|
+
O -->|是| R[构建 Docker 镜像]
|
|
843
|
+
R --> S[推送镜像到 Harbor]
|
|
844
|
+
S --> T[更新镜像 Tag]
|
|
845
|
+
end
|
|
846
|
+
|
|
847
|
+
subgraph DEV 环境部署
|
|
848
|
+
D --> U[Helm 部署到 K8s DEV]
|
|
849
|
+
U --> V[运行冒烟测试]
|
|
850
|
+
V --> W{冒烟通过?}
|
|
851
|
+
W -->|否| X[自动回滚]
|
|
852
|
+
W -->|是| Y[通知测试团队]
|
|
853
|
+
end
|
|
854
|
+
|
|
855
|
+
subgraph STG 环境部署
|
|
856
|
+
E --> Z[Helm 部署到 K8s STG]
|
|
857
|
+
Z --> AA[运行集成测试]
|
|
858
|
+
AA --> AB[运行 E2E 测试]
|
|
859
|
+
AB --> AC[运行性能测试]
|
|
860
|
+
AC --> AD{全部通过?}
|
|
861
|
+
AD -->|否| AE[生成测试报告]
|
|
862
|
+
AE --> AF[通知相关人员]
|
|
863
|
+
AD -->|是| AG[标记为可发布]
|
|
864
|
+
end
|
|
865
|
+
|
|
866
|
+
subgraph PROD 环境部署
|
|
867
|
+
F --> AH{需要审批?}
|
|
868
|
+
AH -->|是| AI[等待 Tech Lead 审批]
|
|
869
|
+
AI --> AJ{审批结果}
|
|
870
|
+
AJ -->|拒绝| AK[终止部署]
|
|
871
|
+
AJ -->|通过| AL[蓝绿部署到 PROD]
|
|
872
|
+
AH -->|否| AL
|
|
873
|
+
AL --> AM[切换 10% 流量]
|
|
874
|
+
AM --> AN[监控 5 分钟]
|
|
875
|
+
AN --> AO{指标正常?}
|
|
876
|
+
AO -->|否| AP[自动回滚]
|
|
877
|
+
AP --> AQ[发送告警]
|
|
878
|
+
AO -->|是| AR[切换 50% 流量]
|
|
879
|
+
AR --> AS[监控 10 分钟]
|
|
880
|
+
AS --> AT{指标正常?}
|
|
881
|
+
AT -->|否| AP
|
|
882
|
+
AT -->|是| AU[切换 100% 流量]
|
|
883
|
+
AU --> AV[部署完成通知]
|
|
884
|
+
end
|
|
885
|
+
|
|
886
|
+
T --> U & Z & AH
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
## 8. 用户旅程图 - 电商购物体验
|
|
890
|
+
|
|
891
|
+
```mermaid
|
|
892
|
+
journey
|
|
893
|
+
title 用户网购完整旅程
|
|
894
|
+
section 发现商品
|
|
895
|
+
打开App首页: 5: 用户
|
|
896
|
+
浏览推荐商品: 4: 用户
|
|
897
|
+
使用搜索功能: 3: 用户
|
|
898
|
+
筛选和排序结果: 3: 用户
|
|
899
|
+
查看商品详情: 4: 用户
|
|
900
|
+
阅读用户评价: 4: 用户
|
|
901
|
+
对比多个商品: 2: 用户
|
|
902
|
+
section 购买决策
|
|
903
|
+
加入购物车: 5: 用户
|
|
904
|
+
选择优惠券: 3: 用户
|
|
905
|
+
凑单满减: 2: 用户
|
|
906
|
+
确认收货地址: 4: 用户
|
|
907
|
+
选择支付方式: 4: 用户
|
|
908
|
+
完成支付: 5: 用户
|
|
909
|
+
section 等待收货
|
|
910
|
+
查看订单状态: 3: 用户
|
|
911
|
+
查看物流信息: 3: 用户
|
|
912
|
+
联系客服咨询: 2: 用户
|
|
913
|
+
收到发货通知: 4: 用户
|
|
914
|
+
等待快递配送: 2: 用户
|
|
915
|
+
section 收货与售后
|
|
916
|
+
签收包裹: 5: 用户
|
|
917
|
+
检查商品质量: 4: 用户
|
|
918
|
+
确认收货: 5: 用户
|
|
919
|
+
撰写评价: 3: 用户
|
|
920
|
+
申请售后退款: 1: 用户
|
|
921
|
+
等待退款到账: 2: 用户
|
|
922
|
+
```
|
|
923
|
+
|
|
924
|
+
## 9. Git 分支管理图
|
|
925
|
+
|
|
926
|
+
```mermaid
|
|
927
|
+
gitGraph
|
|
928
|
+
commit id: "init"
|
|
929
|
+
commit id: "项目初始化"
|
|
930
|
+
branch develop
|
|
931
|
+
checkout develop
|
|
932
|
+
commit id: "搭建基础框架"
|
|
933
|
+
commit id: "配置 CI/CD"
|
|
934
|
+
|
|
935
|
+
branch feature/user
|
|
936
|
+
checkout feature/user
|
|
937
|
+
commit id: "用户注册"
|
|
938
|
+
commit id: "用户登录"
|
|
939
|
+
commit id: "JWT 鉴权"
|
|
940
|
+
checkout develop
|
|
941
|
+
merge feature/user id: "合并用户模块" tag: "v0.1.0"
|
|
942
|
+
|
|
943
|
+
branch feature/product
|
|
944
|
+
checkout feature/product
|
|
945
|
+
commit id: "商品 CRUD"
|
|
946
|
+
commit id: "SKU 管理"
|
|
947
|
+
commit id: "分类树"
|
|
948
|
+
commit id: "搜索集成"
|
|
949
|
+
checkout develop
|
|
950
|
+
merge feature/product id: "合并商品模块" tag: "v0.2.0"
|
|
951
|
+
|
|
952
|
+
branch feature/order
|
|
953
|
+
checkout feature/order
|
|
954
|
+
commit id: "购物车"
|
|
955
|
+
commit id: "下单流程"
|
|
956
|
+
commit id: "支付集成"
|
|
957
|
+
commit id: "订单状态机"
|
|
958
|
+
|
|
959
|
+
checkout develop
|
|
960
|
+
branch feature/logistics
|
|
961
|
+
checkout feature/logistics
|
|
962
|
+
commit id: "物流对接"
|
|
963
|
+
commit id: "轨迹查询"
|
|
964
|
+
|
|
965
|
+
checkout develop
|
|
966
|
+
merge feature/order id: "合并订单模块"
|
|
967
|
+
merge feature/logistics id: "合并物流模块" tag: "v0.3.0"
|
|
968
|
+
|
|
969
|
+
branch release/1.0
|
|
970
|
+
checkout release/1.0
|
|
971
|
+
commit id: "版本号更新"
|
|
972
|
+
commit id: "修复集成 Bug"
|
|
973
|
+
commit id: "性能优化"
|
|
974
|
+
|
|
975
|
+
checkout main
|
|
976
|
+
merge release/1.0 id: "v1.0.0 正式发布" tag: "v1.0.0"
|
|
977
|
+
|
|
978
|
+
checkout develop
|
|
979
|
+
merge release/1.0 id: "同步 release 修复"
|
|
980
|
+
|
|
981
|
+
checkout main
|
|
982
|
+
branch hotfix/pay-bug
|
|
983
|
+
commit id: "修复支付回调 Bug"
|
|
984
|
+
checkout main
|
|
985
|
+
merge hotfix/pay-bug id: "紧急修复" tag: "v1.0.1"
|
|
986
|
+
checkout develop
|
|
987
|
+
merge hotfix/pay-bug id: "同步 hotfix"
|
|
988
|
+
|
|
989
|
+
checkout develop
|
|
990
|
+
commit id: "V2.0 新功能开发中..."
|
|
991
|
+
commit id: "重构中间件层"
|
|
992
|
+
```
|
|
993
|
+
|
|
994
|
+
## 10. 复杂思维导图 - 技术选型
|
|
995
|
+
|
|
996
|
+
```mermaid
|
|
997
|
+
mindmap
|
|
998
|
+
root((电商平台技术选型))
|
|
999
|
+
前端技术栈
|
|
1000
|
+
框架
|
|
1001
|
+
Vue 3
|
|
1002
|
+
React 18
|
|
1003
|
+
Next.js
|
|
1004
|
+
状态管理
|
|
1005
|
+
Pinia
|
|
1006
|
+
Zustand
|
|
1007
|
+
Redux Toolkit
|
|
1008
|
+
UI 组件库
|
|
1009
|
+
Ant Design
|
|
1010
|
+
Element Plus
|
|
1011
|
+
Arco Design
|
|
1012
|
+
构建工具
|
|
1013
|
+
Vite
|
|
1014
|
+
Webpack 5
|
|
1015
|
+
Turbopack
|
|
1016
|
+
移动端
|
|
1017
|
+
React Native
|
|
1018
|
+
Flutter
|
|
1019
|
+
UniApp
|
|
1020
|
+
Taro
|
|
1021
|
+
后端技术栈
|
|
1022
|
+
语言与框架
|
|
1023
|
+
Java Spring Boot
|
|
1024
|
+
Go Gin
|
|
1025
|
+
Node.js Nest.js
|
|
1026
|
+
Python FastAPI
|
|
1027
|
+
微服务
|
|
1028
|
+
Spring Cloud
|
|
1029
|
+
Dubbo
|
|
1030
|
+
gRPC
|
|
1031
|
+
Service Mesh Istio
|
|
1032
|
+
API 设计
|
|
1033
|
+
RESTful
|
|
1034
|
+
GraphQL
|
|
1035
|
+
gRPC Proto
|
|
1036
|
+
数据存储
|
|
1037
|
+
关系型数据库
|
|
1038
|
+
MySQL 8.0
|
|
1039
|
+
PostgreSQL 16
|
|
1040
|
+
TiDB
|
|
1041
|
+
NoSQL
|
|
1042
|
+
Redis 7
|
|
1043
|
+
MongoDB 7
|
|
1044
|
+
Elasticsearch 8
|
|
1045
|
+
消息队列
|
|
1046
|
+
RocketMQ
|
|
1047
|
+
Kafka
|
|
1048
|
+
RabbitMQ
|
|
1049
|
+
Pulsar
|
|
1050
|
+
对象存储
|
|
1051
|
+
MinIO
|
|
1052
|
+
阿里云 OSS
|
|
1053
|
+
AWS S3
|
|
1054
|
+
DevOps
|
|
1055
|
+
容器化
|
|
1056
|
+
Docker
|
|
1057
|
+
Containerd
|
|
1058
|
+
编排
|
|
1059
|
+
Kubernetes
|
|
1060
|
+
Docker Compose
|
|
1061
|
+
CI/CD
|
|
1062
|
+
Jenkins
|
|
1063
|
+
GitLab CI
|
|
1064
|
+
GitHub Actions
|
|
1065
|
+
ArgoCD
|
|
1066
|
+
监控
|
|
1067
|
+
Prometheus
|
|
1068
|
+
Grafana
|
|
1069
|
+
SkyWalking
|
|
1070
|
+
ELK Stack
|
|
1071
|
+
日志
|
|
1072
|
+
Loki
|
|
1073
|
+
Fluentd
|
|
1074
|
+
Filebeat
|
|
1075
|
+
安全
|
|
1076
|
+
认证授权
|
|
1077
|
+
OAuth 2.0
|
|
1078
|
+
JWT
|
|
1079
|
+
RBAC
|
|
1080
|
+
ABAC
|
|
1081
|
+
网络安全
|
|
1082
|
+
WAF
|
|
1083
|
+
DDoS 防护
|
|
1084
|
+
SSL/TLS
|
|
1085
|
+
数据安全
|
|
1086
|
+
加密存储
|
|
1087
|
+
脱敏处理
|
|
1088
|
+
审计日志
|
|
1089
|
+
```
|
|
1090
|
+
|
|
1091
|
+
## 11. 超复杂序列图 - 分布式事务 Saga 模式
|
|
1092
|
+
|
|
1093
|
+
模拟一个涉及 8 个服务的 Saga 分布式事务编排,包含正向操作和补偿回滚。
|
|
1094
|
+
|
|
1095
|
+
```mermaid
|
|
1096
|
+
sequenceDiagram
|
|
1097
|
+
participant 编排器 as Saga 编排器
|
|
1098
|
+
participant 订单 as 订单服务
|
|
1099
|
+
participant 库存 as 库存服务
|
|
1100
|
+
participant 优惠 as 优惠券服务
|
|
1101
|
+
participant 积分 as 积分服务
|
|
1102
|
+
participant 账户 as 账户服务
|
|
1103
|
+
participant 支付 as 支付服务
|
|
1104
|
+
participant 物流 as 物流服务
|
|
1105
|
+
participant 通知 as 通知服务
|
|
1106
|
+
|
|
1107
|
+
Note over 编排器,通知: ===== 正向流程:创建订单 =====
|
|
1108
|
+
|
|
1109
|
+
编排器->>订单: 1. 创建订单(PENDING)
|
|
1110
|
+
activate 订单
|
|
1111
|
+
订单-->>编排器: 订单创建成功 orderId=10086
|
|
1112
|
+
deactivate 订单
|
|
1113
|
+
|
|
1114
|
+
编排器->>库存: 2. 预扣库存
|
|
1115
|
+
activate 库存
|
|
1116
|
+
库存->>库存: 乐观锁扣减 stock - qty
|
|
1117
|
+
库存-->>编排器: 库存预扣成功 lockId=L001
|
|
1118
|
+
deactivate 库存
|
|
1119
|
+
|
|
1120
|
+
编排器->>优惠: 3. 核销优惠券
|
|
1121
|
+
activate 优惠
|
|
1122
|
+
优惠->>优惠: 标记优惠券为 USED
|
|
1123
|
+
优惠-->>编排器: 核销成功 couponId=C001
|
|
1124
|
+
deactivate 优惠
|
|
1125
|
+
|
|
1126
|
+
编排器->>积分: 4. 扣减积分
|
|
1127
|
+
activate 积分
|
|
1128
|
+
积分->>积分: 扣减 500 积分抵扣 5 元
|
|
1129
|
+
积分-->>编排器: 积分扣减成功
|
|
1130
|
+
deactivate 积分
|
|
1131
|
+
|
|
1132
|
+
编排器->>账户: 5. 冻结余额
|
|
1133
|
+
activate 账户
|
|
1134
|
+
账户->>账户: 冻结 ¥195.00
|
|
1135
|
+
账户-->>编排器: 余额冻结成功 freezeId=F001
|
|
1136
|
+
deactivate 账户
|
|
1137
|
+
|
|
1138
|
+
编排器->>支付: 6. 发起支付
|
|
1139
|
+
activate 支付
|
|
1140
|
+
支付->>支付: 创建支付单
|
|
1141
|
+
支付-->>编排器: 支付处理中 payId=P001
|
|
1142
|
+
deactivate 支付
|
|
1143
|
+
|
|
1144
|
+
Note over 编排器,通知: ===== 异常场景:支付失败触发补偿 =====
|
|
1145
|
+
|
|
1146
|
+
支付--x编排器: 支付失败(余额不足)
|
|
1147
|
+
|
|
1148
|
+
rect rgb(255, 230, 230)
|
|
1149
|
+
Note over 编排器,通知: ===== 补偿流程:逆序回滚 =====
|
|
1150
|
+
|
|
1151
|
+
编排器->>账户: 补偿5: 解冻余额 freezeId=F001
|
|
1152
|
+
activate 账户
|
|
1153
|
+
账户->>账户: 解冻 ¥195.00
|
|
1154
|
+
账户-->>编排器: 解冻成功
|
|
1155
|
+
deactivate 账户
|
|
1156
|
+
|
|
1157
|
+
编排器->>积分: 补偿4: 返还积分
|
|
1158
|
+
activate 积分
|
|
1159
|
+
积分->>积分: 返还 500 积分
|
|
1160
|
+
积分-->>编排器: 积分返还成功
|
|
1161
|
+
deactivate 积分
|
|
1162
|
+
|
|
1163
|
+
编排器->>优惠: 补偿3: 恢复优惠券
|
|
1164
|
+
activate 优惠
|
|
1165
|
+
优惠->>优惠: 标记优惠券为 AVAILABLE
|
|
1166
|
+
优惠-->>编排器: 优惠券恢复成功
|
|
1167
|
+
deactivate 优惠
|
|
1168
|
+
|
|
1169
|
+
编排器->>库存: 补偿2: 释放库存
|
|
1170
|
+
activate 库存
|
|
1171
|
+
库存->>库存: 释放锁定 lockId=L001
|
|
1172
|
+
库存-->>编排器: 库存释放成功
|
|
1173
|
+
deactivate 库存
|
|
1174
|
+
|
|
1175
|
+
编排器->>订单: 补偿1: 取消订单
|
|
1176
|
+
activate 订单
|
|
1177
|
+
订单->>订单: 更新状态为 CANCELLED
|
|
1178
|
+
订单-->>编排器: 订单已取消
|
|
1179
|
+
deactivate 订单
|
|
1180
|
+
end
|
|
1181
|
+
|
|
1182
|
+
编排器->>通知: 发送订单取消通知
|
|
1183
|
+
通知->>通知: 推送 + 短信
|
|
1184
|
+
|
|
1185
|
+
Note over 编排器,通知: ===== Saga 事务补偿完成 =====
|
|
1186
|
+
```
|
|
1187
|
+
|
|
1188
|
+
## 12. 超大饼图与象限图
|
|
1189
|
+
|
|
1190
|
+
### 技术债务分布
|
|
1191
|
+
|
|
1192
|
+
```mermaid
|
|
1193
|
+
pie showData
|
|
1194
|
+
title 技术债务分类占比(共 847 项)
|
|
1195
|
+
"代码重复" : 186
|
|
1196
|
+
"缺失单元测试" : 152
|
|
1197
|
+
"过时依赖" : 128
|
|
1198
|
+
"硬编码配置" : 97
|
|
1199
|
+
"未处理异常" : 83
|
|
1200
|
+
"SQL 注入风险" : 45
|
|
1201
|
+
"内存泄漏隐患" : 38
|
|
1202
|
+
"死代码" : 34
|
|
1203
|
+
"循环依赖" : 29
|
|
1204
|
+
"接口未鉴权" : 23
|
|
1205
|
+
"日志不规范" : 18
|
|
1206
|
+
"其他" : 14
|
|
1207
|
+
```
|
|
1208
|
+
|
|
1209
|
+
### 技术评估象限图
|
|
1210
|
+
|
|
1211
|
+
```mermaid
|
|
1212
|
+
quadrantChart
|
|
1213
|
+
title Reach and engagement of campaigns
|
|
1214
|
+
x-axis Low Learning Cost --> High Learning Cost
|
|
1215
|
+
y-axis Low Ecosystem Maturity --> High Ecosystem Maturity
|
|
1216
|
+
quadrant-1 Cautious Adoption
|
|
1217
|
+
quadrant-2 Priority Adoption
|
|
1218
|
+
quadrant-3 Use As Needed
|
|
1219
|
+
quadrant-4 Not Recommended
|
|
1220
|
+
Vue.js: [0.35, 0.85]
|
|
1221
|
+
React: [0.45, 0.90]
|
|
1222
|
+
Svelte: [0.30, 0.45]
|
|
1223
|
+
Angular: [0.75, 0.80]
|
|
1224
|
+
Spring Boot: [0.60, 0.92]
|
|
1225
|
+
Go Gin: [0.40, 0.60]
|
|
1226
|
+
Rust Actix: [0.85, 0.35]
|
|
1227
|
+
Nest.js: [0.50, 0.55]
|
|
1228
|
+
FastAPI: [0.25, 0.50]
|
|
1229
|
+
Django: [0.45, 0.75]
|
|
1230
|
+
Kubernetes: [0.80, 0.88]
|
|
1231
|
+
Docker: [0.30, 0.95]
|
|
1232
|
+
Terraform: [0.65, 0.70]
|
|
1233
|
+
Pulumi: [0.70, 0.40]
|
|
1234
|
+
```
|
|
1235
|
+
|
|
1236
|
+
## 13. 时间线图 - 项目里程碑
|
|
1237
|
+
|
|
1238
|
+
```mermaid
|
|
1239
|
+
timeline
|
|
1240
|
+
title 电商平台发展历程
|
|
1241
|
+
section 2022 Q1-Q2 项目启动
|
|
1242
|
+
1月 : 团队组建 : 技术选型评审
|
|
1243
|
+
3月 : MVP 版本开发启动 : 用户中心上线
|
|
1244
|
+
5月 : 商品中心上线 : 首次内部测试
|
|
1245
|
+
section 2022 Q3-Q4 核心功能
|
|
1246
|
+
7月 : 订单系统上线 : 支付系统对接
|
|
1247
|
+
9月 : 物流系统集成 : 搜索引擎上线
|
|
1248
|
+
11月 : V1.0 正式发布 : 首批商家入驻
|
|
1249
|
+
section 2023 Q1-Q2 规模扩张
|
|
1250
|
+
1月 : 日活突破10万 : 引入推荐算法
|
|
1251
|
+
3月 : 营销系统上线 : 优惠券引擎
|
|
1252
|
+
5月 : 小程序上线 : H5端上线
|
|
1253
|
+
section 2023 Q3-Q4 技术升级
|
|
1254
|
+
7月 : 微服务架构重构 : 容器化部署
|
|
1255
|
+
9月 : 全链路压测 : 性能优化3倍
|
|
1256
|
+
11月 : V2.0发布 : 日活突破100万
|
|
1257
|
+
section 2024 Q1-Q2 智能化
|
|
1258
|
+
1月 : AI智能客服上线 : 个性化推荐V2
|
|
1259
|
+
3月 : 智能定价系统 : 供应链优化
|
|
1260
|
+
5月 : 国际化版本 : 多语言支持
|
|
1261
|
+
```
|
|
1262
|
+
|
|
1263
|
+
## 14. 超复杂流程图 - 风控决策引擎
|
|
1264
|
+
|
|
1265
|
+
模拟一个多层嵌套、大量条件分支的实时风控决策流程。
|
|
1266
|
+
|
|
1267
|
+
```mermaid
|
|
1268
|
+
graph TD
|
|
1269
|
+
START([交易请求进入]) --> PARSE[解析请求参数]
|
|
1270
|
+
PARSE --> BLACKLIST{命中黑名单?}
|
|
1271
|
+
|
|
1272
|
+
BLACKLIST -->|设备指纹黑名单| REJECT_1[直接拒绝 R001]
|
|
1273
|
+
BLACKLIST -->|IP 黑名单| REJECT_2[直接拒绝 R002]
|
|
1274
|
+
BLACKLIST -->|手机号黑名单| REJECT_3[直接拒绝 R003]
|
|
1275
|
+
BLACKLIST -->|未命中| FREQ_CHECK{频率检查}
|
|
1276
|
+
|
|
1277
|
+
FREQ_CHECK -->|同设备 1分钟>5次| CAPTCHA[弹出验证码]
|
|
1278
|
+
FREQ_CHECK -->|同IP 1小时>100次| IP_LIMIT[IP 限流]
|
|
1279
|
+
FREQ_CHECK -->|同账号 1天>50次| ACCOUNT_LIMIT[账号限流]
|
|
1280
|
+
FREQ_CHECK -->|正常| RULE_ENGINE[规则引擎]
|
|
1281
|
+
|
|
1282
|
+
CAPTCHA --> CAPTCHA_RESULT{验证结果}
|
|
1283
|
+
CAPTCHA_RESULT -->|通过| RULE_ENGINE
|
|
1284
|
+
CAPTCHA_RESULT -->|失败3次| REJECT_4[拒绝 R004]
|
|
1285
|
+
|
|
1286
|
+
subgraph 规则引擎评估
|
|
1287
|
+
RULE_ENGINE --> PARALLEL{并行评估}
|
|
1288
|
+
PARALLEL --> AMOUNT_RULE[金额规则]
|
|
1289
|
+
PARALLEL --> LOCATION_RULE[地理位置规则]
|
|
1290
|
+
PARALLEL --> BEHAVIOR_RULE[行为特征规则]
|
|
1291
|
+
PARALLEL --> DEVICE_RULE[设备环境规则]
|
|
1292
|
+
PARALLEL --> SOCIAL_RULE[社交关系规则]
|
|
1293
|
+
|
|
1294
|
+
AMOUNT_RULE --> |单笔>5万| HIGH_RISK_1[高风险 +40分]
|
|
1295
|
+
AMOUNT_RULE --> |单笔>1万| MED_RISK_1[中风险 +20分]
|
|
1296
|
+
AMOUNT_RULE --> |正常| LOW_RISK_1[低风险 +0分]
|
|
1297
|
+
|
|
1298
|
+
LOCATION_RULE --> |异地登录| HIGH_RISK_2[高风险 +35分]
|
|
1299
|
+
LOCATION_RULE --> |常用城市| LOW_RISK_2[低风险 +0分]
|
|
1300
|
+
|
|
1301
|
+
BEHAVIOR_RULE --> |深夜交易| MED_RISK_2[中风险 +15分]
|
|
1302
|
+
BEHAVIOR_RULE --> |首次购买高价商品| MED_RISK_3[中风险 +20分]
|
|
1303
|
+
BEHAVIOR_RULE --> |正常模式| LOW_RISK_3[低风险 +0分]
|
|
1304
|
+
|
|
1305
|
+
DEVICE_RULE --> |模拟器/Root| HIGH_RISK_3[高风险 +50分]
|
|
1306
|
+
DEVICE_RULE --> |新设备| MED_RISK_4[中风险 +10分]
|
|
1307
|
+
DEVICE_RULE --> |常用设备| LOW_RISK_4[低风险 +0分]
|
|
1308
|
+
|
|
1309
|
+
SOCIAL_RULE --> |关联黑产账号| HIGH_RISK_4[高风险 +60分]
|
|
1310
|
+
SOCIAL_RULE --> |正常社交图谱| LOW_RISK_5[低风险 +0分]
|
|
1311
|
+
end
|
|
1312
|
+
|
|
1313
|
+
HIGH_RISK_1 & MED_RISK_1 & LOW_RISK_1 --> SCORE[汇总风险分数]
|
|
1314
|
+
HIGH_RISK_2 & LOW_RISK_2 --> SCORE
|
|
1315
|
+
MED_RISK_2 & MED_RISK_3 & LOW_RISK_3 --> SCORE
|
|
1316
|
+
HIGH_RISK_3 & MED_RISK_4 & LOW_RISK_4 --> SCORE
|
|
1317
|
+
HIGH_RISK_4 & LOW_RISK_5 --> SCORE
|
|
1318
|
+
|
|
1319
|
+
SCORE --> DECISION{风险等级判定}
|
|
1320
|
+
DECISION -->|分数>=80| BLOCK[拦截交易]
|
|
1321
|
+
DECISION -->|分数 50-79| REVIEW[人工审核队列]
|
|
1322
|
+
DECISION -->|分数 30-49| ENHANCED[增强验证]
|
|
1323
|
+
DECISION -->|分数<30| PASS[放行交易]
|
|
1324
|
+
|
|
1325
|
+
BLOCK --> LOG_BLOCK[记录拦截日志]
|
|
1326
|
+
REVIEW --> MANUAL{人工审核结果}
|
|
1327
|
+
MANUAL -->|通过| PASS
|
|
1328
|
+
MANUAL -->|拒绝| LOG_BLOCK
|
|
1329
|
+
ENHANCED --> SMS_VERIFY[短信验证码]
|
|
1330
|
+
SMS_VERIFY --> SMS_RESULT{验证结果}
|
|
1331
|
+
SMS_RESULT -->|通过| PASS
|
|
1332
|
+
SMS_RESULT -->|失败| BLOCK
|
|
1333
|
+
|
|
1334
|
+
PASS --> LOG_PASS[记录放行日志]
|
|
1335
|
+
LOG_PASS --> ML_FEEDBACK[反馈至 ML 模型]
|
|
1336
|
+
LOG_BLOCK --> ML_FEEDBACK
|
|
1337
|
+
ML_FEEDBACK --> END_NODE([流程结束])
|
|
1338
|
+
```
|
|
1339
|
+
|
|
1340
|
+
## 15. 复杂饼图组合 - 系统监控仪表盘数据
|
|
1341
|
+
|
|
1342
|
+
### 服务器资源使用分布
|
|
1343
|
+
|
|
1344
|
+
```mermaid
|
|
1345
|
+
pie showData
|
|
1346
|
+
title CPU 使用率分布(128核集群)
|
|
1347
|
+
"用户服务 (32核)" : 32
|
|
1348
|
+
"商品服务 (24核)" : 24
|
|
1349
|
+
"订单服务 (20核)" : 20
|
|
1350
|
+
"搜索服务 (16核)" : 16
|
|
1351
|
+
"支付服务 (12核)" : 12
|
|
1352
|
+
"物流服务 (8核)" : 8
|
|
1353
|
+
"消息服务 (6核)" : 6
|
|
1354
|
+
"监控服务 (4核)" : 4
|
|
1355
|
+
"空闲 (6核)" : 6
|
|
1356
|
+
```
|
|
1357
|
+
|
|
1358
|
+
### 错误类型分布
|
|
1359
|
+
|
|
1360
|
+
```mermaid
|
|
1361
|
+
pie showData
|
|
1362
|
+
title 近7天错误分类(共 12,847 次)
|
|
1363
|
+
"超时错误 TimeoutException" : 4523
|
|
1364
|
+
"空指针 NullPointerException" : 2187
|
|
1365
|
+
"数据库连接池耗尽" : 1856
|
|
1366
|
+
"Redis 连接超时" : 1342
|
|
1367
|
+
"MQ 消费失败" : 987
|
|
1368
|
+
"参数校验失败" : 756
|
|
1369
|
+
"权限不足 403" : 534
|
|
1370
|
+
"资源不存在 404" : 412
|
|
1371
|
+
"其他未分类" : 250
|
|
1372
|
+
```
|
|
1373
|
+
|
|
1374
|
+
---
|
|
1375
|
+
|
|
1376
|
+
> 本文档包含 15 种不同类型的超复杂 Mermaid 图表,涵盖流程图、序列图、状态图、类图、ER 图、甘特图、饼图、思维导图、Git 图、用户旅程图、象限图、时间线图等,用于全面测试 Mermaid 渲染引擎在极端复杂场景下的表现。
|