8ac039ef38
新增三个多模态 AI 架构图提示词文件,分别对应全局系统架构、 后端分层与管线、前端组件树与数据流的可视图生成。
6.7 KiB
6.7 KiB
前端架构图 — 文生图提示词
你是一位前端架构可视化专家。请根据以下描述,生成一张 gen2d 前端架构详图,风格:现代前端技术文档风格,深色主题,组件树 + 数据流 + 路由三重展示。
标题
gen2d Frontend Architecture (Vite + React + TypeScript + zustand)
整体布局
分为三个主要区域,从左到右排列:
左区:路由与页面层 (Router & Pages)
Router 入口
- react-router-dom v6 (BrowserRouter, SPA 模式)
- ProtectedRoute 守卫组件 (检查 token,未登录重定向 /login)
页面路由表
用路由匹配图展示:
/ → HomePage (项目画廊)
/login → LoginPage (登录)
/register → RegisterPage (注册)
/projects/:projectId → ProjectDetailPage (三栏工作台)
/projects/:projectId/tasks/:taskId → ResultPage (素材预览)
页面层级关系
App
└─ Layout (Navbar + Outlet + ToastContainer)
├─ HomePage
│ ├─ ProjectCard (画廊卡片) × N
│ └─ CreateProjectModal (新建弹窗)
├─ ProjectDetailPage (三栏 CSS Grid)
│ ├─ [左栏 260px] ProjectConfigPanel
│ ├─ [中间 1fr] GenerateForm + ProgressBar
│ └─ [右栏 320px] TaskListPanel
└─ ResultPage
└─ AssetPreview
中区:状态管理 & 数据流 (State Management)
zustand Stores (7 个)
用 7 个卡片网格展示,每个卡片包含 Store 名称、核心状态字段、主要 Action:
| Store | 核心 State | 主要 Actions | 消费组件 |
|---|---|---|---|
| auth | user, token, isAuthenticated | login, register, logout | Layout, ProtectedRoute, LoginPage |
| projectList | projects[], loading | loadProjects, createProject, deleteProject | HomePage |
| project | projectId, name, style, draftStyle, draftName, hasUnsavedChanges | loadProject, startEditing, updateDraft, commitDraft, discardDraft | ProjectConfigPanel, ProjectDetailPage |
| task | prompt, assetType, taskStyle, params, enableAI, optimizedPrompt | setters, runOptimize, reset | GenerateForm |
| generation | taskId, stage, progress, status, retryCount, assets[], error | submit, reset | ProgressBar, GenerateForm, ResultPage |
| theme | mode (light/dark) | toggle | Layout (全局主题切换) |
| toast | toasts[] | addToast, removeToast | ToastContainer |
数据流方向
在组件和 Store 之间画出单向数据流箭头:
- 组件 → Store:dispatch action (用户交互)
- Store → 组件:useStore selector 订阅,自动重渲染
- Store → API:调用 api/ 封装层
- API → Store:响应数据写入 state
风格编辑流程 (Draft/Commit 模式)
用一个小流程图展示:
startEditing() → copy style → draftStyle
↓
updateDraft(key, value) → draftStyle 变更 → hasUnsavedChanges = true
↓
┌─ commitDraft() → PUT /api/v1/projects/:id/style → style = draftStyle → hasUnsavedChanges = false
└─ discardDraft() → draftStyle = style → hasUnsavedChanges = false
右区:组件树 & 交互流程 (Components & Interactions)
组件依赖树
Layout
├── Navbar (logo + 导航 + 用户菜单)
└── ToastContainer
└── ToastItem × N
HomePage
├── ProjectCard (缩略图 + 名称 + 任务数 + 最近活动)
└── CreateProjectModal
├── StyleSelector (预设风格 pill 按钮)
└── CustomTagsEditor (添加/删除自定义标签)
ProjectDetailPage (CSS Grid: 260px 1fr 320px)
├── [左栏] ProjectConfigPanel
│ ├── 工程名 (可编辑 input)
│ ├── StyleSelector (全量风格编辑)
│ ├── CustomTagsEditor
│ └── 保存/取消 按钮 (hasUnsavedChanges 控制)
├── [中间] 生成区域
│ ├── GenerateForm
│ │ ├── 素材类型选择 (sprite / background / ui / animation)
│ │ ├── StyleSelector (任务覆盖,仅记录差异)
│ │ ├── PromptEditor (文本输入)
│ │ ├── 技术参数 (分辨率 / 帧数 / 格式)
│ │ └── 提交按钮 + AI 优化按钮
│ └── ProgressBar (提交后显示)
│ └── 四阶段进度条 (prompt_builder → asset_generator → quality_supervisor → format_adapter)
└── [右栏] TaskListPanel
├── StatusBadge (状态标签: pending/running/completed/failed)
├── TaskItem × N (点击跳转 ResultPage)
└── 自动刷新 (15s 间隔)
ResultPage
└── AssetPreview
├── 图片预览 (带帧信息标注)
├── 元数据展示 (分辨率/帧数/方向数/格式)
└── 下载按钮 (GET /api/v1/assets/download?key=...)
生成任务交互流程 (时序简化)
User → GenerateForm (填写 prompt + 选择类型 + 参数) → [提交]
→ POST /api/v1/generate → taskId
→ generation store: status=running
→ ProgressBar 显示
→ 轮询 GET /api/v1/tasks/:taskId (每 1.5s)
→ 更新 stage + progress
→ status=completed
→ GET /api/v1/tasks/:taskId/assets
→ 显示 "查看结果" → 跳转 ResultPage
API 封装层结构 (api/)
在底部用一个窄条展示:
api/
├── client.ts — fetch 封装 (统一错误处理, JSON 解包, Bearer Token 注入)
├── auth.ts — login(), register()
├── project.ts — listProjects(), createProject(), getProject(), updateProject(), deleteProject()
├── generate.ts — submitGenerate(), getTask(), getTaskAssets()
├── prompt.ts — optimizePrompt(), extractTags()
├── mock.ts — 多工程 Mock 数据 (开发用)
└── types.ts — Project, Task, Asset, User 等类型定义
色彩与排版指南
- 背景:深色 (#1a1a2e 或 #0f172a)
- 左区 (Router):紫色调 (#8B5CF6 / #7C3AED),紫色边框
- 中区 (State):青色调 (#06B6D4 / #0891B2),青色边框
- 右区 (Components):绿色调 (#10B981 / #059669),绿色边框
- API 层:橙色调 (#F59E0B)
- 组件框:半透明背景 + 彩色左边框
- 箭头:白色或浅灰 (#94A3B8),实线 = 同步,虚线 = 异步
- 文字:白色为主 (#F8FAFC),次要文字浅灰 (#94A3B8)
- Store 卡片:微亮边框,内部字段用等宽字体
- 所有框使用圆角 (border-radius: 6px)
- 区域标题用较大的加粗字体 + 左侧色条
附加约束
- 所有组件名、Store 名、文件名与代码库保持一致
- 中文用于辅助标注(括号内),英文为主要标注
- 避免拥挤,分区之间留白充分
- 画面比例 16:9 或更宽,适合横屏展示
- 不要使用 3D 效果