Files
gen2d/docs/prompts/backend-architecture-prompt.md
T
wonder 8ac039ef38 docs: 添加全局/后端/前端架构图生成提示词
新增三个多模态 AI 架构图提示词文件,分别对应全局系统架构、
后端分层与管线、前端组件树与数据流的可视图生成。
2026-05-25 20:52:59 +08:00

6.8 KiB
Raw Blame History

后端架构图 — 文生图提示词

你是一位技术架构可视化专家。请根据以下描述,生成一张 gen2d 后端架构详图,风格:技术文档风格,白色或浅灰背景,清晰的层次关系和连线。

标题

gen2d Backend Architecture (Go + Gin + Eino)

整体布局

自上而下的分层架构图,共 5 层。


第 1 层:入口 (Entry Point)

cmd/main.go → 初始化 Config → 初始化 Logger → 初始化 DB → 注册路由 → 启动 HTTP Server (:8080)

用横向箭头串联的流程表示。


第 2 层:HTTP 层 (Handler + Middleware)

分为两个子块并排放置:

左块:Middlewares (中间件链)

三个中间件纵向排列,用向下箭头串联:

  1. Logger Middleware — 生成 X-Request-ID,记录 method/path/status/latency
  2. Auth Middleware — JWT Bearer Token 校验,注入 UserID 到 context
  3. Recovery Middleware — Panic 恢复 + 堆栈日志

右块:Handlers (路由处理)

按路由分组展示:

路由前缀 Handler 说明
/health health.go 健康检查
/auth/* register.go, login.go 认证(独立路径)
/api/v1/projects/* project handlers 工程 CRUD + 风格管理
/api/v1/generate generate.go 提交生成任务
/api/v1/tasks/* task handlers 任务查询 + 素材获取
/api/v1/prompt/* prompt.go 提示词优化
/api/v1/assets/* storage.go 素材下载 (302 重定向)

在 Handler 块内用小字标注:"薄层: 仅参数绑定 + 校验 + 调用 Service + 返回统一响应"


第 3 层:Service 层 (核心业务逻辑)

这是整个图的核心区域,占比最大。分为四个子块:

3a. Pipeline 编排 (pipeline.go)

用流程图展示 Eino compose.Graph 的节点编排:

        ┌─────────────────┐
        │  PipelineInput  │  (user prompt + assetType + styles + params)
        └────────┬────────┘
                 ▼
     ┌──────────────────────┐
     │ ① PromptOptimizer   │  合并工程风格 + 任务风格覆盖
     │   输出: 三段式提示词   │  调用 LLM 生成规范化提示词
     └──────────┬───────────┘
                 ▼
     ┌──────────────────────┐
     │ ② AssetGenerator    │  OpenAI 兼容接口 /v1/images/generations
     │   输出: 原始图片列表   │  支持多图生成 (n 参数)
     └──────────┬───────────┘
                 ▼
     ┌──────────────────────┐
     │ ③ QualitySupervisor │  视觉模型检查风格一致性
     │   输出: pass / fail  │
     └──────┬──────┬────────┘
            │      │
         pass     fail (retry < 3) ──→ 回到 ① (RejectReason 回填)
            │      │
            │      fail (retry ≥ 3) ──→ 降级输出 ↓
            ▼                        │
     ┌──────────────────────┐        │
     │ ④ FormatAdapter     │ ◄──────┘
     │   spritesheet 打包    │
     │   上传七牛云 + 写 DB   │
     └──────────┬───────────┘
                 ▼
        ┌──────────────────┐
        │  PipelineOutput  │  (assets[] + metadata)
        └──────────────────┘

3b. 节点实现 (nodes.go)

四个节点用一个表格或四个小卡片展示,每个卡片包含:

  • 节点名称
  • Lambda 输入 → 输出 类型签名
  • StatePreHandler / StatePostHandler 交互说明
节点 输入 → 输出 State 交互
PromptOptimizer PipelineInput → string Pre: 注入 RejectReason; Post: 写 FinalPrompt
AssetGenerator string → []Image Post: 写 RawImages
QualitySupervisor []Image → bool Post: 写 PassQuality, RejectReason, RetryCount
FormatAdapter []Image → PipelineOutput 无 State 交互,直接输出

3c. 类型定义 (types.go)

一个小卡片展示三个核心结构体的字段:

  • PipelineInput:Prompt, AssetType, ProjectStyle, TaskStyle, Params
  • PipelineState:Input, FinalPrompt, RawImages, PassQuality, RejectReason, RetryCount
  • PipelineOutput:Assets[], Metadata

3d. 辅助 Service

并排两个小块:

  • auth.go:注册 / 登录 / JWT 签发 (HS256) / Token 校验
  • storage.go:七牛云上传 (token 鉴权) / 下载 URL 生成 / 删除
  • inference.go:AI API 调用封装 (文生图 + 图片编辑)
  • prompt_agent.go:LLM 提示词优化 Agent (OpenAI 兼容 Chat Completions, 含回退模板)

第 4 层:数据访问层

  • db.go:GORM SQLite 连接初始化 + 自动建表 (CREATE TABLE IF NOT EXISTS)
  • cache.go:sync.Map 内存缓存,用于请求去重 (hash → taskId)
  • config.go:环境变量读取 + 配置结构体

第 5 层:外部依赖 (底部并排)

  1. SQLite (data/gen2d.db)

    • 5 张表:user, project, project_style, task, asset
    • ER: user 1→N project 1→1 project_style, project 1→N task 1→N asset
    • 全部 CASCADE 删除
  2. 七牛云 Kodo

    • Bucket 存储 Key 格式:users/{uid}/projects/{pid}/tasks/{tid}/output/{file}
    • CDN URL + 签名参数 (默认 3600s 过期)
  3. LLM API (外部)

    • OpenAI 兼容 /v1/images/generations — 文生图
    • OpenAI 兼容 /v1/chat/completions — 提示词优化
    • 可替换模型提供商

色彩与排版指南

  • 标题横幅:深蓝 (#1E3A5F),白色文字

  • 第 2 层 (Handler):浅蓝 (#E8F4FD),深蓝边框

  • 第 3 层 (Service):浅绿 (#E6F7EE),深绿边框 — 这是核心层,用稍大的面积

  • 管线节点:用不同深浅绿色区分:

    • ① 浅绿 #D1FAE5
    • ② 中绿 #A7F3D0
    • ③ 中绿 #6EE7B7
    • ④ 深绿 #34D399
  • 第 4 层 (Data):浅黄 (#FEF3C7),深黄边框

  • 第 5 层 (External):浅灰 (#F3F4F6),深灰边框

  • 箭头颜色:

    • 正常流程:实线 绿色
    • 重试/回退:虚线 橙色
    • 降级路径:虚线 红色
  • 文字:sans-serif,英文为主,括号内中文辅助说明

  • 所有框使用圆角 (border-radius: 8px)

  • 层与层之间用虚线分隔,标注层名称在左侧

附加约束

  • 保持技术文档风格,干净利落
  • 所有组件名称与代码库中的实际命名一致 (pipeline.go, nodes.go, types.go 等)
  • 画面比例 3:4 或 A4 竖版比例,适合放入文档
  • 不要使用 3D 效果或过度装饰