Skip to content

生图入口与上线复核 — 2026-09-07

第二轮实施进展

用户确认继续实施后,下文列出的六项 UI/恢复问题均已修复:独立加载与重试、按世界等待默认目录、旧活动任务持续刷新、收单前验证真实图片格式、关闭弹窗后的素材刷新、按账号和世界保存草稿及键盘操作。补充了参考图搜索/分页、请求超时和取消、旧响应隔离、手机固定生成按钮,并调整提示词优先布局与五语言文案。

已用真实前端配合隔离 API 验证桌面 1440×1000、手机 390×844、网络失败/重试和刷新恢复草稿;没有横向溢出。界面检查不消耗付费生图,也不代表生产供应商验收。

第二轮检查:整站 build 5/5、typecheck 8/8,服务端生图 58/58,客户端生图及目录/编辑器 34/34,教学影响检查和差异检查通过。新增 RunPod 同步进程按环境隔离,避免生产和测试环境清理彼此的临时进程。

发布候选位于独立的 yumina-image-release-20260907 工作树,基于生产主线选择性移植生图功能,正在验证生产集成、准备迁移/独立 worker 和真实小规模验收。最终部署状态将由发布记录补充。下面是第一轮审查时的生产快照与问题依据,保留作审计记录。

第一轮结论与生产快照

结论:新入口及本轮发现的收费、任务管理问题已在本地修复,构建与回归通过。当前生产还不能直接开放生图:没有生图表,没有图片供应商凭据,也没有独立 image-worker。 建议先补齐生产部署,在小范围验证真实闭环后扩大开放。

范围与证据

  • 代码目录:C:/Users/peiji/Downloads/yumina-image-audit,分支 codex/image-generation-reliability,起始提交 8c061c58e;本报告对应其上的未提交修改。主目录属于另一开发分支,原有工作未移植或覆盖。
  • 使用 gstack review 检查表及独立专项审查,覆盖入口、登录、五语言、参考图、批量、历史、计价、幂等、取消、交付、退款、恢复、SQL/索引、执行进程和发布配置。
  • 本次只读检查 Railway 服务清单、生产配置是否存在,以及生产数据库表名;没有输出凭据,没有改生产,没有提交/推送/部署。
  • 生产数据库检查时间:2026-09-07T22:22:37Z(洛杉矶 15:22)。采用 BEGIN READ ONLYpublicgeneration_% 表返回空列表。
  • 没有打开浏览器,没有通过应用提交付费生图,没有重新验收模型画质或生产负载。卡片插画由独立 imagegen 工具生成,并压缩为项目 WebP 资源。

已完成的入口

「新建」页新增 AI 生图,文案为“把灵感变成角色立绘、场景和封面。”,排序在角色聊天之后、空白项目之前。保持原有桌面卡片和手机列表样式,新增 96,520 字节的配套插画。

点击直达 /app/generate,复用现有完整工作台,不建立空白世界、不经过编辑模式选择。支持登录后使用、账号切换时重新挂载工作台、返回新建、跳转我的素材。路由按需加载工作台。简中、繁中、英文、日文、西文均已补齐,手机标题也改为通用创作说明。

代码:入口独立页面

本轮发现并修复

以下问题均通过实际代码确认;收费与状态竞态另有隔离回归,置信度 10/10。

原问题本轮处理
全选删除包含运行中任务;服务端保留它,前端却删掉进度并停止追踪只选择已结束任务;API 返回实际处理的 jobIds,前端仅应用实际结果。混合状态删除、移动及非法请求有真实路由回归。
素材预览的“生成视频”会因视频模板被过滤,静默进入生图移除该入口。此次继续只开放图片,服务端已有视频拒绝回归。
上传参考图后看不到选中图,上传途中还能发起无参考图的收费任务上传过程显示忙状态并禁止生成/换图;选中图片始终置顶显示,包括最近60张以外的素材。
单张删除跳过批量操作已有的确认,直接删除付费图片及素材单张与批量共用删除确认。
少出图仍显示成功,用户看不到差额退款;失败文案提前声称已退款画廊、详情、素材弹窗分别展示交付数量、已退款金额或待退款金额;五语言文案按实际结算状态显示。
智能任务排队近30分钟后刚开始生成,就因创建时间超限而失败退款排队30分钟、派发后运行10分钟分别计时;最终更新再次检查实时状态,避免清扫旧快照误杀刚领取的任务。
SQL迁移创建的6个索引未写入 ORM,常规 db:push 会删除它们补全 ORM 索引,含请求幂等唯一约束。用真实 Drizzle push 计划验证不再删索引;只生成计划,没有执行远端 schema push。
RunPod 重试未持久保存 requestId,可能再次扣款及发单;提交返回上游ID前取消会留下继续烧GPU的任务保存请求键及请求内容哈希,在事务锁内重放已有单;提交期间暂时不可取消,等上游ID返回后恢复取消。重复、冲突、提交中取消均有隔离回归。

主要代码:批量客户端退款展示超时结算索引提交与批量API

昨天报告里的提前成功、通知失败引发退款、删成品后复活/退款、充值余额退款来源丢失、部分退款补偿缺失等问题,在本轮起始代码中已修复;相关回归本次再次通过,不再列作未解决阻塞。

今天发布前必须完成

1. 生产迁移、凭据和执行进程

本次真实只读结果:

项目生产现状
generation_* 表0 张
OPENROUTER_IMAGE_API_KEY未配置
RUNPOD_API_KEY / RUNPOD_COMFY_ENDPOINT_ID未配置
数据库、Redis已有配置
AWS_S3_BUCKET_NAME / AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY已有配置;本次未写文件检验权限
独立 image-worker服务清单中不存在;testing 中存在且有两个运行副本

生产先执行当前的完整迁移入口 prepare-generation.mjs,顺序为 jobs → models → community → v2 → reliability → openrouter → scale。确认迁移通过、关键索引存在,再切换新服务流量。

建立生产 worker,使它与生产 web 共享正确的生产数据库、Redis、对象存储及图片凭据;确认 worker 健康、心跳和排空设置,再将 web 设为 IMAGE_EXECUTION_MODE=external。生产配置不能照抄 testing 的连接串。如果同时开放自定义生图,还需部署平台模型、匹配 RunPod 区域及模型文件、配置生产回调地址。

本轮代码尚未合并到发布分支。应按生图依赖整合到生产发布,不应把整个 testing 的其他功能一起带上,只因为入口已经写好。

2. 用最终生产配置做小规模真实验收

至少验证:中文单图、参考图、2/4张、重复请求只扣一次、取消规则、失败退款保留充值余额属性、部分交付退差额、离开页面后找回结果、下载/CDN、删除成品不复活、不再退款。对实际准备公开的每个通道/风格分别验收。

本次的隔离测试不能替代这一项。已有 testing 记录验证过双通道与参考批量,独立 worker 版本另有两单成功,但那些记录不是本次代码与生产配置的实单验收。

3. 明确首发容量和费用上限

优先保证智能生图默认路径;自定义模型、LoRA、额外风格按已实测通过的范围开放。保留每用户活动任务上限、队列上限和滚动预算限制。

testing 记录是两个 worker、每副本本地并发2;全局配置10不等于实际已有10个同时执行槽位。先做小并发,再逐级测4、10、20,记录队列等待、P95出图耗时、429、失败/退款比例、实际供应商费用、数据库连接与内存。增加 worker 前要确认供应商能承受同等请求量。

已有2000连接测试是本地 SSE 传输测试;20000连接尝试失败,不能宣传为“支持两万人同时生图”。参考 执行服务及容量记录

仍建议继续优化的具体问题

这些问题本轮未修改,均应进入明确的后续列表,不因测试通过而视作不存在。

优先级问题、证据及建议
P2,9/10初次模板请求断网被当成功能关闭,首次历史请求失败会显示空列表,缺少恢复按钮。use-generation.ts 初始加载中 catch 分别 setEnabled(false) 和吞错。拆分加载失败/服务关闭,增加“重新加载”。
P2,10/10Studio 的默认素材文件夹只在工作台初始化时读取;异步绑定加载后不更新,绑定 store 开始请求时保留上个世界数据。首次进入或切世界可能保存到错误文件夹。按 worldId 隔离绑定并在初始化完成后选择默认目录;不能覆盖用户主动选择。新独立入口不依赖世界绑定。
P2,9/10状态刷新只取最新20条;加载过的旧活动任务被新任务挤出最新页时,只保留旧状态。应单独刷新所有仍活动/待退款的任务ID。
P2,10/10智能参考图支持格式检查在 worker 扣费建单后才执行,输入允许 image/*,GIF/SVG 等会生成失败再退款。应前后端明确 PNG/JPEG/WebP,并在收单前校验或转码。
P2,9/10素材弹窗关闭期间任务完成后,再开弹窗会把已有结果视为旧记录,未触发父素材列表刷新。关闭/返回时刷新素材列表,避免用户误以为图片没有保存。
P3,9/10未提交提示词保存在组件状态中,刷新/跳页即丢失;可按账号保存轻量草稿。画廊点击区域缺少键盘操作,也值得补齐。

证据:客户端加载与刷新Studio生图入口绑定store参考图执行校验

上线前还应人工看一次桌面/手机:入口可见、标题不截断、上传进度、价格和余额、运行中状态、退款说明、保存/下载及回到素材库。此项本次未做浏览器验证。

本次验证

检查结果
全仓 pnpm build5/5成功;新增生图路由及96KB插画进入产物
全仓 pnpm typecheck8/8成功,含依赖构建任务
服务端 generation/*.test.ts54/54通过;含真实路由与PGlite隔离故障、迁移及Drizzle计划验证
前端生图测试10/10通过:批量、退款、配方、状态订阅
学习目录测试4/4通过
shared 生图定价测试5/5通过
check:learning / diff检查通过;教程步骤仍准确,已记录影响,不重置学习进度

共73项相关自动测试通过。构建仍有项目既有的大文件、混合静态/动态导入和空 vendor-react chunk 提示。未把它们算作出图失败,也未宣称完成浏览器视觉验收、真实生产任务或容量验收。