zyc and Claude Opus 4.8
535e557728
fix: 「加入模特库」仅图片创作显示,模特上身图/平台套图隐藏 (row41 续)
...
气泡项加 mode === "image" 条件门控。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 13:20:47 +08:00
zyc and Claude Opus 4.8
16219a4132
feat: 图片创作每张图加「加入模特库」按钮 (row41)
...
图片工作台单图「更多」气泡新增「加入模特库」(与「加入资产库」并列):
把该生成图复用为模特形象图建 Model 条目,加入后变「已加入模特库」禁用。
后端新增 POST /api/models/enroll-asset/(ModelLibraryViewSet.enroll_asset):
复用已有资产作 portrait_asset 建 Model,不重新上传/不二次扣费;同一资产幂等返回。
需部署生效(后端)。
构建: tsc --noEmit=0, npm run build=0; 后端 py_compile OK。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 13:11:50 +08:00
zyc and Claude Opus 4.8
76d59d06fe
fix: 视频项目第二步复用商品库已生成的三视图,不再「缺三视图」(ZWQ#5 续2)
...
商品库三视图走 standalone Asset、视频项目走项目级 BaseAssetGroup,两套存储不互通 →
商品库生成/采用的商品三视图,进视频项目第二步基础资产读不到、显示「缺三视图」。
修:项目详情 retrieve 时惰性单向同步(幂等,沿用 settle_video_completion 同款自愈模式)——
若商品已有 standalone 三视图(metadata.view=three_view + product_id)但项目商品组尚无采用资产,
就 seed 进项目商品 BaseAssetGroup(candidate+adopted)。已在项目内生成过的不覆盖。
依赖上一commit给商品库三视图打的 view=three_view 标记。
projects 测试:基线已有 4 失败 2 错误(环境 provider 未配),本改动无新增回归。需部署生效。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 11:47:07 +08:00
zyc and Claude Opus 4.8
77759678a7
fix: 商品库生成的三视图打 view=three_view 标记,刷新不丢 (ZWQ#5 续)
...
真因:商品库点「AI生成三视图」走 reference_product 路径,产出资产 name=「图片创作」、
metadata 只有 mode/product_id —— 没有 view=three_view,也非 tri_view 类。导致:
①商品库详情三视图面板刷新后认不出(显示「尚未生成」、采用也丢);
②视频项目第二步基础资产读不到「商品已有三视图」。
修:reference_product 资产与视频项目基础资产阶段生成的商品三视图同款标记 ——
category=product_image + 名字含「商品三视图」+ metadata.view=three_view + product_id。
这样 products is_triview(排除 product_image 不误入角色区)、商品库前端回填(view===three_view)、
视频项目商品三视图判定都能认出。需部署生效;存量旧资产无标记不追溯。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 11:40:23 +08:00
zyc and Claude Opus 4.8
c827191a36
fix: 账单流水 详情列截断 + 状态不换行 + 加跳页输入 (row39/row40)
...
- row39: 详情列文字过长撑得「状态·成功」换行 → 详情列 max-width+nowrap+省略号截断(hover title 看全)、状态列 white-space:nowrap
- row40: 账单流水分页器加「跳至第 N 页」输入框,回车或点「跳转」钳到 [1,总页数] 直达
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 11:19:39 +08:00
zyc and Claude Opus 4.8
8f8bf3283a
fix: 顶栏头像也显示真头像 (row29 续2)
...
上轮只改了侧栏/账户菜单/设置页,漏了顶栏右上角 .topbar-avatar(App.tsx 与 pipeline.tsx 各一处)。
改为有 avatar_url 显 <img> 否则首字;.topbar-avatar 已有 overflow:hidden + img 铺满规则,CSS 不动。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 11:16:38 +08:00
zyc and Claude Opus 4.8
38881c3041
feat: 任务中心批次弹窗加「加入资产库」状态+单图/一键切换 (row38)
...
任务中心点已完成批次的弹窗里,每张生成图现在:
- 显示「已入库」绿标 + 入库态橙描边
- 右下角单图「加入资产库 / 取消」按钮(单图粒度,复用 Asset.in_library 真门控)
- 弹窗头部「一键全部加入资产库 / 全部移出」批量切换
乐观更新 batchImgs+assets,失败回滚;生成时已扣费,此口只控是否进资产库列表、不二次扣费。
弹窗 createPortal 到 body 不在 .image-workbench 作用域,故 .modal 作用域补一份 gen 网格/徽标/按钮样式。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 11:02:28 +08:00
zyc and Claude Opus 4.8
291a8bf394
fix: 头像上传后前端不显示真头像 (row29 续)
...
真因:上传成功且 setUser 写入了 avatar_url,但前端任何头像位置都没渲染 avatar_url,
只显示姓氏首字占位 → 看着像「没更新」。根因:User 类型里压根没暴露 avatar_url 字段。
修:User 类型补 avatar_url;侧栏 .user、账户菜单 .shell-account-head、设置页 av-big
三处头像改为「有 avatar_url 显 <img>,空则回退首字」;.av/.av-big 加 overflow:hidden + img 铺满规则。
后端上传 200 + 直链公读已实测正常,此为纯前端显示修复。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 11:02:28 +08:00
zyc and Claude Opus 4.8
b4e61ce627
fix: 消息中心收件箱副文案单行省略,不换行撑破对齐 (PMC-row19/UI-row2)
...
.msg-brief 从 -webkit-line-clamp:2 改为 1 + word-break:break-all:
长文案超出一行即省略号截断,修复 UI 反馈「文字太长换行后与 UI 框错位」。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 10:32:23 +08:00
zyc and Claude Opus 4.8
cb02907262
fix: 商品三视图回填只取商品三视图,排除角色三视图 (ZWQ row25+row28)
...
上一版回填用 category=tri_view||名字含三视图,把「角色/人物三视图」也捞进了商品三视图面板
→ 商品库点「AI生成三视图」显示的是该商品视频项目里的角色三视图,而非商品本身三视图(row28)。
修正:回填过滤排除任何 metadata.triview_of(角色三视图必有、指向其立绘)及 kind=person/scene,
只保留商品三视图(category=tri_view 且无 triview_of / view=three_view / 名字含「商品三视图」)。
这样既同步回填视频项目生成的商品三视图(row25),又不与角色三视图混(row28)。
后端商品三视图本就带 view=three_view+product_id(services.py 注释明说供商品库回填),纯前端修。
构建: tsc --noEmit=0, npm run build=0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-30 10:24:10 +08:00
zyc and Claude Opus 4.8
1d5c2c0910
chore(bug/qa): 归档测试清单、bug 报告与 QA 诊断脚本
...
- core/bug: 各轮电商项目测试清单 xlsx + 验证报告/套图提示词梳理 md
- core/qa: consumption_summary / diag_login / diag_sessions / probe_usage 诊断脚本
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-29 19:26:36 +08:00
zyc and Claude Opus 4.8
0465838f84
feat(projects): 新建视频项目去掉「0-10秒·快速种草」时长档
...
视频时长选项保留其余三档(精准短片 0-15 / 卖点展开 0-30 / 故事化 0-60),
网格由 4 列改回 3 列铺满;默认选中仍为 0-15,下游脚本生成不受影响。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-29 19:24:59 +08:00
zyc and Claude Opus 4.8
b0b3ac2348
fix(test-round): 测试清单一批 bug 修复 + 团队月限额持久化
...
后端:
- accounts: 团队级月限额持久化(Team.monthly_credit_limit 三态 + PATCH/GET
/api/auth/team/settings/,刷新不丢,PMC#12);头像上传 500→502 可读错误;
设备下线真失效(删并重建 token,旧 token 401)
- assets: 审核类目加 model_portrait,消除三视图"无需审核"误报
- ai/projects/products: 模特已有三视图复用、产品三视图同步回商品库
(metadata.view=three_view)、真人模特三视图回写
前端:
- 商品图删除判断改用真实图片数;团队成员弹窗禁点外部关闭
- 图片预览骨架铺满占位;平台套图左侧栏折叠改导航同款;收件箱长文换行对齐
- 团队月限额改真落库(乐观更新+失败回滚)
测试:新增 TeamSettingsTests(5 条),accounts 全套 36 tests 通过;前端 build 0 error
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-29 18:50:22 +08:00
zyc and Claude Opus 4.8
ca0c3e2300
fix: 商品库视图持久化漏修 + 商品三视图跨模块回填
...
- ZWQ#row22(补): 商品库网格/列表用 useViewMode 持久化(上轮只接了视频项目、
误判商品库无切换跳过,实际 products.tsx 有切换但用裸 useState 不持久化)
- 商品三视图不同步(测试新增): 商品详情三视图面板 triVersions 从不回填已有资产,
只在本次会话点生成才有数据 → 视频项目基础资产阶段生成/采用的商品三视图(落库 tri_view),
回商品库打开面板显示「尚未生成」。新增 useEffect 从 productAssets 回填已有 tri_view
(判定对齐后端 is_triview),并把采用为封面的那版标记已采用
构建: tsc --noEmit=0, npm run build=0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-29 17:23:33 +08:00
zyc and Claude Opus 4.8
6f9b728ac3
fix(视频): 场景/商品也送火山审核, 避免含真人参考图被判「疑似真人」拒
...
场景图与商品图可能出现真人(模特出镜/上身), 此前从不送审, 视频路只能
传原始直链 → 火山报 InputImageSensitiveContentDetected.PrivacyInformation
→ 整批段失败。现按角色流程把 scene/product_image 也纳入送审:
- REVIEW_CATEGORIES 增加 scene + product_image(送审 + 轮询自动覆盖)
- 场景/商品基础资产生成后 on_commit 自动静默送审, 拿到 remote_id
→ 视频路 _seedance_ref_url 换成 asset:// 素材库引用即可放行
- 前端场景卡 + 商品三视图面板挂同款审核盾牌, 可查状态/手动补送审
未改动生成前硬性过审闸(避免无真人的场景/商品被误拦; asset:// 在
processing 态也能引用, 故不拦也能正常出片)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-29 17:01:16 +08:00
zyc and Claude Opus 4.8
f89de99c05
feat: 平台套图启用真平台 logo (YYX-row11)
...
补入 10 个平台真 logo svg(抖音/淘宝/天猫/京东/拼多多/小红书/快手/视频号/亚马逊/1688)
到 public/assets/svg/。PlatformLogo 组件早已引用这些路径(优先真图、加载失败回退色块),
此前 svg 未入库导致部署后缺图回退成色块。入库后部署即显真 logo。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-29 16:47:46 +08:00
zyc and Claude Opus 4.8
ffada7caab
fix: 测试清单(8) 新一轮 — ZWQ/PMC/设置/团队 多项修复
...
视频/工作台/商品库(ZWQ):
- row19 视频阶段移除已取消的【上传视频】按钮 (pipeline.tsx)
- row20 工作台统计栏(总项目/进行中/成片)点击跳转视频项目对应 tab (dashboard/projects/route-config/App)
- row21 最新项目跳转改用真实 projectId, 不再跳到最近打开项目 (dashboard.tsx)
- row22+PMC28 网格/列表视图模式持久化(localStorage), 跨菜单记住用户选择 (projects/ai-tools + 新 hook use-view-mode.ts)
- row24 已有三视图的演员/模特直接复用, 不再强制点AI生成三视图 (pipeline.tsx)
图片生成/设置(PMC):
- row27 任务中心: 6个进行中状态补全归类, 不再把生成中误判为失败栏 (stage-config.ts)
- row29 头像上传500: avatar_url 存公读直链替代超长预签名URL(URLField max_length=200溢出) (accounts/views.py, 需部署)
- row30 显示名保存后回显: 改读 first_name 回退 username, 修刷新仍旧名 (settings.tsx)
- row31/32 隐藏【创作默认】【显示】两个设置模块 (settings.tsx)
平台套图(YYX):
- row3 图片预览铺满占位 (ai-tools-page.css)
团队:
- PMC25 充值/邀请成员/设置月限额三弹窗禁止点遮罩误关 (team.tsx)
含平台套图线上提示词优化(services.py/views.py/api.ts, 前序会话遗留一并提交)
构建: tsc --noEmit=0, npm run build=0 (1755模块); 后端 py_compile OK
注: row29 头像/后端项需部署生效
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-29 16:45:29 +08:00
zyc and Claude Opus 4.8
f3b89f3d49
fix: 测试清单(7) 第7轮修复 — ZWQ/PMC/团队 8处真bug
...
- ZWQ-1 商品库: 编辑删图真生效 + 刷新后悬停垃圾桶图标恢复 (products.tsx/css)
- ZWQ-2 工作台: 最近项目进度条 5→4 段对齐视频项目, 完成态末段红→绿 (dashboard.tsx)
- PMC-4 消息中心: 收件箱文字错位修正 (messages-page.css)
- PMC-5 图片生成: 平台套图费用预估漏乘平台数, 改为 平台数×候选数×单价 对齐实扣(仅改展示, 不动扣费) (ai-tools.tsx)
- PMC-10 火山生图: 失败不再吞 response body, 错误体上抛便于定位 (volcano.py)
- PMC-11 团队: 创建账户弹窗禁止点遮罩误关 (overlays.tsx + team.tsx)
构建: npm run build EXIT=0 (1754 模块); volcano.py AST OK
注: PMC-10/YYX-8角标 等后端项需部署生效
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-29 11:41:00 +08:00
zyc and Claude Opus 4.8
6e7425048c
fix: PMC 测试清单未完成项 + YYX#row22 未读角标
...
PMC#16 账户登录地址不正确:
- 写死的 https://airshelf.com/login(不存在的域名)改成 ${location.origin}/login,
与邀请链接同源,成员拿到的就是当前真实访问地址。
PMC#17/#18 成员三档额度只有月度生效、日/总纯装饰 → 列表显示与配置对不上:
- TeamMember 新增 daily_credit_limit / total_credit_limit(0=不限,迁移 0006);
- reserve_credit 逐档真实管控(每日/每月/累计总额),口径=窗口内 CHARGE 流水 + 在途预留;
- 成员列表"每日额度"由写死"不限"改成真实日额度+今日已用,并新增"总额度"列;
- 创建/编辑弹窗三档额度真入库真生效;补 3 个计费单测(日/总拦截、0=不限)。
PMC#24 同批生成的图片文字/内容雷同:
- 根因=套图/自由创作同批 N 张用同一 prompt 且无变化(只有模特上身图按 index 变);
- 给平台套图/自由参考/纯文生图都加按 index 的版式变体,避开传 seed(防中转站 400)。
PMC#25 重跑应在原任务上重跑而非新开任务:
- 全批"重跑"改为原地复位同一批次卡;"重跑这张/再生成"改为补图进原卡(不覆盖好图、不新开任务)。
YYX#row22 图片生成未读角标(本仓库既有改动一并提交):
- AITask 新增 read_at(迁移 0020 + 索引一致性迁移 0021);导航栏"图片生成"未读胶囊、
商品预览右下角未读分数;查看某商品即标记其生成任务已读、清零角标。
注:PMC#14/#15/#20/#22/#23 早前提交已修,需部署重测;PMC#13/#21 为 provider 侧
生成失败,代码侧重试/退费/僵尸回收/错误外露已就位,需部署后看真实 error_message 定位;
PMC#19 收件箱标记与设计稿逐字一致,待截图复现。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 18:27:15 +08:00
zyc and Claude Opus 4.8
2e1c28abea
fix(image-gen): YYX 测试清单未完成项一轮修复
...
- 加入资产库入口删错对调:恢复单图「更多」入口(单图粒度入库),
删掉整批底部气泡里与独立按钮重复的入口(cover/model/对话流)
- 新建商品抽屉补显式「添加卖点」按钮(原仅回车确认太隐晦)
- 平台套图筛选生效 → 结果区顶部「已开启筛选」提示栏,点清空退出
- 去掉结果批次卡白色容器/边框/内边距+底部分割线,图片区更大
- 未读生成任务角标:AITask 加 read_at 字段(迁移 0020)+ unread/
mark-read 接口;导航「图片生成」数字胶囊 + 工作台商品缩图右下未读分数;
30s 轮询,进任务中心全清、工作台看哪个商品清哪个
注:同区文件含上一轮未提交的 PMC#25 重跑/追加批次逻辑,一并带入。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 18:26:16 +08:00
zyc and Claude Opus 4.8
e6e3c48524
fix: PMC 图片工作台 — 去多余toast + 费用预估对齐实扣
...
PMC#23 删除批次后仍弹「图片已生成」:
- 生图成功不再弹全局 toast(批次卡已就地显示结果),也就不会在「生成中删掉该批次」后
延迟弹出让人误以为删了又生成。
PMC#20 费用预估跟实扣有差别:
- 预估由写死的 ¥0.1/¥0.3/¥0.5 改为按「当前选的生图模型」真实 unit_price 计算
(后端 estimate_cost=unit_price,如 gpt-image-2=¥2),预估与实扣一致。
- ModelConfig 序列化本就含 unit_price,前端类型补上并据此计算。
附注(同批已在早前提交内生效):PMC#5/#10 多批各自续轮询、PMC#8 并发重跑、
PMC#14/#15/#22 生成后自动滚动+清输入。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 17:15:04 +08:00
zyc and Claude Opus 4.8
00e606a6a6
fix: 清单4 未完成项二轮(视频项目收口/选用角色/场景空镜/场景刷新 + 4:5 尺寸)
...
ZWQ#15 视频进度卡 3/4(真因补全):
- current_stage 没推到 VIDEO 时 settle 守卫直接返回 → 永不收口。
submit/poll/adopt 幂等补推 current_stage→VIDEO;进详情(retrieve)检测全段已出片即自愈收口。
存量卡死项目一打开就自动变「已完成」。+2 测试
ZWQ#7 演员库选用角色未自动「已过审/已采用」:
- 真实流程是 attach(选用),非详情弹窗按钮。attach 时显式置 adopt=adopted +
人物立绘自动送审(on_commit)。+1 测试
ZWQ#13 场景出真人致视频被拒(加强):
- 场景空镜约束改为显式压过脚本描述里的人物词(「即使上文提到人也只画环境」)。
ZWQ#17 场景生成中刷新跳新窗口:
- 正在生成的场景草稿不再落盘 → 生成中刷新页面不会与新实体卡并存成两个窗口。
附:平台套图 4:5 尺寸 1664x2080→1728x2160(≥Seedream 5.0 最小面积 3686400px,否则 ARK 退 400)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 17:03:17 +08:00
zyc and Claude Opus 4.8
98b6ba948e
fix: 平台套图/新建商品 YYX 第二轮(清单4 未完成项)
...
平台套图:
- 商品列表无真封面时回退 mock 图(与商品库一致显图)
- 商品分类去掉前缀「//」
- 左侧商品栏可折叠(收起只剩商品图)
- 结果搜索框加 × 清空 + 平台筛选悬浮弹窗(可清空)
- 结果卡精简:去容器/引号/平台/小标题,提示词可折叠展开、张数灰色
- 删悬浮「更多」里重复的加入资产库入口
- 去掉加入资产库后的中央遮罩,只保留左上角已入库标签
- 重跑/单图再生成的新批次置底并自动滚动到底
新建商品抽屉:
- 上传失败:黑色遮罩 + 感叹号 + 提示 + 重新上传胶囊
- 填了内容中途退出:二次确认(复用 ConfirmModal)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 16:51:49 +08:00
zyc and Claude Opus 4.8
217d24f316
fix: 平台套图工作台 YYX 测试清单一轮修复(13 条)
...
- 平台改单选;结果分组/标签名对应所选平台
- 工作台结果区按当前商品隔离(productBatches)
- 平台套图去掉「详情排版」,只出平台头图
- 部分失败给失败占位 +「重跑这张」单张重跑;部分成功批次恢复加入资产库
- 提示词框加大;生图模型选择移入框内作胶囊靠左置底
- 去掉生成按钮下方说明文字
- 工作台「新建商品」改弹抽屉(复用 ProductCreateDrawer),不再跳商品库
- 右上搜索恒显全部平台、改为筛选结果图(按提示词)
- 结果卡参考即梦:显示提示词/平台/张数
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 15:18:21 +08:00
zyc and Claude Opus 4.8
8f32ad69d3
fix: 电商测试清单一轮 bug 修复(视频项目角色/场景 + 图片工作台 + 视频收口)
...
视频项目(ZWQ):
- 演员工作台保存后「我的演员」仍 0 个:保存时加入资产库(in_library=True)
- 资产详情「应用当前角色」自动送审(不再要手动点灰盾)
- 「我的演员」卡 + 待生成 seed 卡补删除入口(垃圾桶,两步确认)
- 新增场景未生成就刷新会丢:sceneDrafts 按项目持久化 localStorage
- 场景 AI 生成强制叠加「无真人」约束,避免出真人致视频被火山拒
- 进入项目默认落到当前阶段(不再恒显第 1 阶段)
- 视频已出但进度卡 3/4:submit/poll/adopt 幂等补推 current_stage→VIDEO,
否则 settle_video_completion 因阶段守卫直接返回、永不收口 completed
图片工作台(PMC):
- 生图走 action 全局单飞锁致并发重跑/多平台套图被拒成「失败/少出图」:
action 加 concurrent 选项,生图不占单飞锁
- 切模块再切回状态丢/数量少:每批各自落盘 pendingIds(onSubmitted 回传),
切回时全部批次各自续轮询
附:含一处早前未提交的图片创作改动(选火山+传参考图强制切 gpt-image-2 + gen 气泡溢出 CSS)。
新增/通过测试:AttachOfficialModel、商品图删除、视频卡阶段收口、参考图强切模型。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 15:11:29 +08:00
zyc
ce7eaefe1d
生图模型可选(火山/gpt-image)+ 模特上身图提示词强化 + 多会话等改动
...
本轮(生图模型选择 + 火山接入):
- 工作室新增「生图模型」选择器(模特上身图/平台套图头部 chip + 图片创作底部 Pill),
默认火山 Seedream,可切 gpt-image-2;选择写入 localStorage,下次进页面读回
- 后端 resolve_image_model 解析所选模型;enqueue_standalone_images 接 image_model
- worker 按模型能力分流:有 image_edit(gpt-image)走多图编辑;无(火山)走
image_generation(image=参考图);新增 _ratio_to_volcano_size 让火山按比例出图
→ 内衣等敏感品类用火山可绕开 gpt-image 的 sexual 内容审核
模特上身图提示词:
- 穿戴/非穿戴分流、按 index 变化动作场景镜头、负面词尾接、多图参考序号自适应
- _product_reference_urls:商品参考真实上传图优先、排除 AI 生成图、可多张
其他(并入此前各会话未提交改动):
- 图片创作多会话(ImageConversation + migration 0019)、任务中心按类型过滤
- accounts/projects/assets/team/auth 等零散调整、相关测试
- 测试脚本(tryon_*.py)、测试清单(core/bug/*.xlsx)
2026-06-27 14:00:28 +08:00
zyc and Claude Opus 4.8
0a519ca892
feat: 任务中心只展示生图任务(模特上身图/平台套图/图片创作)
...
- AITaskViewSet 支持 ?task_type=a,b,c 过滤
- 前端任务中心请求 task_type=person_image,product_image,过滤掉
entity_extraction/script_*/storyboard 等流水线内部任务,只留生图工作室产出
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 11:04:40 +08:00
zyc and Claude Opus 4.8
26577b99b1
feat: 生图模型可选(火山/gpt-image) + 工作台图「加入资产库」收纳 + 任务中心排序修复
...
- AI 工作室生图支持显式选模型:resolve_image_model 解析 volcano(Seedream 图生图,
无 image_edit 时走 image_generation 带参考图)/ gpt-image(image_edit 多图编辑),
未选回落系统默认;enqueue_standalone_images 透传 image_model
- 资产库收纳:Asset 加 in_library 字段(迁移 0007,既有资产 db_default=True 不动);
工作台生成图默认 in_library=False,只在工作台展示,用户「加入资产库」后才进库列表;
assets 视图/序列化器/library 页/types 配套
- 任务中心修复:AITaskViewSet 默认 order_by(-created_at),前端 aiTasks 取 page_size=200。
原因:列表无排序时 MySQL 按 UUID 主键乱序返回,把一批旧失败记录顶到首页,
前端又只取首页 20 条算 全部/已完成/失败 → 误显示「全部失败」(实为 421 成功/少量失败)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-27 10:34:12 +08:00
zyc
de4b20cc7b
模特上身图提示词重构 + 图片创作页 UI 调整
...
后端(模特上身图提示词):
- build_model_tryon_prompt_refs 重写:穿戴/非穿戴分流(穿戴=真实穿身替换原衣,
非穿戴=手持/佩戴/使用不动原衣)、每张按 index 变化动作/场景/镜头、负面词尾接、
多图参考序号自适应(参考图1~N=商品,参考图N+1=模特)
- 新增 _product_reference_urls:商品参考图真实上传图优先、排除 AI 生成图、可多张(≤3),
无真实图回落 cover
- worker run_standalone_image_task 模特分支改用多图取图 + 传 index/n_product
前端(图片创作/工作室):
- 生成数量改 1/2/4;图片比例新增「手动输入」(宽:高 两输入框)
- 临时隐藏「商品库」按钮
- 模特卡:去掉 // 真人模特,标题改图片底部白字遮罩层 + 单行省略
- 工作室壳负边距对齐 .content padding,修复上下被遮挡/裁切
其他:并入此前未提交的商品页改动、脚本 Agent/格式实测文档与 demo
2026-06-27 09:31:44 +08:00
zyc and Claude Opus 4.8
4c8b2d1902
feat: 出图报错捕获真因 + 翻成前端友好提示(故事板)
...
老板/研发要求:有报错时把真因抓出来,做成前端友好提示。
- 捕获真实错误体(openai_compatible._raise_with_body):取代 raise_for_status()。
yunqi 的真因(moderation_blocked / safety_violations=[sexual])只在 body 里,
原来只剩状态行「400 Bad Request for url」→ 真因长期不可见。现在完整抓出。
- friendly_generation_error():把原始报错翻成中文友好提示(内容审核/超时/限流/
凭证/参考图被拒…),前端直接展示;原始报错留 task.error_message 供研发排查。
- 故事板失败:友好提示存 shot.error_message;并撤回「重试 400」——审核拦截重试
也是白拦,改成快速失败+提示,引导用户改措辞(如避免「胸罩/内衣/抚摸/贴身」)。
- 前端:失败帧缩略图加红色「⚠失败」角标(hover 看原因),主视图显示完整友好提示;
不再灰着没反应。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-26 17:03:02 +08:00
zyc and Claude Opus 4.8
d26500bdbd
fix(pipeline): 基础资产页两个轮询空闲不停 → 空闲即停、开工即起
...
现象:停在基础资产页(尤其点「重新提取角色/场景」后)pending-assets 与
poll-reviews 一直轮询、刷屏。
根因:
- poll-reviews 的停止条件写成「只有先见过 processing 才停」,没有审核中资产时
永远停不下来(8s 空转)。
- pending-assets 在该页无停止条件(4s 一直发)。
- pending-assets 把每渲染换新引用的 onRefreshProject 放进依赖 → 每渲染重订阅
并立刻补发请求,越刷越密。
修复:
- pending-assets:一轮发现无在途出图 + genBusy 为空即停;genBusy 变化(开始/结束
生成)时重订阅恢复。onRefreshProject 改走 ref,移出依赖。
- poll-reviews:一轮后端无 processing 即停;genBusy / reviewWake(手动送审)/
pendingGenKey(出片完成→自动送审)任一变化时重订阅,把盾盯到终态再停。
- 终态(active/failed)在最后一轮非空响应即下发,停在空响应安全不丢更新。
空闲坐在基础资产页 = 零轮询;仅有真实生成/审核在途时才轮询且完事即停。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-26 13:16:48 +08:00
zyc and Claude Opus 4.8
669d9a683b
polish: 商品/场景三视图「替换」选图层——通用化 + 场景修复 + 过滤分页
...
- 商品三视图「替换」数据源修复:旧实现只读 productRecord.images(封面1张)
→ 改为 fetch 后端 ?product= 三路并集,只列商品图(product_image)。
- 页脚样式对齐人物/场景卡:hstack 左 ghost「替换」+ 右 primary「AI 生成」。
- 场景卡「替换」修复:旧实现误用人物专用演员库(列出角色数据)→ 场景改走
通用选图层,按 category=scene 取;人物仍走演员库。覆盖 seed/已生成/详情 3 入口。
- 场景过滤:故事板帧也被存成 category=scene(metadata 全空,只能按名字),
过滤掉 storyboard/分镜,只留真场景图。
- 商品/场景选图均加分页,20 个一页(上一页 / X·共N / 下一页)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-25 14:08:58 +08:00
zyc and Claude Opus 4.8
dea9dbb3ed
fix: 修复资产/视频/三视图三处 bug + 脚本模型切 YunQi gemini
...
1. 视频「全部生成」串行短路:任一段提交失败就 break 致后面段不提交
(4 个框只跑 2 个)→ 改 Promise.allSettled 并发,单段失败不拖累其余,
部分失败也刷新并如实报告。(App.tsx)
2. 基础资产/三视图 AI 出图偶发失败「生成不出来」:中转站瞬时抖动
(网络/5xx/429/空返回)一次失败即退费 → 加退避重试 3 次,永久错误
(4xx 内容违规)仍立即退费。(services.py run_base_asset_task/run_triview_task)
3. 商品三视图无法用已有素材:商品卡加「使用已有素材」,选商品已有图 /
上传本地图直接 attach 成三视图(不走平台 AI 生成、不计费)。(pipeline.tsx)
4. 脚本助手:tokenssr 欠费致 GPT-5.5/Gemini 全挂 → 文本模型切 YunQi。
实测 YunQi gpt-5.5 频道扛不住重型结构化任务(skill 全提示词仅 1/5 成功、
常吐空无 JSON),gemini-3.1-pro 5/5 稳定 → 默认改 gemini,停用 gpt-5.5。
按「一 provider 一 key」拆 yunqi_gpt / yunqi_gemini 两 provider。
(.env / settings / 迁移 0017+0018)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-25 12:00:03 +08:00
zyc and Claude Opus 4.8
8222a46202
fix(pipeline): 视频为末步时收口项目完成态 + 列表 5→4 步同步
...
V1 雪藏「拼接导出」第 5 阶段后,完成态(COMPLETED)只在 export.py 拼接成片时
才置,导致视频全部出片的项目永远卡在 videoing,列表末格一直闪烁。
- 后端:新增 settle_video_completion(幂等)+ VIDEO_IS_FINAL_STAGE 开关。
全部片段出片→项目 completed、video 阶段标成功;某段被重跑→退回 videoing。
挂 retrieve(自愈历史卡住项目)/poll-video-segment/submit-video-segment/
adopt-video-version 四入口;收口直接查库,不吃 prefetch 旧缓存致误判。
V2 恢复导出把 VIDEO_IS_FINAL_STAGE 置 False,完成判定交回 export.py。
- 前端:项目列表/网格进度从 5 步同步成 4 步(PROJ_STAGE_TOTAL=4),
export 阶段并入第 4;已完成项目末格走 done(绿)不再用闪烁的 cur。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 17:32:12 +08:00
zyc and Claude Opus 4.8
658aaa222f
feat(storyboard): 故事板改分镜制(单场独立重跑/历史)+ 视频过审闸 + 审核前端如实化
...
三块改动在 services/views/pipeline/App/api 等文件按行交织、且过审闸后端依赖故事板新
模型,无法拆成各自独立可编译的提交,故合并为一次:
· 故事板分镜制:新增 StoryboardShot/StoryboardShotVersion(对标 VideoSegment/Version)
+ 数据迁移(采用版每帧转一 shot+已采用版本)。每镜一个 shot,各自历史版本,可单场
重跑、逐场切换/采用,新增「开始生成故事板/单场重跑/采用某版」端点。重跑非阻塞(后台
静默轮询出图,不锁其它场按钮);历史「查看」与「采用」分离(切版本不丢在制重跑)。
视频取分镜图/删分镜清理/过审闸全部改读 storyboard_shots。
· 视频生成前过审闸:点生成校验含真人脸的人物立绘/故事板分镜是否过审,未过审弹窗列出
哪一镜/哪个,可一键送审,挡住不生成(collect_video_review_blockers + precheck 端点)。
· 审核前端如实化:不再 `|| "processing"` 伪造审核中;送审失败经 onNotify 如实提示;
审核轮询扩到视频阶段,送审后能看着盾变绿。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 17:11:55 +08:00
zyc and Claude Opus 4.8
d6cb280018
fix(assets): 手动送审如实回报,送不出去返回 503 而非空态
...
submit_asset_for_review 改为返回 bool(是否真进入审核);submit-review 端点据此:
当审核服务未启用/未配 SDK/火山未回 Id/调用异常导致没真正送出去,且素材非终态时,
返回 503「审核服务暂不可用」而不是空 review_status —— 否则前端会把「没送出去」
误显示成「审核中」,刷新就打回灰盾(待审核)。新增 503/200 两条回归测试。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 17:11:04 +08:00
zyc and Claude Opus 4.8
d2aa26248d
fix(video): 视频片段数对齐采用版分镜数,修「删分镜后视频步骤仍显示旧数量」
...
项目创建固定铺 4 段视频片段,而 _sync_video_segments_to_script 仅在
增删分镜且该脚本 is_adopted 时才收口。用户通常「采用前」就增删分镜,
那些编辑被 is_adopted 闸跳过;adopt_script 自身又不收口 → 视频步骤
一直停在 4 段,与故事板/采用版分镜对不上。
- adopt_script:采用时按这版分镜数收口视频片段
- poll/skip-storyboard:进入视频阶段前再收口一次(安全网)
- retrieve:视频阶段详情加载时自愈历史脏项目(只裁从未生成过的尾段)
- 已生成/生成中的段绝不动;新增 3 个回归测试
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-24 14:33:23 +08:00
zyc and Claude Opus 4.8
4399da2090
feat(ai): 图像主力从 tokenssr 切到 yunqi(支持 images/edits 图生图)
...
TOKENSSR 余额将尽,切换图像默认 provider 到 yunqi。yunqi 的图生图
端点需 Azure 风格 ?api-version=2025-04-01-preview,不带会 404。
- provider 加 api_version 字段,OpenAICompatible 生图/改图端点自动附加
?api-version=(配了才加,tokenssr 等零影响)
- build_provider 解析 api_version:DB(ModelProvider.metadata)优先 → .env 回退
- 迁移 0007:启用 yunqi:gpt-image-2 为唯一 active 图像模型,禁用其余
- 摘除死代码 YunqiProvider 导出(旧类写死"不支持图生图"会误导)
端到端验证:图生图(三视图,36s)+文生图(14s)均正常出图。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-18 18:15:34 +08:00
zyc and Claude Opus 4.8
9fce7e8fff
feat(core): 平台套图/模特上身图生成设置加可编辑提示词输入框
...
生成结合提示词出图,默认按商品名预填模板,可自由编辑
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-18 14:15:06 +08:00
zyc and Claude Opus 4.8
8e18d1c3c6
fix(core): 新建/删除项目后管线永久卡 loading — 旧详情请求晚到冲掉新项目
...
根因:action() 操作后 refreshProjectDetail() 闭包持旧 activeProjectId,
新建项目导航到 B 后,先发的旧项目详情 200 晚到把 projectDetail 冲回旧项目,
projectDetail.id≠activeProjectId → pipelineProject 变 null → 永久卡 loading(接口全 200 也卡)。
- refreshProjectDetail / 视频轮询 回写前用 activeProjectIdRef 校验 id 一致才 set,丢弃晚到旧响应
- 删除当前激活项目时清空 activeProjectId/projectDetail,杜绝拿已删 id 拉详情的 404 循环
- 详情拉取失败自动退避重试 3 次,404/403 即落错误态;仍失败给「重试/返回项目列表」,不再无限 loading
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-18 12:00:44 +08:00
zyc and Claude Opus 4.8
675b4db0aa
fix(core): 故事板单帧网络超时自动重试 + 在途锁放宽防重复扣费
...
中转站(tokenssr)偶发 Read timeout 会掐掉单帧,4 镜出 3 张卡住不收尾。
出图调用加瞬时错误有界重试(超时/502/连接重置才重试,审核拦截等确定性失败立即抛)。
配套把 poll 在途锁窗口 3min→12min(可配 STORYBOARD_INFLIGHT_STALE_MINUTES),
覆盖 worker 最坏重试时长,避免重试期间任务被判僵尸 → 同镜重复起线程 + 重复扣费。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-18 11:02:17 +08:00
zyc and Claude Opus 4.8
326c34ecd1
fix(core): 资产详情大图随数据显示,缩略图已出大图不再卡转圈
...
- 三视图/立绘大图改为跟数据(url)走,出图完成即显示,不再被在途轮询的
busy 标志挡住——根治「小缩略图已出、大图一直转圈」
- 一并带上工作区其余改动(script_agent / services / tests / ai-tools / actor-library / App)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-18 10:57:02 +08:00
zyc and Claude Opus 4.8
fe38d3a512
fix(k8s): worker 内存 limit 768Mi→2Gi 防 OOMKilled 反复掐生成
...
出图任务在 worker 内把成品图/视频整张下载进内存再上传 TOS,叠
concurrency=4 峰值大,768Mi 会 OOMKilled(Exit 137)→ worker 反复
重启 → 生成入口 ping 不到 worker 报 503。request 同步 256Mi→512Mi。
纯 K8s 配额,不动镜像/代码。节点 16Gi 仅 16% 预留,余量充足。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-18 09:41:53 +08:00
zyc and Claude Opus 4.8
bd719041a5
fix(core): 新建项目选商品卡封面锁 1.4:1 高度,竖图/截图不再拉伸卡片
...
object-fit:cover 裁切 + overflow 隐藏,对齐商品库网格做法
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-18 09:22:23 +08:00
zyc and Claude Opus 4.8
0695c36f4c
fix(ai): 平台套图改走商品主图参考 image_edit · 模特上身图锁商品+模特双图
...
- 平台套图(cover)以前纯文生图,不参考真实商品主图 → 出图与商品对不上;
现以商品主图为参考图1走 image_edit,锁包装一致性,有模特则参考图2=模特
- 新增 build_platform_cover_prompt_refs;model_url 解析对 cover 模式同样生效
- 补回归测试:cover 传商品主图、model 传商品主图+模特图、无主图回落文生图
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 21:58:39 +08:00
zyc and Claude Opus 4.8
7c6d4477da
feat(core): 列表数据在途显示骨架屏(加载态),不再先显示空状态
...
渐进渲染后,列表在接口返回前会短暂显示「0 SKU / 显示 0」的空状态,易被误读为「没数据」。
新增 SkeletonGrid/SkeletonRows(components/loading),区分「加载中(请求在途且无数据)」与
「加载完确实为空」:
- 全局态页(商品库/视频项目/工作台最近项目):App 传 loading={!dataLoaded},未加载完显示骨架。
- 自取页(资产库/商品详情AI素材/图片生成任务/账单流水):各自 loading 标志,首次拉取时显示骨架/加载行。
- 团队成员有 owner 兜底行(非空)不改。
闸:9 页全绿、功能正常;实测 /products 加载期显示骨架→数据到后渲染真实卡片。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 21:37:07 +08:00
zyc and Claude Opus 4.8
4cef215853
perf(core): 首屏渐进渲染——身份就绪即显示,全局数据后台填充不阻塞
...
原 boot 在 me() 后 await loadDataWithRetry() 才 setBooting(false),整屏「加载中…」要等齐
全部全局接口(products/projects/billing/models/未读)中最慢的那个才消失。
改为:me() 校验身份成功即 setBooting(false) 渲染外壳;商品/项目/余额/未读 后台并行填充,
页面骨架先出来、数据到了再补。数据加载失败只记录,不阻塞渲染、不踢登录(token 已验证)。
各页本就处理空初始态;深链(pipeline/商品详情)按 route 独立取详情,不依赖全局列表。
实测:外壳 ~1.3s(me 返回即出)显示,products/projects ~1.7-1.9s 在其后填充——
任何全局接口变慢不再卡住首屏。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 20:40:10 +08:00
zyc and Claude Opus 4.8
c9fb7139ac
refactor(core): 抽出共享 ProductCreateDrawer · 商品/项目新建复用同一流程
...
- 新增 components/product-create-drawer.tsx,products/projects 改用同一右侧 Drawer 组件(products -188 / projects -116)
- ai-tools 配套调整;附 perf-report 产物
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 20:13:40 +08:00
zyc and Claude Opus 4.8
b714976d38
feat(core): 消息中心对齐设计稿 · 处理记录(真实数据)+ 字号/搜索框/页脚 + 归档接活
...
- ops/views.py: 通知 metadata 写入真实 timeline(项目/资产/计费/欢迎,真时间戳),create_once 给旧通知补齐 timeline
- messages.tsx/css: 新增「处理记录」区块(读 metadata.timeline)+ 补回 .msg-timeline/.msg-step/.msg-log 样式;搜索框结构回设计稿 .msg-search;mono 字号对齐 10.5/10px;空态图标色 token 化
- 归档按钮接活:api.archiveNotification + App 装配 onArchive + 详情页脚归档(后端落 archived_at + 本地乐观移除/扣计数)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 20:13:32 +08:00
zyc and Claude Opus 4.8
a0ed8666df
perf(core): 项目列表改轻量序列化 + 计数走真实 count,根治刷新 2-3s
...
/api/projects/ 列表此前与详情共用重序列化器(嵌套 阶段/片段/故事板/时间线 + 每资产算 url),
20 个项目把全套关联拉出 → 实测 ~2-3s,正是每次刷新慢的主因。
- 新增 ProjectListSerializer(轻:名/状态/阶段/product/封面/脚本数/镜数);
ProjectViewSet.get_serializer_class 列表用轻的、详情用全量;
get_queryset 列表走轻查询(select_related product + annotate 计数,不做那串 12 个重 prefetch)。
实测 /api/projects/ 2-3s → 0.48s。
- 新增 /api/projects/summary/(total + by_status,只跑 COUNT,不拉项目对象)。
- 计数显示(侧栏徽标 / 仪表盘 总项目·SKU·N 个)改用分页响应的真实 count(productTotal/projectTotal),
不再用「已加载 20 条」的长度;projects 列表页脚本状态/镜数改读 *_count 字段。
闸:9 页全绿、无瀑布、API 全过;projects 端点提速 ~5x。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 19:27:10 +08:00
zyc and Claude Opus 4.8
c62abed536
fix(core): 删脚本分镜联动删故事板帧 + 演员库自取 person + 分镜编辑行抽组件
...
- views.py: delete-script-segment 同步删对应 StoryboardFrame(原 SET_NULL 留孤儿帧致故事板仍显示已删的场),并重排剩余帧 sort_order
- actor-library.tsx: 演员库改自取 person 资产(全局 assets 已懒加载不再全量预载,否则演员库全空),保存后 reload 即时入列
- pipeline.tsx: 抽出 EditableShotField 组件、PromptBox 参数化
- 附 perf-report 产物
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 19:18:15 +08:00
zyc and Claude Opus 4.8
f1bc5933ef
perf(core): 非资产全局态也改按页懒加载,bootstrap 从 ~10 接口瘦到 ~6
...
启动只保留「每页 shell 都要」的全局数据:商品/项目(侧栏+导航)、余额(顶栏)、
模型配置(多生成页+pipeline 共用)、未读数(侧栏徽标,page_size=1 轻量)。其余移到各页按需:
- 账户页:流水(本就服务端分页)+ 趋势 + 团队成员 本页自取,充值后刷新。
- 团队页:成员 + 团队动态 本页自取,增删成员/充值后刷新。
- 生图工厂:任务历史 + 任务缩略图本页自取。
- 通知:bootstrap 只取 page_size=1 拿未读数(notificationsBadge),列表由消息中心/团队页各自拉。
- 全局默认分页改 DefaultPagination(支持 ?page_size 覆盖,默认 20 上限 200):
根治 projects/products 等列表端点忽略 page_size、数据过 20 即被迫翻页(同 assets 旧病)。
闸:9 页功能正常、无瀑布、API 检查全过;首屏接口数 5~8(原 8~13)。perf 预算下调到新基线。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 18:58:53 +08:00
zyc and Claude Opus 4.8
d959543d43
feat(core): 故事板改为「一场=分镜表」+ 确认故事板按钮气泡引导
...
- ai/services.py: 故事板单帧提示词改为按场拆多分镜、纵向排成竖屏分镜表(不同景别/运镜),并锁人物脸/商品一致性
- pipeline.tsx: 底栏统一「确认故事板」,未生成时点击弹气泡引导先生成(不再假装跳过)
- pipeline-page.css: 配套 sb-confirm-pop 气泡样式
- 附测试截图与流程文档/perf 产物
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 18:32:06 +08:00
zyc and Claude Opus 4.8
2f6d3f5823
perf(core): 全站资产改服务端懒加载,撤掉 bootstrap 全量 allAssets
...
不再在启动时一次性拉全部资产(数据多时随之变慢/串多页),各页按需服务端分页/过滤:
- 生图(ImageWorkbench 模特库按 category=person、AssetFactory 按 ai 生成图)页面内懒加载。
- 商品库/项目向导封面图改用后端内嵌 cover_preview_url / images[].preview_url,不再反查全局 assets。
- 商品详情 AI 素材按 ?product 懒加载(上传/生成/采用三视图后刷新)。
- 工作台资产总数走轻量 /assets/summary/。
- App bootstrap 删除 api.allAssets() 与全局 assets state;loadData 仅留必要全局数据。
- 后端 ?product 过滤并集补上 ProductImage 关联资产,等价前端原 belongsToProduct。
- pipeline 用项目详情已内嵌的 *_url 显示,调用处传空 assets(不再依赖全局全量)。
闸验证:9 页功能正常、无分页瀑布、无接口报错;首屏不再含资产全量拉取。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 18:25:05 +08:00
zyc and Claude Opus 4.8
59ab3c0404
perf(core): 资产库改服务端懒加载分页(tab/筛选/计数走后端,不再前端取全量切片)
...
- api.ts 加 assetsPage(分页+tab/category/source/type/product/q/metadata 过滤)、
assetSummary(tab 计数)、assetFacets(某 tab 真实存在的来源/类型/metadata 取值)。
- LibraryPage 不再吃全局 assets 全量数组:列表按页拉、tab 徽标走 summary、
筛选下拉走 facets(「只列真有的」体验保留)、搜索去抖、上传/删除后刷新。
- App.tsx 不再向 LibraryPage 透传 assets。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 18:10:05 +08:00
zyc and Claude Opus 4.8
ce809b2d32
feat(core): 资产端点加服务端过滤/计数/facets + 商品嵌 preview_url(为前端按页懒加载铺路)
...
- /api/assets/ get_queryset 支持 tab(对齐前端 assetTab 分桶)/category/asset_type/source/
product(metadata.product_id 或 origin_task→project→product)/q 搜索/m_<key> metadata 过滤,
默认 -created_at 排序(无 ORDER BY 分页会重/漏)。
- 新增 /api/assets/summary/(各 tab 计数,供 tab 徽标)+ /api/assets/facets/
(某 tab 下真实存在的 来源/类型/指定 metadata 键取值,供下拉「只列真有的」)。
- ProductSerializer 内嵌 cover_preview_url + images[].preview_url,products/项目向导/pipeline
缩略图不再依赖全局 assets 全量数组反查;product 视图 prefetch 图片/封面资产文件防 N+1。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 18:03:07 +08:00
zyc and Claude Opus 4.8
200871847a
fix(core): 商品详情卖点可编辑+去假数据 / 出图后不再整页重载 / 图片长效缓存
...
- 商品详情页核心卖点:编辑态原是纯静态文本、且 save 不提交 selling_points,
既改不了也存不了;改为可改/删/回车增,save 带 selling_points 一起 PATCH。
- 去掉详情页 name/cat/target/卖点 的「设计稿假数据」fallback —— 商品没卖点
时不再凭空显示护肤品卖点,空值显示「未填写」。
- 出图成功后 submitAndPollAsset 不再整页全量 loadData(十几个 setState 触发
全页大重渲染),只刷当前项目详情 + 轻量刷余额。
- TOS 上传对象加 Cache-Control: immutable 长效强缓存,重渲染不再重拉图。
- products 序列化器内嵌商品图/封面 preview_url(并修回错位的 read_only_fields)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 18:01:29 +08:00
zyc and Claude Opus 4.8
8ba76e5bb7
perf(core): 资产预览改 TOS 公读直链 + 通知只取首页,减刷新开销与缓存失效
...
- 资产 preview_url 从「逐图签发预签名 URL」改为虚拟主机式公读直链
(https://{bucket}.{host}/{key} )。桶公读已验证免签可访问;直链稳定可被浏览器/CDN
缓存,而签名链每次都变、1h 过期反而打不到缓存。boto3 也移出序列化热路径。
- allNotifications 不再逐页翻全部(原 O(N) 随消息增长拖慢每次刷新),只取首页 100 条
(侧边栏徽标 unread_count + 团队动态仅展示最近 6 条已足够);「共 N」改用后端真实 count。
- perf-probe:page_size 由 API 级硬闸确定性守住后,浏览器端「资产翻页」降为提示
(翻 1~2 页是资产真超 200 的合法分页,仅 ≥3 页才疑似 page_size 失效)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 16:58:48 +08:00
zyc and Claude Opus 4.8
1ff7be2b56
perf(core): assets/ledgers 列表 defer 掉 AITask 巨型 payload 列,根治取全部资产 60s+ 慢查询
...
- /api/assets/ 列表 select_related('origin_task__project') 为解析资产归属商品,
会把每个资产关联 AITask 的 request_payload/response_payload(完整 AI 请求/响应 JSON)
整行拖出 → 取全部 200 资产实测 >60s 超时,数据越多越慢(用户报的「刷新越来越卡」)。
加 .defer 这两列后 0.76s,product 仍正常解析、序列化 0 额外查询。
- billing/ledgers 同模式补 .defer(task payload)。ai/billing.summary 早已 defer,assets/ledgers 本是漏网。
- 附 qa/function-audit/perf-probe.mjs 性能验证闸 + PERF-GATE.md(API 确定性断言+浏览器功能守护)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 16:48:15 +08:00
zyc and Claude Opus 4.8
9bdd0683f8
fix(core): 商品详情页三视图改走 image_edit 参考真实主图 + 该商品 AI 素材归属
...
- 商品详情页「AI 生成三视图」原走独立生图老链路(纯文生图),只凭商品名脑补,
出来通用图不像真品。改:前端传 reference_product;后端 run_standalone_image_task
据此取商品主图走 image_edit(复用 build_product_triview_prompt_refs 锁包装),
取不到主图优雅回落文生图。图片创作页(自由创作)不带标记,不受影响。
- 商品详情页素材区改为只显示「该商品」AI 素材(asset.product 归属)而非全团队。
- 首登水合带重试,失败不再静默(否则页面卡在全 0,要刷新才好)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 15:54:04 +08:00
zyc and Claude Opus 4.8
0d1fce1cc1
fix(core): 基础资产「生成中」占位卡刷新后从后端认领恢复(出图本在 worker 跑,只是前端 loading 丢了)
...
问题:立绘/商品图出图是异步(worker),但 loading 占位只活在前端内存 genBusy + 当前页轮询 Promise,
刷新即丢 → 占位卡退回「待生成」,虽 worker 仍在跑、跑完手动刷新才见。
修复:
- 后端 GET /api/projects/{id}/pending-assets/ 返回在途出图任务(id/kind/label/status,读 request_payload)
- 前端进基础资产趴轮询该端点,据 (kind,label) 用 pendingHas 把对应占位卡置「生成中」;
在途数减少=有任务完成 → onRefreshProject 把占位卡换成真卡。离开该趴停止轮询。
tsc + py_compile + 21 测试通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 15:36:30 +08:00
zyc and Claude Opus 4.8
296888f0bf
feat(core): 基础资产 Agent 化 — 商品三视图(image_edit 参考主图)+ 人物立绘/三视图异步生成 + 演员库/详情
...
- 商品三视图:有真实商品主图时走 image_edit,以主图为参考锁包装一致(品牌字/配色/外形/Logo)
- 人物:据「某一版立绘」异步生成配套三视图(image_edit,worker 内跑),立绘/三视图各存版本可切换
- 基础资产出图改异步(run_base_asset_task / generate_triview_task),Web 层不被慢出图占住
- 前端:演员库浏览/新增、人物详情(立绘+三视图+版本切换/下载/查看大图)、按 busyKey 的单卡并发 loading(genBusy,替代全局 genBusyKey,各按钮互不阻塞)
- dev:本地连云端 MySQL 复用连接(CONN_MAX_AGE/health check/connect_timeout),仅 development 生效
- 含 projects 测试补充
tsc + py_compile + 26 后端测试通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 15:10:22 +08:00
zyc and Claude Opus 4.8
da0c7edfe2
perf(core): 资产/通知「取全部」改大页+并行,根治每次刷新串十几个请求
...
资产接口原固定 20/页且不支持 page_size,前端 allAssets 逐页串行翻完(190 资产=10 个
串行请求,每个 0.5~1.7s 依次等)→ 整页刷新好几秒。
- 后端:AssetViewSet 加 AssetPagination(page_size_query_param,上限 200)
- 前端:allAssets/allNotifications 改「首页大页(200/100)+ 剩余页 Promise.all 并行」
资产 ≤200 时 1 个请求取全;再多也并行不串行。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 14:52:19 +08:00
zyc and Claude Opus 4.8
608c8aeb7f
refactor(core): 基础资产改对逻辑+对齐设计稿(一组多版本候选 + 详情弹窗 asset-detail-grid)
...
逻辑(后端):用 BaseAssetGroup 本来的设计,不再每次生成新建组
- generate_base_asset 复用同实体的组(商品=唯一商品组;人物/场景按 label):追加 candidate + 采用最新
- 版本 = candidate_assets,采用/当前 = adopted_asset;采用/切换走真 adopt-base-asset(下游只认 adopted)
- 人物三视图绑定到「某一版立绘 asset」:metadata.triview_of=<立绘 asset id>,同立绘多次=同组追加候选
- generate-triview 端点改取 portrait_asset_id;attach-base-asset 坏参数 404 加固
设计(前端):
- 人物/场景卡对齐设计稿(.prompt-box 可编辑 + 重跑/替换 + 转圈态,区头 N 个 + 克制「+ 新增」)
- 详情弹窗整套换成设计稿 asset-detail-grid:左大立绘(3:4)+版本缩略条;右三视图 section(16:9 + 重跑/下载 + 单张大图 + 暂无 tip + v1/v2 版本条)+ 提示词 section;脚部 下载立绘 + 使用该资产;场景无三视图
- 商品三视图内联面板版本=candidate_assets、采用走真 adopt
- 修:.thumb/.v-thumb/.h-thumb 非 .placeholder 导致缩略图不显图 → 接 --mock-media-url
本地 playwright 截图实测:基础资产卡 + 详情弹窗均按设计稿渲染。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 14:01:15 +08:00
zyc and Claude Opus 4.8
a9b7f077b9
feat(core): 基础资产页按流程文档补完 step4(人物/场景详情+演员库+三视图绑定立绘)
...
人物/场景:
- 卡片可点开详情弹窗:立绘大图(hover 右下角 下载/查看大图)+ 立绘版本切换 +
提示词重跑(覆盖卡片立绘,归入同角色)+ 应用到当前项目;场景详情不显示三视图
- 进入基础资产自动生成脚本提取的待生成人物/场景(带 loading),每项目一次
- 「替换」→ 演员库 replace 回填;人物区头部「演员库」入口
三视图:与「某一版立绘」1:1 绑定(metadata.triview_of=立绘组id)
- 生成/重跑立绘 → 链式据该立绘 image_edit 出配套三视图(锁角色一致性)
- 详情切换立绘版本 → 三视图跟着切;可据当前立绘再出多版,下方版本小图可切
- 后端 generate_person_triview + 端点 generate-triview,复用 model_library 三视图 SOP
商品三视图弹窗:记录版本、切换查看、重跑生成、采用此版本
演员库(新建 components/actor-library.tsx 覆盖层):
- 平台预设演员 / 我的演员两 tab + 添加演员工作台(AI 生成 / 本地上传保存)
- 替换基础资产卡:新增后端 attach-base-asset(把现有资产挂为候选并采用)
合并 dev 进来的火山真人审核绿/红盾到新的实体卡。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 12:00:56 +08:00
zyc and Claude Opus 4.8
521f5f4535
fix(core): 脚本 agent 用通用字段解析,根治模型 schema 漂移致旁白/画面空
...
模型每次生成都换字段名(scene/screenDescription/画面…;dialogue 字符串 /
lines:[{role,content}] / caption…),逐一追变体是治标。改为通用解析:
- _pick_field:优先键命中 → 否则按关键词模糊匹配,跳过 bgMusic/note/shotNo 等非内容键
- 画面来源:visual/scene/screenDescription/画面… 任意命中
- 旁白来源:结构化 dialogue/lines 优先,其次整句 dialogue,再退 narration/voiceover/caption/字幕
实测覆盖 4 种真实/契约变体,全部正确填充;新增通用解析回归用例,23 测试通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 10:38:23 +08:00
zyc and Claude Opus 4.8
0280c2e192
fix(core): 脚本 agent 再兼容 lines/caption 变体,补全旁白漏空
...
豆包不同型号吐不同 schema:Lite 用 dialogue(字符串)+subtitle;Pro 用
lines:[{role,content}]+caption。上一版只认 dialogue/subtitle,导致 Pro 变体
画面能填、旁白仍空。normalize_draft 再扩容:
- 口播来源并入 lines(每项 content/line/text)、voiceover;subtitle/caption 兜底
- 画面来源并入 visual_description
新增 lines/caption 变体回归用例,全套 22 测试通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 10:24:28 +08:00
zyc and Claude Opus 4.8
a7f1b0da1e
fix(core): 脚本 agent 兼容模型 ScriptDraft/shots 变体,修旁白/画面全空
...
豆包 Doubao-Seed-2.0-Lite 常不按扁平契约输出,而是回
{"ScriptDraft":{"basicInfo":...,"shots":[{scene,dialogue,subtitle}]}}。
normalize_draft 在顶层找不到 segments → 走补占位镜兜底 → 旁白/画面全空(只剩 role)。
normalize_draft 增加容错:
- 解开 {"ScriptDraft":{...}} 外壳;basicInfo 的 camelCase 时长/比例拍平
- shots → segments;每镜 scene→画面、dialogue/subtitle→旁白
- 防 dialogue 为整句字符串时被逐字符遍历
原扁平契约路径不受影响。新增 apps/ai/tests.py 3 个回归用例,全套 21 测试通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 10:09:09 +08:00
zyc and Claude Opus 4.8
a0ffb6fc8e
fix(core): 彻底修进入新建项目串台旧项目脚本
...
上一版没根治:action() 的后台 refreshProjectDetail 用旧 activeProjectId 拉到旧项目,
异步写回 projectDetail,而 pipelineProject=projectDetail||activeProject 无条件优先用它,
导致刚建的空项目仍渲染上一个项目的脚本(实测 Playwright 复现)。
改为渲染时校验 projectDetail.id===activeProjectId 才采用,否则回退 activeProject(列表项
已含完整嵌套脚本)。配合上一版的乐观 setProjectDetail/插入 projects + key=project.id,
新建项目即时显示空态+行30 三选项。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 18:27:44 +08:00
zyc and Claude Opus 4.8
3313269438
fix(core): 修复新建项目脚本助手串台旧项目脚本(Playwright 实测发现)
...
后台 hydrate 期间进入刚建的项目,pipelineProject 会先闪出旧项目(projectDetail 滞后),
脚本助手 chat 用旧项目的 currentScript 初始化并持久化到新项目 key,导致空项目错显
「已有3镜脚本」、行30 三选项不出现。修:
- 新建项目 onCreate 即时 setProjectDetail(created)+插入 projects,pipeline 不再闪旧项目
- PipelinePage 按 project.id key,切项目时 chat 等状态干净重挂
- chat auto 派生提示(「已有N镜」)不落 localStorage,杜绝跨项目串台
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 18:15:28 +08:00
zyc and Claude Opus 4.8
366e077c05
feat(脚本): 按流程文档重写脚本阶段(自动提取人物/场景 + 标签胶囊改写 + 基础资产按标签 seed)
...
后端:
- 出稿后新增轻量提取调用,从脚本抽取人物/场景标签及每个标签的建议生图提示词,
写入 project.metadata(cast/scenes/cast_prompts/scene_prompts)
- 提取调用接入计费闭环(reserve→charge/release,记为 script_optimization);
best-effort:无模型/预扣失败/调用失败/解析失败都吞掉返回空,绝不阻断出稿
- generate_base_asset 增加 label,落 group.metadata,把生成结果归回脚本标签卡
前端:
- 设定卡风格补齐到 5 个(真实测评/痛点种草/小红书种草/开箱测评/对比展示)
- 标签改为待确认胶囊流:增删不立即落库,排进队列在输入框上方显示可撤销胶囊,
点发送才整体重写;待删划线、待加虚线
- 基础资产人物/场景按提取标签逐个 seed 卡,显示 AI 提示词、可改后生成
测试:新增提取+计费+release+label 共 4 个用例,全套 24 个通过(sqlite test 设置)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 17:59:41 +08:00
zyc and Claude Opus 4.8
76b3ce94f9
test: 添加 QA 测试清单与流程文档
...
core/test/ 测试产物:测试清单 xlsx、截图 _imgs/_imgs2、流程.md
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 17:25:24 +08:00
zyc and Claude Opus 4.8
9be2042520
fix(core): 测试清单 行24/28-39/46 — 流水线脚本&资产/消息页 + 单镜重跑后端接口
...
前端流水线(pipeline.tsx):脚本助手三选项指引(AI全生/一句话/自带脚本)+来源风格推荐;
风格/人物设定卡并持久化到 project.metadata;Enter发送/Shift+Enter换行;长文折叠10行;
生成进度流提示;分镜人物/场景标签可编辑并持久化+点击添加分镜;单镜重跑/删除即时反馈;
脚本助手记录按项目 localStorage 持久化;Stage2 基础资产补替换/重跑/可编辑提示词;
三视图采用弹窗+缺三视图气泡。
消息页(messages):复用全站 .search-inline 搜索框、去掉小标题背景方块。
视频项目(projects):列表按创建时间倒序,新建置顶。
性能:action 改后台 hydrate,消除创建/确认后白等(行29/37)。
后端(projects/ai):新增单镜 AI 重跑接口 POST /projects/{id}/rerun-script-segment/
(regenerate_script_segment 服务,复用 AITask+计费 reserve/charge/release;+2 单测)。
前端 build 通过;后端 check 0/无新迁移/apps.projects 14 测试通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 16:51:32 +08:00
zyc and Claude Opus 4.8
f7a403ead3
fix(core): 测试清单 行16-33 — 商品详情/视频项目/新建向导/图片生成 批量修复
...
商品库+详情(行16-23):AI素材空状态缺省页;三视图16:9+版本历史切换+采用按钮;
详情「生成视频」预勾选商品、快捷生成图带入商品;管理商品编辑态保留底部统计;
删除商品 icon+DELETE ITEM 文案、乐观删除防重复点击;卡片图铺满占位区。
视频项目+新建向导(行24-28):筛选脚本来源按真实数据渲染;新建项目内「创建新商品」
右侧抽屉+创建后自动选中;开始栏 sticky 常驻;默认选中商品即显示卖点、未填完禁用开始;
去掉脚本风格/人物设定区块。
图片生成工作台(行29-33):模特单选;生成中改 spinner 动态图标+按钮间距;多任务并行;
重跑追加批次而非覆盖+更多按钮 hover 气泡菜单+「加入资产库/取消」切换与提示弹窗;
多批次本地持久化恢复。
收尾:App.tsx 接 initialProductId/preselectProductId/onCreateProduct/onAdoptTriView;
全局 toast 自动消失(成功3s/错误5s)修复行17③/22「右上角提示一直挂着」。
tsc -b && vite build 通过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 15:10:26 +08:00
zyc and Claude Opus 4.8
57018fb101
fix(core): 测试清单 行4-15 — 记住我7天/工作台布局/商品创建选择弹窗/上传图持久化/清空筛选
...
- 记住我7天:勾选才持久化token+预填用户名,7天过期强制重登(localStorage vs sessionStorage)
- 工作台:最近项目进度/状态列对齐、快捷&提示卡片圆角边框、余额按钮金额左对齐
- 商品创建成功改为复用弹窗,选择 继续创建/去新建项目;主图随创建上传持久化
- 商品卡显示真实主图、点视频进详情视频项目tab
- 商品库/视频项目补 清空筛选 按钮
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 14:13:52 +08:00
zyc and Claude Opus 4.8
77c037495e
异步生图兜底:回收僵尸出图任务(worker 崩溃后退还被占额度)
...
worker 崩溃/重启可能留下卡在 RESERVED 的出图任务,额度被一直占住、前端也永远等不到。
每次新提交时顺手回收:>10 分钟仍 RESERVED 的标记失败并退还预留额度(与导出僵尸清理同思路,
无需额外定时任务)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 16:41:23 +08:00
zyc and Claude Opus 4.8
a749be5837
单图生成改为异步(Celery+AITask+前端轮询),与视频同架构
...
把独立生图从「请求内同步出图」改成异步任务,彻底根治整站 502:
- 后端 enqueue_standalone_images:Web 请求只建任务+预留额度(秒级),慢 ARK 出图派发给
Celery worker(generate_standalone_image_task)。Web 层不再被 ~30s 请求占住 worker,
健康探针不会被饿死 → 整站 502 从根上消失。
- run_standalone_image_task:worker 内单张出图,成功落库扣费/失败退费,幂等(只处理 RESERVED,
重复投递不二次扣费)。
- 提交成功后浏览器关闭/断网,worker 仍把图生成并落库,重开素材库即可见(异步天然抗断连)。
- 视图 POST 返回 202+任务列表,新增 GET ?ids= 轮询状态并带回成图;前端 submit+poll。
- count 上限 4→12,与 UI 一致。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 16:38:06 +08:00
zyc and Claude Opus 4.8
3472c3cc9c
修复整站502(健康探针被慢请求饿死)+全部模特死链+图片并发限流
...
- 后端 gunicorn 加 --threads 4:纯 sync worker 下几张图就占满 3 worker,
健康探针 /api/health/ 拿不到 worker→超时→pod 判不就绪→流量被掐→整站502。
图片生成 I/O 密集,加线程后慢请求不再饿死探针/其他接口。
- 前端图片生成并发上限 2:每张仍独立短请求,但不再 N 条一起砸单 pod 致 OOM。
- ai-tools 全部模特→ 接成展开/收起全部模特(原为纯 span 死链,模特>6 时第7个起选不到)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 16:15:49 +08:00
zyc and Claude Opus 4.8
9c3e4e5c8b
图片生成改为每张一条并行请求,根治多图生成超时 500
...
根因:多图生成走一条 HTTP 串行出 N 张,4 张累计 >120s 被 gunicorn 强杀 worker → 500
(日志实锤 SystemExit on ARK response.begin)。采纳用户建议拆成「每张一条请求」:
- App.tsx generateImages: 拆成 N 条并行单张请求(Promise.allSettled),单张约 30s 不超时,
并行后总耗时≈单张(比串行快 N 倍),任一张失败只丢那张(各自独立扣费/回滚)
- Dockerfile: gunicorn --timeout 120→300,给慢 ARK 留余量(双保险)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 15:38:08 +08:00
zyc and Claude Opus 4.8
a8852345db
修复线上视频导出卡死(OOM)+ 导出健壮性加固
...
根因:后端容器内存 limit 仅 768Mi,ffmpeg 编码 1080P 竖屏时内存峰值超限被
K8s OOMKill,导出后台线程随 Pod 重启而死,任务永远停在 35%(本地无 limit 29s 出片)。
- k8s/core/api-deployment.yaml: 后端内存 limit 768Mi→2Gi、requests 256→512Mi,
给 ffmpeg 足够编码空间(根治)
- export.py: ffmpeg subprocess 加 900s 超时(卡死不再永久 RUNNING)+ -threads 2 降内存峰值
- views.py: submit-export 清理超 5 分钟未结束的僵尸任务,前端不再无限转圈
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 13:58:18 +08:00
zyc and Claude Opus 4.8
5e2bc0fc5a
修复线上视频导出失败 + 配音预览音画同步
...
- Dockerfile: 补装 ffmpeg 与中文字体 fonts-noto-cjk,修线上导出报
"No such file or directory: 'ffmpeg'" 及字幕中文方块;换阿里云 apt 源防构建超时
- export.py: 字幕字体加载加 Noto CJK glob 兜底,适配不同版本 fonts-noto-cjk
- pipeline.tsx: 配音预览改 Web Audio 精确排程(借鉴 WebAV)——预解码 +
source.start(when,offset) + 增量重排,正在发声的句绝不掐断,消除字幕音错位与卡顿
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-15 13:20:30 +08:00
zyc and Claude Fable 5
ec90960a56
ci: 触发构建(Gitea 重启后验证流水线恢复)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-15 10:50:38 +08:00
zyc and Claude Fable 5
0bcde3072d
ci: 重新触发部署流水线(上次 push 未生成 Actions run)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-15 10:17:43 +08:00
zyc and Claude Fable 5
216a711291
后端生成闸+多项修复;前端全站更新;QA 审计与报告
...
后端:
- 新增 celery_health 生成前置闸——无 worker 在线时图片/视频生成入口
一律 503,防"提交到 ARK 后无人轮询、结果悬空+额度冻结"的数据丢失
- 拼接导出:帧率跟随源众数、字幕逐句重映射、原声/BGM 混音修复
- 资金核算审计脚本 + genesis 账目回填 + 滞留预留清理命令
- 接入 yunqi provider 与豆包 TTS 模型(catalog/migrations/bootstrap 命令)
前端:全站页面更新(pipeline/library/products/projects/team/account 等),
新增共享 pager 分页组件
QA:刷新 function-audit 全量输出,新增 full-qa 报告
文档:BP 产品介绍资料、design/CLAUDE.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-15 10:06:15 +08:00
zyc and Claude Fable 5
890cb9ab67
chore(core/qa): function-audit toolchain + parity/audit reports + pixel-perfect skill
...
- qa/function-audit: playwright 行为审计工具(audit.mjs/verify-modals.mjs/pages.json)
+ 18 页审计产出(*.audit.md/json、summary、运行日志)
- qa/visual-parity: 调试/测量辅助脚本(_dbg*.mjs/_measure.mjs/_off.mjs)
- core/还原度核对报告.md: 18 页 pixelmatch 核对结果(含 vite 代理陈旧坑记录)
- core/还原与接口待办.md: 逐页还原度/真实数据/交互接入待办总表
- .claude/skills/pixel-perfect-react: 像素级还原 React 的 SKILL 文档
- frontend/public/_devlogin.html: 临时本地登录辅助页(可删)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-06-10 09:41:30 +08:00
zyc and Claude Opus 4.8
3fac38c5ef
feat(core): notification inbox infinite scroll + command palette fix (+ pending WIP)
...
消息中心:全量渲染 → 真·后端分页滚动加载
- backend(ops/views): NotificationPagination(10/页,page_size 可覆盖)+
响应回 type_counts(按收件人绝对计数,不受分页/搜索影响)
- frontend(messages): 自管分页,滚到底加载下一批;tab/搜索走服务端并重置到第1页;
代号作废在途旧请求防切换卡空白;乐观标已读;「已加载 X / Y」分母用当前筛选总数
- api/App/types: listNotifications 支持 page/page_size/search;allNotifications 携带 type_counts
命令面板(侧边栏搜索):修复点开后 UI 错位
- app-shell: 遮罩 className 漏了基类 shell-command-bg(只有 .show)致无定位塌到左下;
补回基类 + header 类名对齐 .shell-command-h
- messages-page.css: 工作台收进视口高度,收件箱在面板内滚动
本次提交一并带入此前若干未提交 WIP(account/ai-tools/library/pipeline/products/settings +
accounts/ai/assets/billing/projects 后端),按用户要求整体推 dev。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-10 09:37:41 +08:00
zyc and Claude Opus 4.8
aa4bdeac83
chore(core/backend): update .env (DB_BIND_ADDRESS + trim CSRF origins)
...
- DB_BIND_ADDRESS → 192.168.124.137
- DJANGO_CSRF_TRUSTED_ORIGINS: drop api.airshelf.airlabs.art
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-09 14:53:16 +08:00
zyc and Claude Opus 4.8
0873e724bf
feat(core/frontend): pipeline stage editor (burn-in controls) + double-submit guard & button greying
...
Pipeline (脚本→资产→故事板→视频→拼接):
- Stage1 render real script shots + wire 确认脚本→adopt (advance stage)
- Stage2 add person/scene AI-生成 buttons + clickable category tabs
- Stage4 auto-poll videos to completion + per-segment upload + real frame thumbnails + download
- Stage5 real timeline editor: clips undo/redo/split/copy/delete/drag-reorder/zoom,
subtitle style + per-clip text editor, transition select (xfade preview),
BGM upload + volume, save draft, export-with-save → shows/download final MP4
- embedded asset URLs everywhere (beat assets pagination)
UX: re-entry guard in action() (no double-submit anywhere) + greyed :disabled
styles for btn-aigen/chat-mode/pill-cta/tl-action so generate buttons visibly
disable while generating.
Also includes prior uncommitted frontend work: settings preferences/sessions/avatar,
asset delete, account/team/products pages, fonts.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-09 14:46:42 +08:00
zyc and Claude Opus 4.8
92826dec14
feat(core/backend): pipeline continuity + threaded ffmpeg burn-in export + upload/save-timeline
...
Video pipeline (script→assets→storyboard→video→stitch):
- robust split_script_into_segments (4 non-empty scenes), scene-aware storyboard/video prompts
- link VideoSegment→ScriptSegment + storyboard-frame reference image (graceful text fallback)
- idempotent poll_video_segment (no double-charge on repeated polling)
- threaded export (no Celery worker needed) + poll-export endpoint
- run_export_job rewritten to filter_complex: per-clip trim, xfade transitions,
subtitle burn-in (Pillow PNG overlay; this ffmpeg lacks libass), BGM mix
- upload-video-segment / upload-bgm / save-timeline endpoints
- serializers embed asset preview URLs (beat assets pagination); Pillow added to requirements
Also includes prior uncommitted backend work: account preferences/sessions,
billing trend, product/asset endpoints, accounts 0002 migration.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-09 14:46:16 +08:00
zyc and Claude Opus 4.8
d41e487f08
feat(k8s): 新增 core 真应用(前端+Django API+Celery worker)构建与部署
...
- core/frontend: Vite 多阶段镜像 + nginx 同源反代 /api,/admin,/static(零 CORS)
- core/backend: Django gunicorn 镜像 + entrypoint(自动 migrate/collectstatic)+ WhiteNoise
- k8s/core: api/worker/web Deployment+Service + ingress(airshelf-web.airlabs.art)
- workflow: 追加 core 前后端 build/push,从 core/backend/.env 套生产覆盖生成 env Secret 后部署
- .gitignore 放行 core/backend/.env;.env 白名单加入 airshelf-web 域名
- 含前端 WIP 还原改动
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-05 10:21:41 +08:00
zyc
cfdcd84a30
feat: add AirShelf core implementation
2026-06-05 10:21:40 +08:00
zyc and Claude Opus 4.7
9bcf943e82
ci: 添加 Gitea Actions 部署流水线 + K3s 清单
...
对齐 jimeng-clone 的流水线结构(master→prod / dev→dev),适配 AirShelf 纯静态形态:
- 电商AI平台/Dockerfile · 纯 nginx,无 build 阶段
- 电商AI平台/nginx.conf · 多入口 try_files,不 fallback 到 index.html
- k8s/ · web-deployment + ingress + cert-issuer + redirect middleware
- .gitea/workflows/deploy.yaml · build/push 重试 3 次,deploy 重试 5 次,失败上报日志中心
- prod 域名 airshelf.airlabs.art / dev 域名 airshelf.test.airlabs.art
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-15 18:12:56 +08:00