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>
This commit is contained in:
zyc
2026-06-17 18:01:29 +08:00
co-authored by Claude Opus 4.8
parent 8ba76e5bb7
commit 200871847a
11 changed files with 367 additions and 65 deletions
+4 -1
View File
@@ -488,8 +488,11 @@ export function App() {
const taskId = submitted?.task?.id;
if (!taskId) return null; // 提交失败(余额不足/无 worker 等),错误已由 submit 抛出处理
const { assets, error } = await pollAiTasks([taskId]);
// 只刷新当前项目详情(新出的图就在 base_asset_groups 里),不再整页全量 loadData ——
// 后者十几个 setState 触发全 PipelinePage 大重渲染,所有背景图被重新赋值 → "每次生成全页图重载"。
// 余额受出图扣费影响,单独轻量刷新一下即可,不必连带把 products/projects/全部 assets/通知都重拉。
await refreshProjectDetail();
void loadData();
api.billingSummary().then((b) => b && setBilling(b)).catch(() => {});
if (assets.length === 0) {
setNotice({ type: "error", text: error || "生成超时,稍后可在资产里查看" });
return null;