Commit Graph
97 Commits
Author SHA1 Message Date
Azmat@qq.com e24ca1b0de 视频复刻优化替换商品和替换角色 2026-08-31 16:40:16 +08:00
Azmat@qq.com f59e9d0418 优化复刻视频脚本和下拉框样式 2026-08-31 10:59:54 +08:00
Azmat@qq.com a618f02315 添加seedance2.5 2026-08-28 16:03:23 +08:00
Azmat@qq.com c0a0b9603b 优化脚本 2026-08-28 14:45:38 +08:00
Azmat@qq.com 849b14a0f6 完善视频提炼和视频复刻完善提交测试 2026-08-28 10:15:15 +08:00
Azmat@qq.com 52c5cdae1d 测试视频复刻 2026-08-27 18:27:08 +08:00
Azmat@qq.com b3bf159e08 优化视频复刻 2026-08-27 17:58:48 +08:00
Azmat@qq.com 51620bf25b 完成视频复刻和优化 2026-08-27 11:54:47 +08:00
Azmat@qq.com c25060c6c6 优化住流程和添加复刻视频页面 2026-08-26 18:44:03 +08:00
Azmat@qq.com 0ee498d807 测试极速成片 2026-08-26 15:18:18 +08:00
Azmat@qq.com 2f70d3e8a0 完成极速成片 2026-08-25 18:46:20 +08:00
Azmat@qq.com df6784b90c 优化脚本 2026-08-25 16:40:22 +08:00
Azmat@qq.com e2ec2d14af 完成极速成品和脚本优化 2026-08-25 11:13:07 +08:00
Azmat@qq.com 00fc454db7 极速成片页面和提炼提示词 2026-08-24 15:52:05 +08:00
Azmat@qq.com 2f5b7304b0 添加视频复刻和优化脚本旁白 2026-08-24 10:48:01 +08:00
Azmat@qq.com 409d1c2969 优化故事版生成 2026-08-21 18:22:50 +08:00
Azmat@qq.com c2d3a786a3 优化脚本 2026-08-21 10:28:35 +08:00
Azmat@qq.com ba1613f2b5 优化UI 2026-08-20 12:52:05 +08:00
Azmat@qq.com a343f47f0c 大量修改UI 2026-08-19 17:44:56 +08:00
Azmat@qq.com 18b3927817 修改部份ui 2026-08-18 18:32:19 +08:00
Azmat@qq.com dfe94a923e 完善二期清单 2026-08-18 14:11:05 +08:00
Azmat@qq.com d1ecb52125 大量修改二期功能清单内容 2026-08-17 18:26:42 +08:00
hh 95cd4abd3c fix: 同步视频项目积分余额 2026-07-16 13:40:25 +08:00
hh db0e984bd2 fix: 固定脚本助手思考用时 2026-07-16 10:17:12 +08:00
hh 04e9d3a3ef fix: 修正故事板历史时间时区 2026-07-15 21:49:54 +08:00
hh e81d7170ed fix: 统一AI生成失败提示 2026-07-15 13:12:35 +08:00
hh 38d8c8ad54 fix: 统一前端模型展示名称 2026-07-15 11:11:09 +08:00
hh fc0f0ca370 feat: 解耦角色与模特并完善模特库 2026-07-13 11:02:30 +08:00
hh 5c9e62a165 fix: 视频项目-分镜脚本删除时回显一下修复 2026-07-08 16:21:18 +08:00
hh 45ff7838d8 feat: 视频脚本添加分镜最后一个按钮不隐藏-自带脚本移除上传文件 2026-07-07 14:07:17 +08:00
zycandClaude Sonnet 5 bf20de956c feat(billing): 计费商业化重构(积分制)+ 团队差异化调价
统一计价引擎 apps/billing/pricing.py:1积分=¥0.1,平台成本(¥)与用户价(积分)双记账,
视频按火山真实 usage.total_tokens 结算(true-up,终结¥1/段倒贴)+ 首发×1.5毛利系数。
Team.price_multiplier 差异化调价(jimeng同款):挂牌价×系数两步HALF_UP取整,视频类
按下单时的价格/汇率快照结算(中途改配不影响在途任务)。

BillingConfig 单例(汇率/毛利系数/预留buffer,admin可调即刻生效)。存量数据 ×10 rescale
迁移(RunPython+atomic,MySQL 迁移不可中断重跑)。开户赠送归零(DEFAULT_TRIAL_CREDITS=0,
商业决策)。audit_billing 加 I9(卖亏审计)。271 条测试 + tsc/build 全绿。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-07 10:04:00 +08:00
zycandClaude Opus 4.8 22268d608b fix: 测试清单一轮bug修复(商品库/视频项目/设置/消费/平台套图)
- 商品库编辑删图假成功+悬停无删除图标;商品三视图错显角色三视图
- 视频项目演员删除入口;角色三视图防呆;故事板审核失败原因透出
- 设置:管理团队死按钮/通知未接入项屏蔽/邮箱验证链路
- 消费:账单流水切换类型重置分页+独立总页数
- 资产库上传按钮隐藏;月限额两处对齐
- 平台套图:提示词框放大/选模型胶囊内嵌/未读任务角标/工作台记录持久化
- 新建商品独立添加卖点按钮;商品库超1920自适应

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 19:46:35 +08:00
zycandClaude Opus 4.8 6a4374678e fix: 角色网格卡「重跑」也参考当前立绘(上轮只改了详情弹窗,漏了网格卡)(row42 续)
角色有两个重跑入口:详情弹窗 regenPortrait(上轮已传 ref)、网格卡「重跑」按钮(漏了)。
截图反馈点的正是网格卡那个,它直接 genBaseAsset 没传参考图 → 仍重抽随机人。
修:网格卡重跑 person 且有 adopted_asset 时传它作 reference → 后端 image_edit 保持人物一致。
seed 首次生成(无立绘)不传,正确。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 14:25:51 +08:00
zycandClaude Opus 4.8 4d2b9343b3 feat: 角色重跑参考当前立绘+提示词,保持人物一致 (row42)
原「重跑」立绘是纯文生图,每次重抽成另一个随机人。改为:角色已有当前立绘时,
重跑传该立绘作参考图 → 后端走 image_edit(参考立绘+提示词),保持同一人物相貌/发型/身份一致。

- generate_base_asset 新增 reference_asset_id;person 有参考图则 image_edit + build_person_portrait_prompt_refs
- run_base_asset_task image_edit size 按 kind 区分(person 立绘竖 1024x1536,商品三视图横)
- 全链路透传 reference_asset_id:pipeline.regenPortrait(传 viewPortraitAsset)→ genBaseAsset →
  onGenerateBaseAsset → api.generateBaseAsset → generate-base-asset 端点
场景重跑不受影响(仍文生图);需部署生效(后端)。

构建: tsc=0/build=0; py_compile OK; projects+assets 测试无新增回归(基线 4 fail 2 err)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 13:20:47 +08:00
zycandClaude 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
zycandClaude 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
zycandClaude 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
zycandClaude 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
zycandClaude 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
zycandClaude 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
zycandClaude 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
zycandClaude 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
zycandClaude 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
zycandClaude 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
seaislee1209andClaude Opus 4.8 dee269aeda fix(script): 脚本按向导选的成片时长生成,不再写死 60 秒
pipeline 调脚本 agent 时 total_duration 写死成 60,忽略了向导里选的时长(选 30s 也按 60s 出)。
改为从 project.metadata.wizard.duration("0-30"→30)解析后传入;缺省回落 60。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 00:56:33 +08:00
seaislee1209andClaude Opus 4.8 79fc95f1b7 fix(video): 视频卡用首帧当封面(#t=0.1),不再显示空白占位
<video preload="metadata"> 不解码画面、又没 poster(后端抽帧没产出 poster 文件)→ 卡片空白。
给缩略图视频地址加 #t=0.1,浏览器跳到 0.1s 渲染该帧当封面;取的是当前采用版 mp4(=最新版)。
改:视频卡缩略图 + 详情弹窗历史版本缩略图。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 18:23:57 +08:00
seaislee1209andClaude Opus 4.8 c2c2dfdc77 feat(review): 故事板分镜图挂火山人像审核盾 + 红盾可重新送审
- 后端 StoryboardFrameSerializer 暴露 review_status + 驳回原因(之前没给,前端画不出盾)
- 前端故事板趴:每张分镜图(缩略图角上只留盾 / 大图左上完整徽章)挂 ReviewBadge,
  与人物/场景卡同款(审核中橙光 / 已过审绿 / 未过审红);故事板趴每 8s 轮询刷新审核态
- ReviewBadge:红盾(未过审)也可点「重新送审」——「审核超时」是误判(分镜图在 processing
  卡太久被本地超时兜底标失败,非火山真违规),重提即可再审;灰盾/红盾两处(分镜图+人物卡)行为一致
- compact 模式:嵌在 overflow:hidden 容器里的盾(分镜图)改用原生 title 提示,避免 CSS 气泡被裁看不见

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 17:23:18 +08:00
seaislee1209andClaude Opus 4.8 38f4d95951 feat(video): 视频卡交互反馈 + 「全部重跑」真重跑已完成的段
- 单卡「重跑」/ 详情弹窗「重跑本场」/「全部重跑」点下立刻进「提交中」态:按钮转圈、视频块叠
  spinner 遮罩,撑到该段真进 running(busy 接管),堵掉空窗连点 → 防双倍扣费、不再点完没反应
- 「全部重跑」改为把已完成(succeeded)的段也重跑(原来过滤掉 succeeded → 全成功项目点了等于
  没点、还弹假的「已提交」);只跳过在途(running/queued)避免重复提交
- 视频卡加「共 N 版 ›」小标识(N>1 才显示),点开详情弹窗看历史版本/切换/采用

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 16:57:37 +08:00
seaislee1209andClaude Opus 4.8 dbd1382fb1 feat(storyboard): 整张生成时每张分镜转圈(不全屏遮挡)+ 未生成占位回 2:3 竖屏
- 每张分镜占位(缩略图 + 大图)叠半透明遮罩 + spinner,样式同基础资产趴;不再全屏遮挡
- 中间大图空占位由 16:9 横框改 2:3 竖屏,与成品(1024×1536)同形;fh-flat 下加兜底高度居中
- 生成结束(成功/失败)spinner 自动停

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 13:16:16 +08:00
seaislee1209andClaude Opus 4.8 be4bc1c8f4 feat(pipeline): 未生成的人物/场景卡可点进详情(先立绘后三视图)+ 卡内提示词框固定5行
- seed(未生成·来自脚本)卡:缩略图/名字可点 → 进资产详情弹窗(保留卡上内联「AI 生成」快捷,
  两条路都能生成,A 方案)。详情弹窗支持「还没生成组」的空壳实体(用脚本名+提示词兜底),
  生成立绘后刷新按同名 key 自动切回真实体。
- 顺序限制(本就在详情里,现对 seed 也生效):没立绘时「AI 生成三视图」禁用 + 提示
  「请先生成左侧立绘」;立绘按钮首次显示「生成立绘」(非「重跑」),替换走 seed 路由。
- 卡内提示词框(.prompt-box,外层人物/场景卡)固定 5 行高、超长框内滚动,不再被长提示词撑高。

自检:复用现成详情弹窗与 .btn/.prompt-box 共享类,无裸色值/无重写共享类;单橙锚点不变。
验证:tsc + vite build 绿;无头(独立 sqlite 栈)真点 seed 卡 → 详情打开、三视图禁用+提示、
立绘按钮「生成立绘」、提示词框 115px 固定且超长可滚动、0 控制台错误(截图存档)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 02:07:46 +08:00