🎨 Diagram Generator

系统架构图 & 数据库 ER 图自动生成引擎

✨ Mermaid 支持 📊 PlantUML 支持 🖼️ SVG 支持 🚀 一键生成

核心功能

🏗️ 架构图自动生成

基于技术方案自动识别架构模式(微服务/分层/事件驱动),生成专业的系统架构图,清晰展示系统组件和调用关系。

🗄️ ER 图自动生成

根据数据库设计方案,自动生成实体关系图,包含表结构、字段类型、主外键约束和表间关系。

📁 多格式输出

支持 Mermaid、PlantUML、SVG 三种主流格式,可在 GitHub、GitLab、Notion 等平台直接渲染查看。

⚡ 智能识别

自动识别架构类型,智能布局优化,支持自定义样式配置,满足不同场景的可视化需求。

架构图示例

微服务架构图 (Mermaid)
graph TB %% 样式定义 classDef client fill:#e1f5ff,stroke:#0066cc,stroke-width:2px; classDef gateway fill:#fff3cd,stroke:#ff9800,stroke-width:2px; classDef service fill:#e8f5e9,stroke:#4caf50,stroke-width:2px; classDef database fill:#f3e5f5,stroke:#9c27b0,stroke-width:2px; classDef mq fill:#ffebee,stroke:#f44336,stroke-width:2px; classDef cache fill:#e0f2f1,stroke:#009688,stroke-width:2px; subgraph ClientLayer[客户端层] Web[Web 浏览器]:::client Mobile[移动 App]:::client API_Client[第三方 API]:::client end subgraph GatewayLayer[API 网关层] API_Gateway[Kong Gateway]:::gateway LB[负载均衡]:::gateway end subgraph ServiceLayer[微服务层] UserSvc[用户中心]:::service ProductSvc[商品服务]:::service OrderSvc[订单服务]:::service PaymentSvc[支付服务]:::service LogisticsSvc[物流服务]:::service RecommendSvc[推荐引擎]:::service end subgraph MiddlewareLayer[中间件层] MQ[Apache Kafka]:::mq Cache[Redis Cluster]:::cache end subgraph DataLayer[数据层] PrimaryDB[(主数据库)]:::database ReplicaDB[(从数据库)]:::database ObjectStore[(对象存储)]:::database end %% 连接关系 Web --> LB Mobile --> LB API_Client --> LB LB --> API_Gateway API_Gateway --> UserSvc API_Gateway --> ProductSvc UserSvc --> MQ ProductSvc --> MQ UserSvc --> Cache ProductSvc --> Cache UserSvc --> PrimaryDB ProductSvc --> PrimaryDB PrimaryDB -.-> ReplicaDB UserSvc --> ObjectStore
分层架构图 (Mermaid)
graph TB %% 样式定义 classDef presentation fill:#e3f2fd,stroke:#1976d2,stroke-width:2px; classDef business fill:#e8f5e9,stroke:#388e3c,stroke-width:2px; classDef persistence fill:#fff3e0,stroke:#f57c00,stroke-width:2px; classDef infrastructure fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px; subgraph Presentation[表现层] Controller[控制器层]:::presentation View[视图层]:::presentation Filter[过滤器/拦截器]:::presentation end subgraph Business[业务逻辑层] Service[服务层]:::business Manager[业务管理器]:::business Validator[数据验证器]:::business end subgraph Persistence[数据访问层] DAO[DAO 层]:::persistence Repository[Repository]:::persistence Mapper[数据映射器]:::persistence end subgraph Infrastructure[基础设施层] Database[(数据库 MySQL)]:::infrastructure Cache[(缓存 Redis)]:::infrastructure FileSystem[文件系统]:::infrastructure end %% 调用关系 View --> Controller Controller --> Filter Filter --> Service Service --> Manager Manager --> Validator Service --> DAO Service --> Repository DAO --> Mapper Repository --> Mapper Mapper --> Database Service --> Cache Service --> FileSystem
Python 代码示例
from diagram_generator import ArchitectureDiagramGenerator # 准备技术方案数据 solution = { "project_name": "智能电商平台", "architecture_design": { "architecture_pattern": "微服务架构", "description": "基于微服务的电商平台架构" }, "technology_stack": { "backend_framework": "Spring Boot 3.x", "database": "MySQL 8.0", "cache": "Redis 7.0", "message_queue": "Kafka 3.5" }, "system_components": [ {"name": "用户中心", "type": "microservice"}, {"name": "商品服务", "type": "microservice"}, {"name": "订单服务", "type": "microservice"} ] } # 生成架构图 generator = ArchitectureDiagramGenerator() mermaid_code = generator.generate(solution, format='mermaid') plantuml_code = generator.generate(solution, format='plantuml') svg_content = generator.generate(solution, format='svg')

ER 图示例

电商平台数据库 ER 图
erDiagram %% 实体定义 users { bigint id "PK, NOT NULL" varchar(50) username "NOT NULL" varchar(100) email "NOT NULL" varchar(255) password_hash "NOT NULL" timestamp created_at "NOT NULL" } products { bigint id "PK, NOT NULL" varchar(200) name "NOT NULL" decimal(10,2) price "NOT NULL" int stock "NOT NULL" bigint category_id "FK" } orders { bigint id "PK, NOT NULL" bigint user_id "FK, NOT NULL" decimal(10,2) total_amount "NOT NULL" varchar(20) status "NOT NULL" timestamp created_at "NOT NULL" } orderitems { bigint id "PK" bigint order_id "FK" bigint product_id "FK" int quantity "NOT NULL" decimal(10,2) price "NOT NULL" } categories { bigint id "PK" varchar(100) name "NOT NULL" bigint parent_id "FK" } %% 关系定义 users --|{ orders : "一对多" orders --|{ orderitems : "一对多" products --|{ orderitems : "一对多" categories --|{ products : "一对多"
在线教育平台 ER 图
erDiagram %% 实体定义 students { bigint id "PK, NOT NULL" varchar(20) student_no "NOT NULL" varchar(50) name "NOT NULL" varchar(100) email "NOT NULL" date enrollment_date "" } courses { bigint id "PK" varchar(20) course_code "NOT NULL" varchar(200) title "NOT NULL" bigint teacher_id "FK" decimal(3,1) credits "" } teachers { bigint id "PK" varchar(20) teacher_no "NOT NULL" varchar(50) name "NOT NULL" varchar(50) title "" varchar(100) department "" } enrollments { bigint id "PK" bigint student_id "FK, NOT NULL" bigint course_id "FK, NOT NULL" timestamp enroll_time "" decimal(5,2) grade "" } %% 关系定义 teachers --|{ courses : "授课" students --|{ enrollments : "选课" courses --|{ enrollments : "被选"
Python 代码示例
from diagram_generator import ERDiagramGenerator # 准备数据库设计数据 solution = { "project_name": "电商平台", "database_design": { "tables": [ { "table_name": "users", "columns": [ {"column_name": "id", "data_type": "BIGINT", "is_primary_key": True}, {"column_name": "username", "data_type": "VARCHAR(50)"}, {"column_name": "email", "data_type": "VARCHAR(100)"} ] }, { "table_name": "orders", "columns": [ {"column_name": "id", "data_type": "BIGINT", "is_primary_key": True}, {"column_name": "user_id", "data_type": "BIGINT", "is_foreign_key": True} ] } ], "relationships": [ {"from_table": "users", "to_table": "orders", "relationship_type": "1:N"} ] } } # 生成 ER 图 generator = ERDiagramGenerator() mermaid_er = generator.generate(solution, format='mermaid') print(mermaid_er)

格式对比

特性 Mermaid PlantUML SVG
GitHub 原生支持 直接渲染 ✗ 需插件 图片嵌入
Notion 支持 代码块 文件上传
GitLab 支持 直接渲染 图片嵌入
可定制性 中等 最高
文件大小 小 (文本) 小 (文本) 大 (XML)
推荐使用场景 文档、README 专业图表 演示、打印

API 参考

ArchitectureDiagramGenerator

generate生成架构图

参数: solution (dict), format (str: 'mermaid' | 'plantuml' | 'svg')

返回: str - 图表代码/内容

ERDiagramGenerator

generate生成 ER 图

参数: solution (dict), format (str: 'mermaid' | 'plantuml' | 'svg')

返回: str - 图表代码/内容

DiagramGenerator (统一入口)

generate_all_diagrams生成所有图表

参数: solution (dict), formats (list[str])

返回: dict - {'architecture_mermaid': ..., 'er_diagram_mermaid': ...}

save_diagrams保存图表到文件

参数: solution (dict), output_dir (str), project_name (str), formats (list[str])

返回: list[str] - 生成的文件路径列表

与 Backend Architect Agent 集成

在导出技术方案时自动生成图表

from backend_architect_agent import BackendArchitectAgent # 初始化 Agent agent = BackendArchitectAgent({ 'output_dir': './output' }) # 生成技术方案 solution = agent.generate_solution(prd_content, "项目名称") # 导出时自动生成架构图和 ER 图 output_files = agent.export_solution( solution, formats=['json', 'sql', 'openapi', 'markdown', 'diagrams'] ) # 输出: # - project_solution.json (完整方案) # - project_schema.sql (数据库脚本) # - project_openapi.yaml (API 文档) # - project_technical_solution.md (技术文档) # - project_architecture.mermaid (架构图) # - project_er_diagram.mermaid (ER 图)