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

181 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 后端架构图 — 文生图提示词
你是一位技术架构可视化专家。请根据以下描述,生成一张 **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 效果或过度装饰