ADD file via upload

This commit is contained in:
yuzhantian 2026-06-01 10:21:08 +08:00
parent 132e17d52c
commit e64b4100c2
1 changed files with 400 additions and 0 deletions

400
usage-guide.md Normal file
View File

@ -0,0 +1,400 @@
# SuperDS 网站生成流程使用指南
## 概述
本文档描述如何使用 SuperDS 平台从角色切换开始,到最终生成并调优网站源码的完整流程。整个流程分为 **6 个主步骤**(其中第 6 步含手动/自动两个并行分支),对应前端代码中的具体组件和数据流。
---
## 流程图
```
┌─────────────────────────────────────────────────────────────────────┐
│ 第 1 步:进入项目,切换角色到"设计师" │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 路由: /projects/:orgId/:repoName │ │
│ │ 组件: RoleSwitcher (左侧工具栏) │ │
│ │ 状态: EditorContext.currentRole = "designer" │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────┐
│ 第 2 步:点击「原型库」检查原型文件 │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 组件: PrototypeLibrary (左侧工具栏 → src/pages/design/ │ │
│ │ _components/leftToolbar/PrototypeLibrary.tsx) │ │
│ │ 数据源: API 返回的 wireframes (来自 PM 阶段 WireframeEditor) │ │
│ │ 状态: EditorContext.prototypes[] │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ 有原型文件? 无原型文件? │
│ │ │ │
│ ●──→ 继续第 3 步 切换角色到"产品经理" │
│ 路由: /projects/:orgId/:repoName/product
│ 组件: ProductPage
│ 流程: MindMap → PageFlow → Wireframe
│ 完成后导出原型 → 切回设计师
│ ▼
┌─────────────────────────────────────────────────────────────────────┐
│ 第 3 步:在 AI 助手输入 /web-design-summary + 简要描述 │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 组件: AIAssistant + InputArea + SlashCommandPanel │ │
│ │ 文件: │ │
│ │ - src/pages/design/_components/ai/AIAssistant.tsx │ │
│ │ - src/pages/design/_components/ai/InputArea.tsx │ │
│ │ - src/pages/design/_components/ai/SlashCommandPanel.tsx │ │
│ │ COMMAND_LIST: aiUtils.ts (line 16-19) │ │
│ │ │ │
│ │ 示例输入: /web-design-summary 帮我生成一个宝马汽车的官网 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
┌─────────────────────────────────────────────────────────────────────┐
│ 第 4 步:与 AI 对话获取设计宣言 + 设计模板列表 │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 技能文件: web-design-summary-SKILL.md │ │
│ │ 位置: src/assets/skill/web-design-summary-SKILL.md │ │
│ │ 技能解析: skillLoader.ts → resolveCommandTags() │ │
│ │ │ │
│ │ AI 执行 4 维度分析: │ │
│ │ ① 行业分析 (Industry Analysis) │ │
│ │ ② 风格分析 (Style Analysis) │ │
│ │ ③ 氛围分析 (Atmosphere Analysis) │ │
│ │ ④ 布局分析 (Layout Analysis) │ │
│ │ │ │
│ │ 输出: │ │
│ │ • 设计宣言 (Design Declaration / web-design-summary) │ │
│ │ • 设计模板列表 (从 workspace /web/ 目录搜索模板文件) │ │
│ │ │ │
│ │ 用户动作: 回答 AI 可能的追问,确认后获得模板列表 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
┌─────────────────────────────────────────────────────────────────────┐
│ 第 5 步:调用 /web-creator 生成网页源码 │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 组件: AIAssistant + InputArea │ │
│ │ 技能文件: web-creator-SKILL.md │ │
│ │ 位置: src/assets/skill/web-creator-SKILL.md │ │
│ │ 技能解析: skillLoader.ts → resolveCommandTags() │ │
│ │ │ │
│ │ 输入参数 (3 个): │ │
│ │ ① 设计渲染 (来自第 4 步的设计宣言) │ │
│ │ ② 设计模板 (第 4 步模板列表中用户选中的模板文件路径) │ │
│ │ ③ 原型文件 (第 2 步 PrototypeLibrary 中选中的 wireframe) │ │
│ │ │ │
│ │ 处理流程: │ │
│ │ ① 根据模板 path 读取设计规格 (颜色、字体等 via design.md) │ │
│ │ ② 基于设计规格 + 原型结构生成网页源码 │ │
│ │ ③ 输出到 output/ 目录 │ │
│ │ │ │
│ │ 输出: 完整网页源文件 (HTML/CSS/JS) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
┌─────────────────────────────────────────────────────────────────────┐
│ 第 6 步:网站源码调优 (两个并行路径可交替使用) │
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ 6.1 手动 CSS 修改 │ │ 6.2 AI 自动修改 │ │
│ │ │ │ │ │
│ │ 组件: CSSEditor │ │ 组件: NoteEditor │ │
│ │ 文件: CSSEditor.tsx │ │ 文件: NoteEditor.tsx│ │
│ │ │ │ │ │
│ │ 操作流程: │ │ 操作流程: │ │
│ │ ① Canvas 中选中 │ │ ① Canvas 中选中 │ │
│ │ 页面元素 │ │ 页面元素 │ │
│ │ ② 左侧 CSSEditor │ │ ② 左侧 NoteEditor │ │
│ │ 面板显示该元素 │ │ 面板展开 │ │
│ │ 的 CSS 属性 │ │ ③ 编写标注/修改指令 │ │
│ │ ③ 调整 CSS 属性值 │ │ (如:按钮加宽、 │ │
│ │ ④ 保存 → Canvas │ │ 标题改为粗体等) │ │
│ │ 实时渲染 │ │ ④ 发送指令 → │ │
│ │ │ │ AIAssistant 接收 │ │
│ │ │ │ 结合 notes[] 状态 │ │
│ │ │ │ 调用 AI 重新生成 │ │
│ │ │ │ 对应模块的源码 │ │
│ └─────────────────────┘ └─────────────────────┘ │
│ │ │ │
│ └───────────┬─────────────────────┘ │
│ │ │
│ ▼ │
│ 完成调优 → 导出/部署网页 │
└─────────────────────────────────────────────────────────────────────┘
```
---
## 详细步骤说明
### 第 1 步:角色切换
**目标**:将当前用户角色设置为"设计师 (designer)"以进入设计工作区。
| 项目 | 说明 |
|------|------|
| **组件** | `RoleSwitcher` |
| **文件路径** | `frontend/src/pages/design/_components/leftToolbar/RoleSwitcher.tsx` |
| **状态存储** | `EditorContext.currentRole` |
| **支持角色** | `pm` (产品经理) / `designer` (设计师) / `developer` (开发者) / `tester` (测试员) |
| **路由映射** | `designer``/projects/:orgId/:repoName` (DesignPage) / `pm``/projects/:orgId/:repoName/product` (ProductPage) |
**操作流程**
1. 进入项目页面后,在左侧工具栏找到角色切换器
2. 选择 "设计师" 角色
3. 页面自动跳转至设计工作区 (DesignPage)
---
### 第 2 步:原型库检查
**目标**:确认 PM 阶段是否已输出 wireframe原型文件作为后续网页生成的基础素材。
| 项目 | 说明 |
|------|------|
| **组件** | `PrototypeLibrary` |
| **文件路径** | `frontend/src/pages/design/_components/leftToolbar/PrototypeLibrary.tsx` |
| **数据源** | 通过 API 获取 wireframes来自 PM 阶段的 WireframeEditor 导出) |
**操作流程(有原型文件)**
1. 点击左侧工具栏的「原型库」按钮
2. 查看原型文件列表
3. 选择一个原型文件作为参考
4. 继续进行第 3 步
**操作流程(无原型文件 — 需要先做 PM 阶段)**
1. 原型库为空时,切换角色到"产品经理"
2. 路由自动跳转至 `/projects/:orgId/:repoName/product` (ProductPage)
3. 依次完成 PM 阶段 3 个子流程:
- **MindMap**:绘制思维导图,确定产品功能结构
- **PageFlow**:设计页面流转关系(页面流程图)
- **Wireframe**:绘制线框原型
4. 导出 wireframe 后,切回"设计师"角色,重复本步骤
---
### 第 3 步:输入设计指令
**目标**:通过 AI 助手启动设计分析流程。
| 项目 | 说明 |
|------|------|
| **组件** | `AIAssistant` + `InputArea` + `SlashCommandPanel` |
| **文件路径** | `frontend/src/pages/design/_components/ai/AIAssistant.tsx` |
| **命令定义** | `COMMAND_LIST``frontend/src/utils/aiUtils.ts` (第 16-19 行) |
**可用命令**
| 命令 | 描述 |
|------|------|
| `/web-design-summary` | 生成网页设计宣言并检索相似模板 |
| `/web-creator` | 根据需求文档生成网页源码 |
**操作流程**
1. 点击设计工作区右侧的 AI 助手图标打开 AI 侧边栏
2. 在输入框中输入 `/` 触发命令面板 (`SlashCommandPanel`)
3. 选择 `/web-design-summary`
4. 输入网站简要描述
**示例输入**
```
/web-design-summary 帮我生成一个宝马汽车的官网
```
**技术细节**
- `resolveCommandTags()` (`skillLoader.ts`) 在发送消息前将 `/web-design-summary` 替换为技能文件 `web-design-summary-SKILL.md` 的内容
- 技能文件定义了 4 维度分析框架
- 消息通过 `aiApi.sendMessage()` 发送给后端 AI流式返回
---
### 第 4 步:获取设计宣言与模板列表
**目标**:与 AI 对话完成设计分析,获得可执行的设计方案。
| 项目 | 说明 |
|------|------|
| **技能文件** | `web-design-summary-SKILL.md` |
| **文件路径** | `frontend/src/assets/skill/web-design-summary-SKILL.md` |
| **分析维度** | 行业分析、风格分析、氛围分析、布局分析 |
| **模板搜索** | 从 workspace `/web/` 目录搜索模板文件 |
**AI 执行流程**
```
┌──────────────────────────────────────────────┐
│ 4 维度分析 │
│ │
│ 行业分析 → 目标行业特征、竞品分析 │
│ 风格分析 → 视觉风格倾向、品牌调性 │
│ 氛围分析 → 情感氛围、用户体验基调 │
│ 布局分析 → 页面布局模式、信息层级结构 │
│ │ │
│ ▼ │
│ 输出 1: 设计宣言 (Design Declaration) │
│ → web-design-summary 文件 │
│ 输出 2: 模板列表 │
│ → 从 workspace/web/ 目录匹配模板文件 │
│ │
│ AI 可能追问: │
│ ・品牌主色调是否有偏好? │
│ ・目标用户群体? │
│ ・参考网站风格? │
│ │
│ 用户回答后 → 获得最终模板列表 │
└──────────────────────────────────────────────┘
```
**用户动作**
1. 查看 AI 返回的设计分析结果
2. 回答 AI 可能的追问以细化需求
3. 确认获得:
- **设计宣言**:完整的网页设计方案描述
- **模板列表**:匹配的 wireframe/template 文件路径列表
4. 从模板列表中选择一个模板(记录其文件路径)
---
### 第 5 步:生成网页源码
**目标**:结合设计宣言、选中模板、原型文件,通过 AI 自动生成完整网页源码。
| 项目 | 说明 |
|------|------|
| **技能文件** | `web-creator-SKILL.md` |
| **文件路径** | `frontend/src/assets/skill/web-creator-SKILL.md` |
| **输入参数** | 设计宣言路径 + 模板文件路径 (来自第 4 步) + 原型文件路径 (来自第 2 步) |
**操作流程**
1. 在 AI 助手输入框输入 `/web-creator`
2. 系统自动替换为技能文件内容(`resolveCommandTags()`
3. 补充输入 3 个参数路径:
- **设计渲染 (设计宣言路径)**:第 4 步生成的 `web-design-summary` 文件路径
- **设计模板 (选中的)**:第 4 步模板列表中选择的模板文件路径
- **原型文件**:第 2 步 PrototypeLibrary 中选中的 wireframe 路径
4. AI 执行处理:
- 根据模板路径读取对应的 `design.md`(颜色、字体等设计规范)
- 基于设计规范 + 原型结构生成完整网页源码
- 输出到 `output/` 目录
**技术细节**
- 技能文件定义了代码生成规范和输出格式
- 生成的文件可通过 Canvas 区域预览
- 状态 `hasEditChange` (EditorContext) 标记源码变更
---
### 第 6 步:网站源码调优
**目标**:对 AI 生成的网页源码进行精细化调优。提供手动和自动两个并行路径,可交替使用。
#### 6.1 手动 CSS 修改
| 项目 | 说明 |
|------|------|
| **组件** | `CSSEditor` |
| **文件路径** | `frontend/src/pages/design/_components/leftToolbar/CSSEditor.tsx` |
**操作流程**
1. 在 Canvas 区域点击选中需要修改的页面元素
2. 左侧工具栏自动切换至「CSS 编辑器」标签
3. CSSEditor 面板展示该元素的所有 CSS 属性
4. 直接修改属性值(颜色、尺寸、间距、字体等)
5. 保存修改 → Canvas 实时渲染更新
**适用场景**
- 精确控制单个元素的样式细节
- 需要微调间距、颜色、边框等视觉属性
- 对 AI 生成结果做局部调整
---
#### 6.2 AI 自动修改
| 项目 | 说明 |
|------|------|
| **组件** | `NoteEditor` |
| **文件路径** | `frontend/src/pages/design/_components/leftToolbar/NoteEditor.tsx` |
| **状态** | 修改指令存储在 `EditorContext.notes[]` 中 |
**操作流程**
1. 在 Canvas 区域选中需要修改的元素或元素组合
2. 左侧工具栏切换至「标注编辑器」标签
3. 在 NoteEditor 中编写修改指令,例如:
- "将按钮宽度加宽到 200px"
- "标题改为粗体、加大字号"
- "增加 section 间距至 60px"
4. 发送指令 → AIAssistant 接收请求
5. AI 结合当前 `notes[]` 状态和选中元素上下文,重新生成对应模块的源码
6. 查看 AI 返回的修改结果
**适用场景**
- 需要结构性修改(增加/删除元素、改变布局)
- 批量修改多个元素的统一样式
- 复杂的设计意图描述
---
## 组件依赖关系总览
```
┌─────────────────────────────────────────────────┐
│ DesignPage (主页面) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
│ │Left │ │ Canvas │ │ AI │ │
│ │Toolbar │ │ Area │ │ Assistant │ │
│ │ │ │ │ │ │ │
│ │Role │ │ 网页预览 │ │ 聊天界面 │ │
│ │Switcher │ │ │ │ │ │
│ │ │ │ │ │ InputArea │ │
│ │Prototype │ │ │ │ │ │
│ │Library │ │ │ │ SlashCmd Pn │ │
│ │ │ │ │ │ │ │
│ │Note │ │ │ │ Model │ │
│ │Editor │ │ │ │ Selector │ │
│ │ │ │ │ │ │ │
│ │CSS │ │ │ │ SessionMgr │ │
│ │Editor │ │ │ │ │ │
│ └──────────┘ └──────────┘ └─────────────┘ │
│ │
│ ┌──────────────────────┐ │
│ │ PageListView │ │
│ │ (页面/文件列表管理) │ │
│ └──────────────────────┘ │
└─────────────────────────────────────────────────┘
状态共享层: EditorContext
├── currentRole (当前角色: pm/designer/dev/tester)
├── selectedElement (Canvas 中选中的元素)
├── notes[] (标注编辑记录)
└── hasEditChange (源码变更标记)
```
---
## 路由与页面映射
| 路由 | 页面 | 阶段 | 核心功能 |
|------|------|------|----------|
| `/projects/:orgId/:repoName` | `DesignPage` | 设计师阶段 | 完整的网站设计与调优工作区 |
| `/projects/:orgId/:repoName/product` | `ProductPage` | 产品经理阶段 | 思维导图 + 页面流程 + 线框原型 |
---
## 常见问题
**Q模板列表为空怎么办**
A在 PM 阶段完成 Wireframe 编辑后导出原型文件,模板列表会自动出现。
**Q设计宣言与模板列表在哪里查看**
A在 AI 对话记录中查看,模板列表中的每条记录包含文件路径,可点击导航到 PrototypeLibrary 中查看对应原型。
**QCSS 编辑器修改和 AI 修改能同时使用吗?**
A可以。两种修改方式共享同一个 Canvas 预览和 EditorContext 状态。先使用哪种方式不影响另一种的使用。
**Q生成失败怎么办**
A可回到之前的步骤重新调整输入参数。例如重新选择模板、补充设计描述、或在 NoteEditor 中给出更精确的修改指令。