主题
AI绘画 PRD
文档信息
| 项目 | 内容 |
|---|---|
| 产品名称 | PMForge - AI绘画 |
| 文档版本 | v2.0 |
| 创建日期 | 2026-09-22 |
| 最后更新 | 2026-09-24 |
| 文档状态 | 评审中 |
| 优先级 | P1 |
一、功能概述
1.1 功能定位
AI绘画是 PMForge AI 模块的核心创作子模块,为用户提供"文字变图片"的 AI 图像生成能力。
通俗理解:把它想象成一个"AI 画师工作室"。你用文字告诉画师"画一只星空下的狐狸",画师 1-3 分钟就能给你 4 张不同构图的成品。工作室里请了三位画师——Midjourney(擅长艺术风格)、Stability AI(开源可控)、DALL-E(OpenAI 出品),你可以指定哪位画师来画。除了"文字画画",还能"拿照片改画"(图生图)、"多张照片混搭"(/blend)、"看照片猜描述"(/describe)。画完的作品可以存进个人画廊,也可以分享到社区广场让大家点赞。
一句话定位:集成多平台 AI 绘画能力的企业级图像创作与社区运营平台。
1.2 目标用户与使用频率
| 用户类型 | 使用场景 | 使用频率 |
|---|---|---|
| C端创作者 | 用 AI 生成图片、管理个人作品集、参与社区互动 | 高频(日均 3-10 次生成) |
| 设计师/运营人员 | 快速生成营销素材、设计灵感初稿 | 中高频(日均 5-20 次生成) |
| 研学导师 | 为课程生成教学插图、场景图 | 中频(周均 5-10 次生成) |
| 平台运营人员 | 管理绘画任务、审核作品、运营作品广场 | 高频(工作日持续使用) |
| 系统管理员 | 配置绘画模型服务商、监控 Token 消耗 | 低频(周均 1-2 次配置) |
1.3 业务价值
| 价值维度 | 具体收益 | 衡量指标 |
|---|---|---|
| 降低创作门槛 | 无需专业设计技能,文字描述即可出图 | 用户首次生成成功率 ≥ 90% |
| 多模型聚合 | 集成 3 大平台,灵活选择最优模型 | 模型可用性 ≥ 99.5% |
| 社区生态 | 作品广场促进灵感碰撞和用户留存 | 广场日活跃用户占比 ≥ 15% |
| 精细化运营 | 任务监控、作品审核、统计分析闭环 | 运营人效提升 50% |
| 可扩展架构 | 基于 Spring AI 统一抽象层,快速接入新服务商 | 新模型接入周期 ≤ 3 人日 |
1.4 功能范围
| 功能分类 | 后台管理端 | 前台用户端 |
|---|---|---|
| 绘画模型管理(CRUD) | ✅ | ❌ |
| 绘画任务管理 | ✅ | ✅(仅本人) |
| 绘画作品管理/审核 | ✅ | ✅(仅本人) |
| 绘画统计(生成次数/Token消耗) | ✅ | ❌ |
| 文生图 | ❌ | ✅ |
| 图生图 | ❌ | ✅ |
| Midjourney 专属功能 | ❌ | ✅ |
| 参数配置(尺寸/风格/质量/数量) | ❌ | ✅ |
| 作品管理(收藏/分享) | ❌ | ✅ |
| 作品广场 | ✅(管理) | ✅(浏览/互动) |
二、用户场景
2.1 用户角色
| 角色 | 典型人物 | 核心诉求 | 技术水平 |
|---|---|---|---|
| C端创作者 | 小李,25岁,自媒体博主 | 快速生成高质量配图,管理作品集 | 非技术,熟悉互联网产品 |
| 设计师 | 小王,30岁,电商设计师 | 快速获取设计灵感,批量生成素材初稿 | 有设计基础,对 AI 工具好奇 |
| 研学导师 | 张老师,35岁,STEM 教育者 | 为课程生成配图和场景插画 | 非技术,注重内容准确性 |
| 运营人员 | 小陈,28岁,平台内容运营 | 审核作品、管理社区、分析数据 | 熟悉后台操作,关注数据指标 |
| 系统管理员 | 老赵,35岁,技术负责人 | 配置服务商、监控成本、保障稳定 | 技术背景,关注系统指标 |
2.2 使用场景
场景1:自媒体博主小李用文生图做封面
- 角色:小李(C端创作者)
- 前置条件:小李已登录平台,钱包有 100 Token 余额
- 操作流程:
- 小李进入"AI绘画"页面,默认展示"文生图"模式
- 在输入框填写描述:"一只在星空下奔跑的狐狸,赛博朋克风格,霓虹灯光"
- 在反向提示词中输入:"模糊、低质量、变形"
- 选择模型为 Midjourney V6
- 设置尺寸 1024×1024、质量高清、生成数量 4 张
- 点击"生成"按钮
- 页面显示"排队中...",约 10 秒后变为"生成中..."
- 约 2 分钟后,4 张图片展示在结果区
- 小李选择第 2 张和第 4 张,点击"保存到我的作品"
- 系统提示"消耗 20 Token,余额 80 Token"
- 期望结果:4 张高质量赛博朋克风格狐狸图,操作全程 < 3 分钟
- 验收标准:
| AC编号 | 验收条件 | 验证方式 |
|---|---|---|
| AC-1 | 正向提示词 ≤ 2000 字符,超出时输入框截断并提示 | 边界值测试 |
| AC-2 | 生成前校验 Token 余额,不足时弹窗提示"余额不足,请充值" | 模拟余额为 0 |
| AC-3 | 任务提交响应 ≤ 500ms,页面立即展示进度状态 | 接口计时 |
| AC-4 | 生成完成后 4 张图片全部展示,支持单独预览和下载 | 功能验证 |
| AC-5 | Token 扣减与钱包模块对账一致,生成失败时自动退还 | 对账验证 |
场景2:设计师小王用 Midjourney /blend 融合素材
- 角色:小王(设计师)
- 前置条件:小王已登录,钱包余额充足,Midjourney 模型已启用
- 操作流程:
- 小王选择"Midjourney"模式,点击"/blend 融合"
- 上传 3 张参考图片(产品图、纹理图、配色参考图)
- 系统显示上传预览,确认图片顺序
- 点击"开始融合"
- 约 2 分钟后返回 4 张融合结果
- 小王对第 1 张比较满意但想微调
- 点击第 1 张的"V(变体)"按钮
- 系统生成 4 张变体结果
- 小王选择最满意的变体,保存到作品集
- 期望结果:融合效果自然,变体多样化
- 验收标准:
| AC编号 | 验收条件 | 验证方式 |
|---|---|---|
| AC-1 | /blend 支持上传 2-4 张图片,少于 2 张时提示"至少上传 2 张" | 边界值测试 |
| AC-2 | 上传图片支持 JPG/PNG/WEBP,单张 ≤ 10MB | 格式和大小测试 |
| AC-3 | 融合结果返回 4 张网格图,每张可独立操作 | 功能验证 |
| AC-4 | /variation 操作基于选定图片生成 4 张变体 | 功能验证 |
| AC-5 | 所有 Midjourney 操作消耗双倍 Token,页面明确标注"消耗 XX Token" | 费用核对 |
场景3:研学导师张老师用图生图做课件插图
- 角色:张老师(研学导师)
- 前置条件:张老师已登录,有一张实景照片(太阳系示意图)
- 操作流程:
- 张老师选择"图生图"模式
- 上传一张太阳系实景照片
- 输入描述:"将照片转换为水彩画风格,色彩柔和,适合儿童教育"
- 设置相似度 0.6(保留主体特征但允许风格变化)
- 选择 Stability AI 模型
- 点击"生成"
- 约 1 分钟后返回结果
- 张老师选择最合适的版本用于课件
- 期望结果:风格转换准确,保留太阳系主体布局
- 验收标准:
| AC编号 | 验收条件 | 验证方式 |
|---|---|---|
| AC-1 | 上传图片格式校验(JPG/PNG/WEBP),非法格式提示"不支持的图片格式" | 格式测试 |
| AC-2 | 相似度参数范围 0.1-1.0,步长 0.1,前端用滑块展示 | UI 验证 |
| AC-3 | 上传图片尺寸校验:最小 256×256,最大 4096×4096 | 边界值测试 |
| AC-4 | 上传的图片在任务完成后保留 30 天,过期自动清理 | 定时任务验证 |
| AC-5 | 生成结果自动关联用户作品库,无需手动保存 | 功能验证 |
场景4:运营小陈审核作品广场
- 角色:小陈(运营人员)
- 前置条件:小陈有 ai:image:work:audit 权限,待审核作品 > 10 条
- 操作流程:
- 小陈进入后台"AI绘画 → 作品管理"页面
- 筛选状态为"待审核"的作品,看到 15 条待审
- 逐条浏览作品图片和提示词
- 发现一条作品提示词含违规内容
- 点击"驳回",填写原因"提示词包含不当内容"
- 系统自动通知用户"您的作品因'提示词包含不当内容'被驳回"
- 对优质作品点击"通过"并标记"推荐"
- 推荐作品在作品广场首页优先展示
- 期望结果:审核流程高效,驳回自动通知用户
- 验收标准:
| AC编号 | 验收条件 | 验证方式 |
|---|---|---|
| AC-1 | 待审核作品按发布时间升序排列(先提交的先审) | 排序验证 |
| AC-2 | 驳回时必须填写原因,原因 ≤ 500 字符 | 必填校验 |
| AC-3 | 驳回后系统消息通知用户,通知内容包含驳回原因 | 消息验证 |
| AC-4 | 标记推荐后,作品在广场"推荐"标签下优先展示 | 广场验证 |
| AC-5 | 下架操作后作品仅创作者本人可见,广场不再展示 | 权限验证 |
场景5:小李浏览作品广场获取灵感
- 角色:小李(C端创作者)
- 前置条件:作品广场有 ≥ 100 条审核通过的作品
- 操作流程:
- 小李进入"作品广场"页面
- 默认按热度排序,看到推荐作品
- 按"赛博朋克"风格标签筛选
- 点击一张喜欢的作品查看详情
- 看到作品图片、提示词"一只在星空下奔跑的狐狸,赛博朋克风格..."、使用模型 Midjourney V6、尺寸 1024×1024
- 点击"使用相同参数"
- 系统自动跳转到文生图页面,提示词和参数已填充
- 小李微调描述后生成自己的版本
- 期望结果:灵感发现容易,参数复用一键完成
- 验收标准:
| AC编号 | 验收条件 | 验证方式 |
|---|---|---|
| AC-1 | 广场仅展示审核通过的作品,未通过/已下架不可见 | 数据隔离验证 |
| AC-2 | "使用相同参数"复制提示词、模型、尺寸、风格,不复制原图 | 参数核对 |
| AC-3 | 热度排序公式 = 点赞数×2 + 浏览数×0.1 + 收藏数×3 | 排序验证 |
| AC-4 | 作品展示提示词但隐藏完整 API 参数(如 api_key 等) | 安全验证 |
| AC-5 | 点赞/收藏操作实时计入热度分,列表排序动态更新 | 实时性验证 |
三、功能需求
3.1 绘画模型管理(后台管理端)
描述
管理平台接入的 AI 绘画服务商和模型,包括 Midjourney、Stability AI、DALL-E 等。每个服务商可配置多个模型版本,管理员可设置 API 接入信息、并发限制、Token 消耗等参数。
页面原型

业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 每个平台可配置多个模型版本 | 同一平台可能有多版本并行(如 MJ V5/V6) |
| R-02 | 同一时间仅允许一个模型作为默认模型 | 用户端"默认推荐"需要唯一性 |
| R-03 | 模型禁用后用户端不可选择,已提交任务不受影响 | 避免中断进行中的生成任务 |
| R-04 | API Key 等敏感信息 AES-256 加密存储 | 安全合规要求 |
| R-05 | 连通性测试需在 5 秒内返回结果 | 超时说明服务商不可达,应明确告知管理员 |
| R-06 | 删除模型前检查是否有知识库正在引用 | 防止关联数据断裂 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询模型分页列表 | GET | /admin-api/ai/image/model/page | 支持按平台、状态筛选 |
| 查询模型详情 | GET | /admin-api/ai/image/model/get | 获取单个模型配置详情 |
| 新增模型 | POST | /admin-api/ai/image/model/create | 创建新的绘画模型配置 |
| 修改模型 | PUT | /admin-api/ai/image/model/update | 更新模型配置信息 |
| 删除模型 | DELETE | /admin-api/ai/image/model/delete | 逻辑删除模型配置 |
| 启用/禁用模型 | PUT | /admin-api/ai/image/model/update-status | 切换模型启用状态 |
| 模型连通性测试 | POST | /admin-api/ai/image/model/test | 测试模型 API 连通性 |
| 获取模型下拉列表 | GET | /admin-api/ai/image/model/simple-list | 用于前端下拉选择 |
3.2 绘画任务管理(后台管理端)
描述
管理所有用户发起的绘画任务。任务是一次"从提交到出图"的完整过程,管理员可查看任务详情、处理异常任务、导出数据报表。
任务状态机

业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 任务状态流转严格按状态机执行 | 防止状态跳跃导致数据不一致 |
| R-02 | 超时任务(超过 10 分钟未返回结果)自动标记为失败 | 避免任务永久挂起占用资源 |
| R-03 | 失败任务支持手动重试,重试时回到"待处理"状态 | 服务商临时故障时可快速恢复 |
| R-04 | 任务参数以 JSON 格式存储,保留完整请求信息 | 便于问题排查和重新执行 |
| R-05 | 失败/超时任务自动退还 Token | 保障用户权益,未成功不收费 |
| R-06 | 支持按租户隔离数据 | 多租户安全要求 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询任务分页列表 | GET | /admin-api/ai/image/task/page | 支持多维度筛选 |
| 查询任务详情 | GET | /admin-api/ai/image/task/get | 获取任务完整信息 |
| 取消任务 | PUT | /admin-api/ai/image/task/cancel | 取消进行中的任务 |
| 重试任务 | PUT | /admin-api/ai/image/task/retry | 重新处理失败的任务 |
| 删除任务 | DELETE | /admin-api/ai/image/task/delete | 逻辑删除任务记录 |
| 导出任务列表 | GET | /admin-api/ai/image/task/export | 导出 Excel 报表 |
| 查询任务统计 | GET | /admin-api/ai/image/task/statistics | 任务数量、成功率统计 |
3.3 绘画作品管理(后台管理端)
描述
管理平台内所有 AI 生成的图片作品。作品是任务完成后用户保存的"成品",支持审核、推荐、违规处理、分类管理。
作品状态机

业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 用户发布到作品广场的作品需经审核后公开展示 | 内容安全合规 |
| R-02 | 驳回作品需填写驳回原因,系统自动通知用户 | 用户需要知道原因以便改进 |
| R-03 | 推荐/精选作品在作品广场优先展示 | 运营引导内容质量 |
| R-04 | 违规作品下架后仅创作者本人可见 | 平衡内容治理与用户权益 |
| R-05 | 作品分类支持后台 CRUD 管理 | 灵活扩展分类体系 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询作品分页列表 | GET | /admin-api/ai/image/work/page | 支持多维度筛选 |
| 查询作品详情 | GET | /admin-api/ai/image/work/get | 获取作品完整信息 |
| 审核作品 | PUT | /admin-api/ai/image/work/audit | 通过或驳回作品 |
| 标记推荐 | PUT | /admin-api/ai/image/work/recommend | 标记为推荐/精选 |
| 下架作品 | PUT | /admin-api/ai/image/work/offline | 下架违规作品 |
| 删除作品 | DELETE | /admin-api/ai/image/work/delete | 逻辑删除作品 |
| 作品分类管理 | GET/POST/PUT/DELETE | /admin-api/ai/image/category/* | 分类 CRUD |
3.4 绘画统计(后台管理端)
描述
提供 AI 绘画模块的数据统计能力,帮助运营和管理层了解模块使用情况、成本消耗、用户行为。
统计指标
| 指标名称 | 计算方式 | 展示形式 |
|---|---|---|
| 今日/本周/本月生成数 | 按时间范围统计任务数 | 数字卡片 |
| Token 总消耗 | 所有成功任务的 token_cost 求和 | 数字卡片 + 趋势图 |
| 活跃用户数 | 去重 user_id 计数 | 数字卡片 |
| 任务成功率 | 已完成任务数 / 总任务数 × 100% | 百分比 |
| 模型使用分布 | 按 model 分组统计任务数 | 饼图 |
| 平台使用分布 | 按 platform 分组统计任务数 | 饼图 |
| 用户消耗排行 | 按 user_id 汇总 token_cost 排序 Top 20 | 柱状图 |
| 生成量趋势 | 按天/周/月聚合任务数 | 折线图 |
业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 统计数据延迟不超过 5 分钟 | 平衡实时性与系统性能 |
| R-02 | 支持按租户维度统计 | 多租户独立核算 |
| R-03 | Token 消耗需关联用户钱包扣减记录 | 财务对账一致性 |
| R-04 | 统计数据保留最近 90 天明细 | 超期数据归档,保持查询性能 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取概览数据 | GET | /admin-api/ai/image/statistics/overview | 今日/本周/本月概览 |
| 获取趋势数据 | GET | /admin-api/ai/image/statistics/trend | 按天/周/月趋势 |
| 获取模型分布 | GET | /admin-api/ai/image/statistics/model-distribution | 模型使用占比 |
| 获取用户排行 | GET | /admin-api/ai/image/statistics/user-ranking | Token 消耗排行 |
| 获取平台分布 | GET | /admin-api/ai/image/statistics/platform-distribution | 平台使用占比 |
3.5 文生图功能(前台用户端)
描述
用户通过输入文字描述(prompt)生成图片,是最核心的创作模式。支持配置尺寸、风格、质量、数量等参数。
页面原型

业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 正向提示词长度 ≤ 2000 字符 | 防止超长输入导致模型处理异常 |
| R-02 | 反向提示词长度 ≤ 1000 字符 | 反向提示词通常较短 |
| R-03 | 生成前校验用户 Token 余额是否充足 | 避免生成后无法扣费 |
| R-04 | 任务超时 10 分钟自动失败并退还 Token | 保障用户权益 |
| R-05 | 生成结果图片自动关联用户作品库 | 减少用户操作步骤 |
| R-06 | 支持提示词模板快速填充 | 降低新手使用门槛 |
| R-07 | 生成数量 1-4 张,Token 消耗 = 单次消耗 × 数量 | 多张生成按比例计费 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 提交文生图任务 | POST | /app-api/ai/image/generate | 提交文生图任务 |
| 查询任务状态 | GET | /app-api/ai/image/task/{taskId}/status | 轮询任务进度 |
| 获取任务结果 | GET | /app-api/ai/image/task/{taskId}/result | 获取生成结果 |
| 获取可用模型列表 | GET | /app-api/ai/image/models | 用户端模型下拉 |
| 获取风格预设列表 | GET | /app-api/ai/image/style-presets | 风格预设选项 |
| 取消任务 | PUT | /app-api/ai/image/task/{taskId}/cancel | 取消排队中的任务 |
3.6 图生图功能(前台用户端)
描述
用户上传参考图片,结合文字描述生成新的图片。支持控制与原图的相似度,适合"风格转换"和"参考创作"场景。
业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 上传图片格式限制:JPG、PNG、WEBP | 覆盖主流图片格式 |
| R-02 | 上传图片大小 ≤ 10MB | 防止过大文件占用带宽和存储 |
| R-03 | 上传图片尺寸:最小 256×256,最大 4096×4096 | 过小无意义,过大模型无法处理 |
| R-04 | 相似度参数范围 0.1-1.0,步长 0.1 | 0.1 几乎自由创作,1.0 几乎原样复制 |
| R-05 | 上传的图片在任务完成后保留 30 天,过期自动清理 | 节省存储空间,用户不需要长期保留原图 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 提交图生图任务 | POST | /app-api/ai/image/img2img | 上传图片并生成 |
| 上传参考图片 | POST | /app-api/ai/image/upload | 上传参考图到临时存储 |
3.7 Midjourney 专属功能(前台用户端)
描述
提供 Midjourney 特有的指令功能,覆盖 5 种核心操作。Midjourney 以艺术风格多样著称,是专业创作者的首选模型。
功能矩阵
| 指令 | 功能 | 输入 | 输出 | Token 消耗 |
|---|---|---|---|---|
| /imagine | 文字生成图片 | 文字描述 | 4 张网格图 | 基础 ×2 |
| /blend | 多图融合 | 2-4 张图片 | 4 张融合图 | 基础 ×2 |
| /describe | 图片反推描述 | 1 张图片 | 4 组文字描述 | 基础 ×2 |
| /upscale | 高清放大 | 选定图片 + 倍数 | 1 张高清图 | 基础 ×2 |
| /variation | 变体生成 | 选定图片 + 强度 | 4 张变体图 | 基础 ×2 |
页面原型(/imagine 结果页)

业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | /imagine 生成的网格图编号 1-4,对应 U1-U4、V1-V4 | Midjourney 标准交互范式 |
| R-02 | /blend 最多支持 4 张图片融合 | Midjourney API 限制 |
| R-03 | /describe 返回的文字描述用户可直接使用 | 反推描述可直接作为 /imagine 输入 |
| R-04 | /upscale 最大支持 4 倍放大 | 超过 4 倍画质提升不明显 |
| R-05 | /variation 生成结果自动关联原作品 | 便于追溯创作脉络 |
| R-06 | 所有 Midjourney 操作消耗双倍 Token | Midjourney 成本高于其他平台 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| /imagine 生成 | POST | /app-api/ai/image/midjourney/imagine | 文字生成图片 |
| /blend 融合 | POST | /app-api/ai/image/midjourney/blend | 多图融合 |
| /describe 反推 | POST | /app-api/ai/image/midjourney/describe | 图片描述反推 |
| /upscale 放大 | POST | /app-api/ai/image/midjourney/upscale | 高清放大 |
| /variation 变体 | POST | /app-api/ai/image/midjourney/variation | 生成变体 |
| 查询 MJ 任务状态 | GET | /app-api/ai/image/midjourney/task/ | 查询 MJ 任务进度 |
3.8 作品管理(前台用户端)
描述
用户管理自己生成的所有图片作品,支持分类查看、收藏、下载、删除、分享到广场等操作。
业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 作品默认仅本人可见 | 隐私保护 |
| R-02 | 用户可选择将作品发布到作品广场(需审核) | 用户自主决定是否公开 |
| R-03 | 收藏的作品标记星号,在收藏列表中集中查看 | 便于管理和回顾 |
| R-04 | 删除作品为逻辑删除,保留 30 天可恢复 | 防止误删 |
| R-05 | 下载图片保留原始生成参数 | 便于后续使用相同参数重新生成 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询我的作品列表 | GET | /app-api/ai/image/my/works | 分页查询我的作品 |
| 查询作品详情 | GET | /app-api/ai/image/my/works/ | 查看作品详情 |
| 收藏作品 | POST | /app-api/ai/image/my/favorite/ | 添加收藏 |
| 取消收藏 | DELETE | /app-api/ai/image/my/favorite/ | 取消收藏 |
| 查询收藏列表 | GET | /app-api/ai/image/my/favorites | 我的收藏列表 |
| 删除作品 | DELETE | /app-api/ai/image/my/works/ | 逻辑删除 |
| 批量删除 | DELETE | /app-api/ai/image/my/works/batch | 批量逻辑删除 |
| 发布到广场 | POST | /app-api/ai/image/my/works/{id}/publish | 发布到作品广场 |
| 下载作品 | GET | /app-api/ai/image/my/works/{id}/download | 下载原图 |
3.9 作品广场(前台用户端)
描述
社区作品展示平台,用户可浏览其他用户分享的 AI 绘画作品,获取灵感,复用参数进行创作。是平台 UGC 生态的核心载体。
页面原型

业务规则
| 规则编号 | 规则描述 | 设计原因 |
|---|---|---|
| R-01 | 仅审核通过的作品在广场展示 | 内容安全合规 |
| R-02 | 推荐算法优先展示精选作品和近期高互动作品 | 运营引导 + 新鲜度 |
| R-03 | 作品展示提示词但隐藏完整 API 参数 | 分享灵感但保护技术细节 |
| R-04 | "使用相同参数"仅复制提示词、模型、尺寸等,不复制原图 | 鼓励原创而非复制 |
| R-05 | 点赞和收藏计入作品热度分 | 热度排序的依据 |
| R-06 | 热度分 = 点赞数×2 + 浏览数×0.1 + 收藏数×3 | 收藏权重最高,代表深度认可 |
接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 查询广场作品列表 | GET | /app-api/ai/image/square/page | 分页查询广场作品 |
| 查询作品详情 | GET | /app-api/ai/image/square/ | 查看广场作品详情 |
| 点赞作品 | POST | /app-api/ai/image/square/{id}/like | 点赞/取消点赞 |
| 复用参数 | GET | /app-api/ai/image/square/{id}/params | 获取可复用参数 |
| 查询分类列表 | GET | /app-api/ai/image/square/categories | 作品分类列表 |
| 查询热门标签 | GET | /app-api/ai/image/square/tags | 热门标签列表 |
四、非功能需求
4.1 性能需求
| 指标 | 要求 | 实现策略 |
|---|---|---|
| 任务提交响应时间 | ≤ 500ms | 异步处理,提交仅创建任务记录 |
| 任务状态查询响应时间 | ≤ 200ms | Redis 缓存任务状态 |
| 图片生成超时时间 | 10 分钟 | 定时任务扫描超时任务 |
| 任务轮询间隔 | 5 秒 | 前端定时轮询,后续可升级 WebSocket |
| 图片上传处理时间 | ≤ 3 秒(10MB 以内) | 上传到 OSS 后异步处理 |
| 作品广场列表查询 | ≤ 1 秒 | Redis 缓存热门作品 + 分页 |
| 并发任务处理能力 | 单模型 ≥ 50 任务/分钟 | 消息队列 + 并发控制 |
| 统计报表生成时间 | ≤ 5 秒 | 预聚合 + 异步计算 |
4.2 安全需求
| 安全项 | 要求 | 实现方式 |
|---|---|---|
| API Key 存储 | AES-256 加密存储 | 使用框架统一加密工具 |
| 提示词内容安全 | 接入内容安全审核,拦截违规提示词 | 调用内容安全 API 前置校验 |
| 生成图片审核 | AI 自动审核 + 人工复审 | 先 AI 过滤明显违规,再人工审核 |
| 接口鉴权 | 所有接口需登录鉴权,管理接口需角色鉴权 | Spring Security + RBAC |
| 数据隔离 | 多租户数据严格隔离 | MyBatis Plus 租户插件 |
| 图片防盗链 | 图片 URL 带签名,设置有效期 | OSS 签名 URL,有效期 2 小时 |
| 频率限制 | 单用户每分钟最多提交 10 个任务 | Redis + 滑动窗口限流 |
| 敏感信息脱敏 | 日志中不打印 API Key 等敏感信息 | 日志脱敏过滤器 |
4.3 可用性需求
| 指标 | 要求 |
|---|---|
| 模型服务可用性 | ≥ 99.5%(单模型) |
| 任务失败自动重试 | 支持,最多重试 1 次 |
| 降级策略 | 默认模型不可用时自动切换到备用模型 |
| 故障通知 | 模型不可用时通知管理员 |
4.4 错误码定义
| 错误码 | 含义 | 用户提示 |
|---|---|---|
| AI_IMAGE_001 | Token 余额不足 | "余额不足,请充值后重试" |
| AI_IMAGE_002 | 提示词内容违规 | "提示词包含不当内容,请修改后重试" |
| AI_IMAGE_003 | 图片格式不支持 | "仅支持 JPG/PNG/WEBP 格式" |
| AI_IMAGE_004 | 图片尺寸超限 | "图片尺寸需在 256×256 到 4096×4096 之间" |
| AI_IMAGE_005 | 模型不可用 | "当前模型暂时不可用,请稍后重试或切换模型" |
| AI_IMAGE_006 | 任务超时 | "生成超时,Token 已退还,请重试" |
| AI_IMAGE_007 | 频率限制 | "操作过于频繁,请稍后再试" |
| AI_IMAGE_008 | 图片上传失败 | "图片上传失败,请检查网络后重试" |
| AI_IMAGE_009 | 作品不存在 | "作品不存在或已被删除" |
五、数据设计
5.1 数据表概览
| 表名 | 说明 | 核心字段 |
|---|---|---|
| ai_image_model | 绘画模型配置表 | platform, model_name, api_key, token_cost |
| ai_image_task | 绘画任务表 | user_id, task_type, prompt, status, result_urls |
| ai_image | 绘画作品表 | user_id, task_id, image_url, status, is_published |
| ai_image_favorite | 作品收藏表 | user_id, image_id |
| ai_image_category | 作品分类表 | name, icon, sort |
5.2 表关系

5.3 核心表设计
ai_image_task 绘画任务表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键ID |
| user_id | BIGINT | 是 | 用户ID |
| platform | VARCHAR(50) | 是 | 平台标识(midjourney/stability/dalle) |
| model | VARCHAR(100) | 是 | 模型名称 |
| task_type | VARCHAR(30) | 是 | 任务类型(txt2img/img2img/mj_imagine/mj_blend/mj_describe/mj_upscale/mj_variation) |
| prompt | TEXT | 是 | 正向提示词 |
| negative_prompt | TEXT | 否 | 反向提示词 |
| image_url | VARCHAR(1000) | 否 | 参考图片URL(图生图时使用) |
| result_urls | TEXT | 否 | 生成结果图片URL列表(JSON数组) |
| width | INT | 否 | 图片宽度(像素) |
| height | INT | 否 | 图片高度(像素) |
| status | TINYINT | 是 | 任务状态(0待处理 1处理中 2已完成 3失败 4已取消) |
| progress | INT | 否 | 进度百分比(0-100) |
| style | VARCHAR(50) | 否 | 风格预设 |
| quality | VARCHAR(20) | 否 | 质量等级(standard/hd) |
| generate_count | INT | 否 | 生成数量 |
| similarity | DECIMAL(3,2) | 否 | 相似度(图生图参数) |
| params | JSON | 否 | 扩展参数(JSON格式,存储平台特有参数) |
| token_cost | INT | 否 | 本次消耗Token数 |
| error_message | VARCHAR(500) | 否 | 失败原因 |
| cost_time | INT | 否 | 耗时(毫秒) |
| external_task_id | VARCHAR(200) | 否 | 第三方平台任务ID |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除(0否 1是) |
| tenant_id | BIGINT | 否 | 租户ID |
ai_image 绘画作品表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键ID |
| user_id | BIGINT | 是 | 用户ID |
| task_id | BIGINT | 是 | 关联任务ID |
| platform | VARCHAR(50) | 是 | 平台标识 |
| model | VARCHAR(100) | 是 | 模型名称 |
| prompt | TEXT | 是 | 正向提示词 |
| negative_prompt | TEXT | 否 | 反向提示词 |
| image_url | VARCHAR(1000) | 是 | 图片URL |
| thumbnail_url | VARCHAR(1000) | 否 | 缩略图URL |
| width | INT | 否 | 图片宽度 |
| height | INT | 否 | 图片高度 |
| file_size | BIGINT | 否 | 文件大小(字节) |
| style | VARCHAR(50) | 否 | 风格标签 |
| category_id | BIGINT | 否 | 作品分类ID |
| status | TINYINT | 是 | 作品状态(0待审核 1审核通过 2审核驳回 3已下架) |
| audit_reason | VARCHAR(500) | 否 | 审核驳回原因 |
| is_favorite | TINYINT | 否 | 是否收藏(0否 1是) |
| is_published | TINYINT | 否 | 是否发布到广场(0否 1是) |
| is_recommend | TINYINT | 否 | 是否推荐(0否 1是) |
| like_count | INT | 否 | 点赞数 |
| view_count | INT | 否 | 浏览数 |
| download_count | INT | 否 | 下载次数 |
| publish_time | DATETIME | 否 | 发布时间 |
| params | JSON | 否 | 生成参数快照 |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除(0否 1是) |
| tenant_id | BIGINT | 否 | 租户ID |
ai_image_favorite 作品收藏表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键ID |
| user_id | BIGINT | 是 | 用户ID |
| image_id | BIGINT | 是 | 作品ID |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
ai_image_category 作品分类表
| 字段名 | 字段类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | BIGINT | 是 | 主键ID |
| name | VARCHAR(50) | 是 | 分类名称 |
| icon | VARCHAR(200) | 否 | 分类图标 |
| sort | INT | 否 | 排序值 |
| status | TINYINT | 是 | 状态(0禁用 1启用) |
| creator | VARCHAR(64) | 否 | 创建者 |
| create_time | DATETIME | 否 | 创建时间 |
| updater | VARCHAR(64) | 否 | 更新者 |
| update_time | DATETIME | 否 | 更新时间 |
| deleted | BIT | 否 | 是否删除 |
5.4 缓存策略
| 缓存 Key | 数据类型 | 过期时间 | 更新策略 |
|---|---|---|---|
| ai:image:model:list | Hash | 30 分钟 | 模型增删改时主动失效 |
| ai:image:model:default | String | 30 分钟 | 默认模型变更时失效 |
| ai:image:task:status: | String | 10 分钟 | 任务状态变更时更新 |
| ai:image:square:hot | ZSet | 5 分钟 | 定时刷新 |
| ai:image:category:list | List | 1 小时 | 分类变更时主动失效 |
六、跨模块联动
6.1 联动关系总览
| 本模块功能 | 关联模块 | 联动方向 | 联动场景 |
|---|---|---|---|
| 绘画模型管理 | AI对话(AI模型管理) | 共享 | 复用 AI 服务商配置基础能力 |
| Token 扣减 | 会员积分(05-02) | 调用 | 每次生成扣减 Token |
| Token 充值 | 钱包管理(04-02) | 调用 | 余额不足引导充值 |
| 任务/作品统计 | 统计分析 | 推送 | 绘画数据汇入全局统计 |
| 作品广场 | IM即时通讯(09-01) | 联动 | 作品分享到 IM 聊天 |
| 作品广场 | 数据报表(09-02) | 推送 | 广场运营数据输出到报表 |
6.2 详细联动设计
AI绘画 ↔ AI模型管理(07-01)
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 共享模型基础设施 | 管理员配置绘画模型 | 复用 AI 模型管理的服务商接入框架 | 模型配置 → Spring AI 统一调度 |
| 模型状态同步 | AI模型管理中禁用某模型 | 绘画模块同步不可用该模型 | AI模型管理 → AI绘画 |
AI绘画 ↔ 会员积分(05-02)
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| Token 扣减 | 用户提交绘画任务 | 调用积分模块扣减 Token | AI绘画 → 会员积分 |
| Token 退还 | 任务失败/超时 | 调用积分模块退还 Token | AI绘画 → 会员积分 |
| 余额校验 | 用户点击生成 | 调用积分模块校验余额 | AI绘画 → 会员积分 |
AI绘画 ↔ 钱包管理(04-02)
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 余额不足引导充值 | Token 余额 < 单次消耗 | 展示充值引导弹窗 | AI绘画 → 钱包管理 |
| 消费记录 | Token 扣减成功 | 钱包记录消费流水 | 会员积分 → 钱包管理 |
AI绘画 → 统计分析
| 联动场景 | 触发条件 | 联动行为 | 数据流向 |
|---|---|---|---|
| 生成数据上报 | 任务完成/失败 | 推送任务结果到统计模块 | AI绘画 → 统计分析 |
| Token 消耗上报 | Token 扣减成功 | 推送消耗数据到统计模块 | AI绘画 → 统计分析 |
七、附录
7.1 名词解释
| 术语 | 通俗理解 | 在本模块中的含义 |
|---|---|---|
| Prompt(提示词) | 你告诉 AI"画什么"的那段话 | 用户输入的文字描述,AI 据此生成图片 |
| Negative Prompt(反向提示词) | 你告诉 AI"不要画什么" | 描述不希望出现在图片中的元素,如"模糊、变形" |
| 文生图(txt2img) | "打字出图"——用文字描述就能出图 | 最基础的创作模式,纯文字输入 |
| 图生图(img2img) | "拿照片改画"——上传一张参考图让 AI 改造 | 以参考图为基础,结合文字描述生成新图 |
| Midjourney | 三位 AI 画师中最擅长艺术风格的那位 | 集成的高端 AI 绘画服务商 |
| Stability AI | 开源画师,可控性强 | 集成的开源 AI 绘画模型 |
| DALL-E | OpenAI 出品的画师 | 集成的 OpenAI 图像生成模型 |
| /imagine | Midjourney 的"文字画画"指令 | Midjourney 文生图操作 |
| /blend | Midjourney 的"照片混搭"指令 | 将 2-4 张图片融合为新图 |
| /describe | Midjourney 的"看图说话"指令 | 反向解析图片,生成文字描述 |
| /upscale | Midjourney 的"放大高清"指令 | 将图片放大 2-4 倍 |
| /variation | Midjourney 的"变体"指令 | 基于原图生成风格相近但细节不同的新版本 |
| Token | 平台通用的"AI 使用券" | 每次生成消耗一定 Token,余额不足需充值 |
| 作品广场 | 用户展示和发现 AI 画作的"画廊社区" | 审核通过的作品公开展示空间 |
| 热度分 | 作品受欢迎程度的"人气值" | 点赞×2 + 浏览×0.1 + 收藏×3 的综合得分 |
| Spring AI | 连接各种 AI 服务商的"万能转接头" | 统一调度多平台模型资源的技术框架 |
7.2 权限标识
| 权限标识 | 说明 | 所属角色 |
|---|---|---|
| ai:image:model:list | 查看绘画模型列表 | 系统管理员 |
| ai:image:model:create | 新增绘画模型 | 系统管理员 |
| ai:image:model:update | 修改绘画模型 | 系统管理员 |
| ai:image:model:delete | 删除绘画模型 | 系统管理员 |
| ai:image:model:test | 测试模型连通性 | 系统管理员 |
| ai:image:task:list | 查看绘画任务列表 | 运营人员、系统管理员 |
| ai:image:task:cancel | 取消绘画任务 | 运营人员 |
| ai:image:task:retry | 重试绘画任务 | 运营人员 |
| ai:image:task:export | 导出绘画任务 | 运营人员 |
| ai:image:work:list | 查看作品列表 | 运营人员 |
| ai:image:work:audit | 审核作品 | 运营人员 |
| ai:image:work:recommend | 推荐作品 | 运营人员 |
| ai:image:work:offline | 下架作品 | 运营人员 |
| ai:image:statistics:view | 查看绘画统计 | 运营人员、系统管理员 |
| ai:image:generate | 使用AI绘画 | 所有登录用户 |
| ai:image:my:works | 查看我的作品 | 所有登录用户 |
| ai:image:square:view | 浏览作品广场 | 所有登录用户 |
7.3 预设风格参考
| 风格分类 | 预设风格 | 适用场景 |
|---|---|---|
| 艺术风格 | 动漫、写实、油画、水彩、素描 | 通用创作 |
| 科技风格 | 赛博朋克、科幻、蒸汽朋克、像素风 | 科技主题 |
| 摄影风格 | 人像、风景、微距、街拍 | 模拟摄影效果 |
| 设计素材 | 扁平化、3D渲染、等距视图、极简 | 设计素材生成 |
| 国风 | 水墨画、工笔画、敦煌风、青花瓷 | 中国传统文化主题 |