Mermaid 是一种基于文本的图表生成工具,支持多种图表类型,能够通过简单的语法生成可视化图表。
Mermaid支持的一些图表在软件研发中具有广泛的应用,能够帮助开发者、设计师和项目经理更清晰地表达设计思路、沟通需求、管理项目进度和优化系统架构。
1、流程图(Flowchart)
应用场景:在软件研发中,流程图常用于表示系统的业务流程,帮助开发者理解系统的整体结构和流程。
特点:
- 支持多种节点形状(如矩形、菱形、圆形等)和连接线样式。
- 可通过条件判断(如if、else)实现分支逻辑。
DeepSeek指令:
针对订单流程,生成流程图,输出Mermaid格式。
输出代码:
css
graph LR
A[用户提交订单] --> B{支付成功?}
B -->|是| C{库存充足?}
B -->|否| Z[订单失败]
C -->|是| D[订单处理]
C -->|否| E[取消订单并通知用户]
D --> F[生成发货单]
F --> G[物流配送]
G --> H{用户确认收货?}
H -->|是| I[订单完成]
H -->|否| J[跟进物流异常]
J --> I
效果:
2、序列图(Sequence Diagram)
应用场景:用于描述对象之间的交互顺序,特别适合展示软件系统中不同组件或服务之间的通信。
特点:
- 支持参与者(Actor)、对象(Object)和消息(Message)的定义。
- 可表示异步消息、循环、条件判断等。
DeepSeek指令:
针对订单流程,生成序列图,输出Mermaid格式。
输出代码:
rust
sequenceDiagram
用户 ->> 订单系统: 请求退款
订单系统 ->> 支付网关: 发起逆向交易
支付网关 -->> 订单系统: 退款结果
订单系统 ->> ERP系统: 更新财务台账
订单系统 ->> 用户: 通知退款结果
效果:
3、类图(Class Diagram)
应用场景:用于描述软件系统的类结构、属性和方法,以及类之间的关系(如继承、关联、聚合等)。
特点:
- 支持类的定义、接口、枚举等。
- 可表示类之间的继承、实现、依赖等关系。
DeepSeek指令:
针对商品管理,生成类图,输出Mermaid格式。
输出代码:
swift
classDiagram
class Product {
+String productId
+String name
+String description
+BigDecimal basePrice
+ProductStatus status
+List~ProductImage~ images
+addSpecification()
+toggleStatus()
}
class SKU {
+String skuId
+Map~String,String~ specifications
+BigDecimal price
+Integer stock
+adjustStock()
+updatePrice()
}
class Category {
+String categoryId
+String name
+String path
+addSubCategory()
}
class Brand {
+String brandId
+String brandName
+String logoUrl
+verifyTrademark()
}
class ProductAttribute {
+String attrId
+String attrName
+List~String~ options
+addOption()
}
class InventoryLog {
+String logId
+String operationType
+Integer quantity
+logOperation()
}
Product "1" *-- "1..*" SKU : 组合
Product "1" --> "1" Brand : 关联
Product "1" --> "1..*" Category : 分类
Product "1" --> "0..*" ProductAttribute : 属性定义
SKU "1" --> "0..*" InventoryLog : 库存变更记录
Category "1" --> "0..*" Category : 层级结构
note for Product "状态管理:\n- 上架/下架\n- 审核状态\n- 推荐状态"
note for SKU "规格示例:\n颜色: 红/蓝/黑\n尺寸: S/M/L/XL"
note for InventoryLog "操作类型:\n入库/出库/调整\n支持批次管理"
效果:

4、状态图(State Diagram)
应用场景:用于描述对象的状态变化和状态之间的转换,特别适合表示有限状态机(FSM)或复杂的状态逻辑。
特点:
- 支持状态(State)、事件(Event)和转换(Transition)的定义。
- 可表示并发状态、嵌套状态等。
DeepSeek指令:
针对库存,生成状态图,输出Mermaid格式。
输出代码:
sql
stateDiagram-v2
[*] --> Available: 初始状态
Available --> Reserved: 创建订单\n(预占库存)
Reserved --> Available: 订单取消/超时\n(释放库存)
Reserved --> Deducted: 支付成功\n(扣减库存)
Deducted --> ReturnPending: 发起退货\n(退货审核中)
ReturnPending --> Available: 退货完成\n(重新上架)
ReturnPending --> Scrapped: 质检不合格\n(报废处理)
Deducted --> Available: 未发货取消\n(特殊退款)
Scrapped --> [*]: 库存核销
ReturnPending --> Deducted: 驳回退货\n(维持扣减)
note left of Available: 可售库存池
note right of Deducted: 实际减少库存\n(影响在库数量)
note right of ReturnPending: 需走质检流程\n(3-5个工作日)
state 业务规则 {
预占时效: 30分钟未支付自动释放
安全库存: Available <阈值时\n触发采购预警
并发控制: 预占操作需加分布式锁
批次管理: 先进先出(FIFO)\n效期跟踪
}
效果:
5、实体关系图(Entity Relationship Diagram, ERD)
应用场景:用于数据库设计,描述实体(表)、属性(字段)和实体之间的关系(如一对一、一对多、多对多)。
特点:
- 支持实体、属性、主键、外键的定义。
- 可表示实体之间的关联关系。
DeepSeek指令:
针对用户和权限管理,生成ER图,输出Mermaid格式。
输出代码:
c
erDiagram
USER {
int user_id PK "用户ID"
string username "用户名"
string email "邮箱"
datetime created_at "创建时间"
}
ROLE {
int role_id PK "角色ID"
string role_code "角色编码"
string description "描述"
}
PERMISSION {
int perm_id PK "权限ID"
string perm_code "权限编码"
string resource "资源路径"
string action "操作类型"
}
USER_GROUP {
int group_id PK "组ID"
string group_name "组名称"
string inherit_mode "继承模式"
}
USER ||--o{ USER_ROLE : "分配"
ROLE ||--o{ ROLE_PERMISSION : "授权"
USER ||--o{ USER_GROUP_MEMBER : "隶属"
USER_GROUP ||--o{ GROUP_ROLE : "继承"
USER_ROLE {
int user_id FK "用户ID"
int role_id FK "角色ID"
datetime granted_at "授权时间"
}
ROLE_PERMISSION {
int role_id FK "角色ID"
int perm_id FK "权限ID"
string scope "作用域"
}
USER_GROUP_MEMBER {
int user_id FK "用户ID"
int group_id FK "组ID"
datetime joined_at "加入时间"
}
GROUP_ROLE {
int group_id FK "组ID"
int role_id FK "角色ID"
bool is_inheritable "可继承"
}
效果:
6、Git 图(Git Graph)
应用场景:用于展示代码仓库的提交历史和分支结构,特别适合团队协作中的代码管理。
特点:
- 支持提交(Commit)、分支(Branch)和合并(Merge)的定义。
- 可表示分支的创建和合并过程。
DeepSeek指令:
针对Git分支管理,生成Git图,输出Mermaid格式。
输出代码:
bash
gitGraph
commit id: "Initial"
branch develop
checkout develop
commit id: "Add core framework"
branch feature/login
checkout feature/login
commit id: "Implement auth service"
commit id: "Add 2FA support"
checkout develop
merge feature/login tag: "v0.1-auth" id: "Merge login feature"
branch release/v1.0
checkout release/v1.0
commit id: "Fix regression bugs" type: HIGHLIGHT
checkout main
merge release/v1.0 tag: "v1.0.0" id: "Production release"
checkout develop
merge release/v1.0 id: "Sync to develop"
branch hotfix/security-patch
checkout hotfix/security-patch
commit id: "Patch CVE-2023-xxx"
checkout main
merge hotfix/security-patch tag: "v1.0.1"
checkout develop
merge hotfix/security-patch
branch feature/payment
checkout feature/payment
commit id: "Add payment gateway"
commit id: "Implement refund flow"
checkout develop
merge feature/payment tag: "v1.1-pre" id: "Merge payment feature"
branch release/v1.1
commit id: "Final testing"
checkout main
merge release/v1.1 tag: "v1.1.0"
效果:
7、架构图(Architecture Diagrams)
应用场景:在云架构和CI/CD流程中,架构图常用于表示系统的整体架构和组件关系。
特点:支持服务(节点)和边(edges)的定义,可表示服务之间的连接和组织方式。
示例:
scss
architecture-beta
group api(cloud)[API]
service db(database)[Database] in api
service disk1(disk)[Storage] in api
service disk2(disk)[Storage] in api
service server(server)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
效果:

8、数据包图(Packet Diagram)
应用场景:在网络通信和协议设计中,数据包图常用于表示数据包的结构和字段。
特点:支持数据包结构和字段的定义,可表示网络数据包的传输过程。
示例:
yaml
---
title: "TCP Packet"
---
packet-beta
0-15: "Source Port"
16-31: "Destination Port"
32-63: "Sequence Number"
64-95: "Acknowledgment Number"
96-99: "Data Offset"
100-105: "Reserved"
106: "URG"
107: "ACK"
108: "PSH"
109: "RST"
110: "SYN"
111: "FIN"
112-127: "Window"
128-143: "Checksum"
144-159: "Urgent Pointer"
160-191: "(Options and Padding)"
192-255: "Data (variable length)"
效果:

9、块状图(Block diagrams)
应用场景:在工程、软件开发和流程管理中,块状图常用于表示系统的组件和关系。
特点:由块状元素和连接符组成,可表示系统的基本组件和流向。
示例:
scss
block-beta
columns 1
db(("DB"))
blockArrowId6<[" "]>(down)
block:ID
A
B["A wide one in the middle"]
C
end
space
D
ID --> D
C --> D
style B fill:#969,stroke:#333,stroke-width:4px
效果:
