13 KiB
AI详情生成开发文档(当前实现版)
1. 文档定位
本文档不再描述理想中的完整目标架构,而是基于当前仓库代码与前端交互,整理出一份可直接用于开发、联调、排查和运营说明的“当前实现版”文档。
适用范围:
- 无限画布中的
AI详情生成工作台 - 前端入口与交互流程
- 当前已接入的后端 API
classic与agent_layout两种模式的真实差异- 已上线能力、未上线能力、已知限制
如果后续要继续推进“项目化管理 / Layout QA / 14屏严格状态机 / 项目级 API”,请在本文件基础上新增“规划版”文档,不要再把目标方案和当前实现混写。
2. 状态说明
本文档中的状态标签含义如下:
已实现:仓库中已有入口和主要逻辑,当前系统可走通部分实现:已有部分链路,但与原设计稿不完全一致未实现:文档中仅保留为后续规划,不应视为当前能力
3. 当前能力总览
3.1 功能入口 已实现
- 入口位置:无限画布右侧聊天工作台中的
AI详情生成 - 前端主文件:
components/canvas/CanvasChatPanel.tsx - 用户可以选择两种模式:
classic:传统生图agent_layout:AGENT排版
3.2 当前真实输入约束 已实现
必填业务字段:
targetAudienceusageScenariocoreNeed
当前前端强制素材要求:
5张产品图:必填1张模特图:当前实现中必填0-3张搭配图:可选
说明:
- 文档层面原本把模特图写成“可用于卖家视角场景”,但当前前端实现里它实际上是必填项。
- 如果没有模特图,前端会直接拦截,不会进入 AI 详情规划。
3.3 当前真实输出结构 已实现
当前 AI 详情一次生成的输出由两部分组成:
-
详情主图分镜- 通过
/api/canvas/detail-plan先规划 - 再逐屏调用生图接口
- 通过
-
买家评价与晒单- 在主图全部完成后由前端追加生成
- 不属于
detail-plan主分镜返回本体
4. 当前系统里的真实流程
4.1 主流程概览 已实现
当前系统实际流程如下:
flowchart LR
A["用户填写brief并上传素材"] --> B["前端校验必填字段和素材"]
B --> C["POST /api/canvas/detail-plan"]
C --> D["返回 screens/prompts/globalStyle/preflight"]
D --> E["前端逐屏调用生图"]
E --> F{"generation_mode"}
F -->|classic| G["逐屏 detail-review 质检 + 可选二次修图"]
F -->|agent_layout| H["前端叠加可编辑文字层"]
G --> I["主图完成后追加评价晒图"]
H --> I
I --> J["写入画布节点 + 更新本地/数据库存档"]
4.2 关键特点
- 当前没有“项目级任务状态机 API”
- 当前没有后端统一的
/detail-projects/:projectId/generate - 当前没有 SSE 进度接口
- 进度条、占位图、逐屏生成状态全部在前端本地维护
5. 两种模式的真实差异
5.1 classic 传统生图模式 已实现
特点:
- 生图模型直接生成整页详情图
- 提示词中会带标题、副标题、正文、FABE、排版说明
- 每屏生成后会调用
/api/canvas/detail-review - 如果质检不通过,会基于
revisedPrompt二次修图一次
优点:
- 成图速度快
- 页面信息一次成型
限制:
- 文生图模型对文字和排版控制不稳定
- 容易出现文字失真、布局漂移、参数被画出来等问题
5.2 agent_layout AGENT排版模式 已实现
特点:
- 生图模型只生成画面层
- 明确禁止模型输出可见文字、数字、Logo、水印
- 画面生成完成后,前端在图片节点上叠加 3 个可编辑文字节点:
- 标题
- 副标题
- 正文
当前文字层位置:
- 标题:
y + 72 - 副标题:
y + 214 - 正文:
y + 304 - 左边距:约画面宽度的
7%
优点:
- 文字可编辑
- 文案层级更统一
- 避免模型把整页文字烤死
限制:
- 当前文字层位置是前端固定模板,不是后端程序化版式引擎
- 当前
agent_layout不走/api/canvas/detail-review - 当前没有“文字遮挡主体”的自动检测
6. 屏数与完成条件
6.1 当前真实规则 已实现
当前主图分镜数不是固定 14 屏,而是动态值:
- 前端会从用户输入文本里解析
X张 / X屏 / X页 - 如果没解析到,默认
14屏 - 后端会把数量限制在
5-20 - 如果上传了搭配图,会额外加
1屏搭配展示
6.2 当前真实完成条件 已实现
当前“完成”并不是“必须满 14 屏”,而是:
- 本次
detail-plan返回了多少条prompts - 前端就按多少屏去生成
- 当
generatedImages.length === prompts.length时,主图阶段视为完成
6.3 评价晒图的关系 已实现
买家评价与晒单是主图完成后的追加产物:
- 默认追加
3条评价方案 - 每条评价生成
3张晒单图 - 不计入主图
prompts.length
7. 当前接口清单
7.1 已上线接口
1. POST /api/canvas/detail-plan 已实现
作用:
- 生成 AI 详情规划结果
- 返回:
summarypromptsglobalStyleskillFlowqualityCheckspreflightscreensgenerationMode
输入重点:
promptcountgenerationModereferenceImagesreferenceImageNotesmodelImageUrlbundleImageUrlsbrief
2. POST /api/canvas/detail-review 已实现
作用:
- 对已经生成的单屏整页图做双总监质检
- 仅在
classic模式下调用
返回重点:
passscoredesignDirectorScoremarketingDirectorScoreissueslayoutFixesrevisedPrompt
3. GET|POST|PATCH|DELETE /api/canvas/[id]/detail-archives 已实现
作用:
- 详情生成历史归档
- 读取、保存、更新、删除历史详情项目快照
说明:
- 当前系统使用的是“归档快照”而不是“项目型任务管理”
- 实际归档里会保存:
- prompt
- generationMode
- brief
- slots
- summary
- coverUrl
- imageCount
7.2 文档里曾规划但当前未上线的接口
以下接口在旧文档中出现过,但当前仓库未实现,不应视为现有能力:
POST /api/canvas/[id]/detail-projectsGET /api/canvas/[id]/detail-projectsGET /api/canvas/[id]/detail-projects/:projectIdPOST /api/canvas/[id]/detail-projects/:projectId/generatePOST /api/canvas/[id]/detail-projects/:projectId/retry-screenGET /api/canvas/[id]/detail-projects/:projectId/progressPOST /api/canvas/[id]/generation-mode
状态:未实现
8. 当前真实数据与存储方式
8.1 当前真实存档模型 已实现
当前 AI 详情不是独立的 detail_projects 体系,而是基于:
canvasProjectcanvasDetailArchive
来做归档和归属校验。
8.2 当前未实现的数据设计
以下是旧文档中规划过、但当前代码未接入的数据表概念:
detail_projectsdetail_project_inputsdetail_assetsdetail_screen_specsdetail_screen_rendersdetail_generation_jobs
状态:未实现
9. 当前规划结果的数据结构
当前 /api/canvas/detail-plan 返回的每屏结构重点如下:
type DetailPlanScreen = {
index: number;
screenType: "A" | "B" | "C";
objective: string;
title: string;
subtitle: string;
copy: string;
layoutNote: string;
useModel: boolean;
modelReason: string;
bundleShowcase: boolean;
bundleReason: string;
visualPrompt: string;
fabe: {
b: string;
f: string;
a: string;
e: string;
};
};
说明:
- 当前虽然返回
screens,但这不是旧文档中那个完整的可编辑ScreenSpec协议 - 真实落地时,前端主要使用:
visualPrompttitlesubtitlecopylayoutNotescreenType
10. 当前前端交互与画布落位
10.1 占位与落位 已实现
- 生成前先在画布中创建纵向占位图节点
- 每个节点尺寸固定
790x1300 - 纵向排列
- 占位图会显示当前状态:
- 需求解析与分镜规划中
- 分镜规划完成
- 双总监预审通过
- 主图首稿生成中
- 排版层渲染中
- 生成失败
10.2 agent_layout 文字叠加 已实现
画面生成完成后,前端会自动叠加文字节点:
- 标题:大字号、粗体
- 副标题:中字号、中高权重
- 正文:较小字号、灰阶色
当前是模板化坐标,不是自适应排版引擎。
10.3 手动编辑 部分实现
当前可编辑能力:
- 可直接在画布中改文字
- 图片节点可继续操作
当前未实现或未证实完整上线:
- 图标层体系
- 独立排版吸附策略
- 通过“保留版式仅重生画面”的专门 UI 按钮
11. 当前质检与兜底机制
11.1 分镜预审 已实现
detail-plan 在规划后会做一次“平面设计总监 + 营销总监”预审:
- 返回
preflight - 包含:
designDirectorScoremarketingDirectorScoreissuesrewriteApplied
如果预审不理想,会优先尝试重写方案;仍不理想则回退到稳定模板。
11.2 单屏质检 部分实现
仅 classic 模式下:
- 每屏首稿完成后调用
/api/canvas/detail-review - review 不通过时,会用
revisedPrompt二次修图一次
agent_layout 模式下:
- 当前不走这套逐屏 review 流程
11.3 当前实际不存在的质检能力
以下内容在旧文档里有描述,但当前代码中未实现:
product_masksaliency_map- 遮挡率计算
- 文本对比度计算
qa_passed / qa_score / qa_issues / qa_fix_actions- 质检报告面板
状态:未实现
12. 当前失败与回退策略
12.1 已实现回退
detail-plan超时或失败时
- 带参考图失败,先去掉参考图重试
- 仍失败,回退到 fallback 分镜模板
detail-review失败时
- 保留当前屏结果
- 不会整套中断
- 生图失败时
- 逐屏抛错
- 若最终成功屏数不等于计划屏数,则本轮主图任务报错
12.2 当前线上已观察到的问题
detail-plan经常generateText timed out after 45000mspreflight偶发10000ms超时- 火山视觉兜底存在
size参数不合法问题 - 火山视觉会因输入图超过
10MB报错 - 当前日志对
generationMode的显式记录不够
13. 当前性能与运维现状
13.1 已实现策略
- 参考图会先做可达性检查
- 规划阶段对内联图片数量有限制
- 规划超时和参考图失败会自动降级
13.2 当前真实瓶颈
- 规划模型 45 秒超时较常见
- 智能分析链路和 AI 详情共用资源时,容易放大整体超时概率
- 服务器高负载时,详情规划失败概率明显上升
14. 当前实现与旧文档差异总结
以下是最容易误导的几个点:
- 不是“固定 14 屏严格状态机”
- 实际是动态屏数,默认 14,可在
5-20之间浮动
- 不是“项目型 API 架构”
- 实际是
detail-plan + detail-review + detail-archives
- 不是“模特图可选”
- 实际前端要求模特图必填
- 不是“Layout QA 已上线”
- 实际只有 LLM 预审和 classic 单屏 review
- 不是“所有模式都逐屏质检”
- 实际
agent_layout跳过/detail-review
15. 推荐的下一步迭代顺序
基于当前系统现状,建议优先做这些“短路径、可落地”的改动:
第一阶段:修稳定性
- 在日志中显式打印
generationMode - 降低
detail-plan规划超时概率 - 修复火山视觉
size参数映射 - 生图前压缩超大参考图
第二阶段:修文档与能力一致性
- 让模特图是否必填与产品策略一致
- 明确“主图屏数”和“评价晒单”之间的边界
- 把当前档案型接口正式定义清楚
第三阶段:增强 agent_layout
- 把前端固定文字坐标升级为可配置模板
- 让
agent_layout也支持可控的逐屏质量检查 - 增加更明确的排版冲突规避策略
第四阶段:再考虑项目化
- 如需真正的
detail-projects/progress/retry-screen/generation-modeAPI,再单独设计 - 不建议在当前文档里继续把它们写成“已经存在的系统能力”
16. 代码入口索引
当前 AI 详情的主要代码入口如下:
- 前端工作台:
components/canvas/CanvasChatPanel.tsx - 详情规划:
app/api/canvas/detail-plan/route.ts - 详情质检:
app/api/canvas/detail-review/route.ts - 详情存档:
app/api/canvas/[id]/detail-archives/route.ts
17. 结语
当前 AI 详情功能已经具备“可用”的主链路:
- 可规划
- 可逐屏生图
- 可归档
- 可区分
classic与agent_layout - 可追加评价晒单
但它还不是旧文档里描述的完整项目化系统。
后续所有开发、测试、运营说明,建议以本文件为准;如果要继续推进目标架构,请新开“规划版”文档,不再修改本文件的“当前实现事实”定位。