[ SKILL_DOCUMENTATION ]
# C4 模型图
C4 模型提供了一种分层方式,用于在不同的抽象级别可视化软件架构:上下文(Context)、容器(Containers)、组件(Components)和代码(Code)。
## C4 模型级别
1. **系统上下文 (System Context)** - 展示系统及其用户/外部系统
2. **容器 (Container)** - 展示系统内的应用程序、数据库和服务
3. **组件 (Component)** - 展示容器的内部结构
4. **代码 (Code)** - 展示实现细节的类图(使用常规类图)
## C4 上下文图
展示全局视图:你的系统以及它与用户和外部系统的关系。
### 基本语法
mermaid
C4Context
title 银行系统上下文
Person(customer, "客户", "银行客户")
System(banking, "银行系统", "允许客户管理账户")
System_Ext(email, "电子邮件系统", "发送电子邮件")
Rel(customer, banking, "使用")
Rel(banking, email, "通过...发送邮件")
### 元素
**人员 (People):**
mermaid
C4Context
Person(user, "用户", "描述")
Person_Ext(external, "外部用户", "组织外部")
**系统 (Systems):**
mermaid
C4Context
System(internal, "内部系统", "描述")
System_Ext(external, "外部系统", "描述")
SystemDb(database, "数据库系统", "描述")
SystemDb_Ext(external_db, "外部数据库", "描述")
SystemQueue(queue, "消息队列", "描述")
SystemQueue_Ext(external_queue, "外部队列", "描述")
**关系 (Relationships):**
mermaid
C4Context
Rel(from, to, "标签")
Rel(from, to, "标签", "可选技术")
BiRel(system1, system2, "双向")
### 综合上下文示例
mermaid
C4Context
title 系统上下文 - 电子商务平台
Person(customer, "客户", "在线购物")
Person(admin, "管理员", "管理产品和订单")
Person_Ext(delivery, "配送人员", "配送订单")
System(ecommerce, "电子商务平台", "在线购物平台")
System_Ext(payment, "支付网关", "处理支付")
System_Ext(email, "邮件服务", "发送通知")
System_Ext(sms, "短信服务", "发送短信提醒")
System_Ext(analytics, "分析平台", "跟踪用户行为")
SystemQueue_Ext(shipping, "物流 API", "计算运费")
Rel(customer, ecommerce, "浏览产品,下单")
Rel(admin, ecommerce, "管理 c