2 Commits

Author SHA1 Message Date
f1137cc006 docs: record conversion prompt deployment 2026-05-20 21:47:31 +08:00
d1e2b1785e fix: simplify conversion prompt confirmation 2026-05-20 21:45:17 +08:00
3 changed files with 34 additions and 24 deletions

View File

@@ -16,6 +16,7 @@
## 部署事实
- 平台VPS `76.13.31.179`Ubuntu 24.04 / Docker Compose / Coolify Traefik
- 发布状态已部署并验证2026-05-20主体元素按套图文件夹分组展示主体生成接口提交后立即返回 queued 占位并后台逐视角生成、逐张回填;源视频工作区主体链路为上方竖向参考帧池 + 宽幅对话式转换层、下方主体元素结果栏;转换层通过参考帧 `+` 加入、参考图分析、生图对话、英文 prompt 弹窗确认后才触发主体套图生成;下方主体元素结果栏的套图输出、轮询、文件夹分组、单张重生、删除和 hover 预览逻辑保持不变;胶片双击/拖拽加入参考帧池 + 胶片缓存复用 + 音频解析失败可重试,参考帧缩略图保持小尺寸 9:16 比例 + hover 左侧紧凑预览,旧主体模板区移出主路径 + 逐句时间轴移到原版视频下方并支持双行文案 + 波形同框时间对齐画面胶片 + 胶片密度按钮上移波形顶部 + 去分隔线 + 胶片上下错落 + body 顶层原位大放大 + 隐藏源视频工作区音频解析摘要卡 + 隐藏工作区顶部状态提示条 + 三字段候选生成工作流 + 折叠紧凑候选区);`https://marketing.skg.com` 已启用应用内登录页,未登录 API 返回 401认证后首页 200容器内 `/health` 返回 `ok:true`
- 最近部署验证2026-05-20`d1e2b17` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`;部署前备份为 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260520134529.tgz`,生产 Docker 重建后脚本内验证通过(`web:/login/ 200``web:/api/health 401``api:health ok`)。线上登录后 Playwright 以 2048x1060 复测转换层:内嵌“待确认提示词”卡和黑色“确认并生成 N 张”按钮均不再渲染,页面无客户端异常;有待确认 prompt 时只在“生成要求”标题右侧显示小型“待确认 · N 张”入口,验证截图 `/tmp/skg-conversion-no-inline-confirm.png`
- 最近部署验证2026-05-20`caa7b73` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`;部署前备份为 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260520132820.tgz`,生产 Docker 重建后脚本内验证通过(`web:/login/ 200``web:/api/health 401``api:health ok`)。线上登录后 Playwright 以 2048x1060 复测:页面无客户端异常,源视频工作区已撤销“布局调节”按钮和 `localStorage["skg-source-workspace-layout:v1"]` 布局读写,固定为左侧原视频列 380px、9:16 视频高 500px、逐句时间轴最大高 270px、参考帧池 140px、转换层 500px 内部滚动、主体空态 78px验证截图 `/tmp/skg-layout-fixed-no-tuning.png`
- 最近部署验证2026-05-20`0db265f` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`;部署前备份为 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260520131649.tgz`,生产 Docker 重建后脚本内验证通过(`web:/login/ 200``web:/api/health 401``api:health ok`)。线上登录后 Playwright 打开历史任务并展开“布局调节”:面板显示左列宽、视频高、时间轴高、参考池宽、转换层高、主体空态 6 个滑杆,调参值写入 `localStorage["skg-source-workspace-layout:v1"]`,供用户先在线试比例再固化默认值。
- 最近部署验证2026-05-20`5bffd63` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`;部署前备份为 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260520123949.tgz`,生产 Docker 重建后脚本内验证通过(`web:/login/ 200``web:/api/health 401``api:health ok`)。线上登录后 Playwright 复测 1440x900 与 2048x1060历史任务加载后转换层占据主操作宽度主体元素下移为转换层下方的紧凑结果栏未再出现右侧三栏挤压滚动到主体元素位置后仍能看到下方分镜工作台承接。

File diff suppressed because one or more lines are too long

View File

@@ -3936,9 +3936,12 @@ function SourceSubjectPipeline({
const effectiveAgentViews = subjectViewsForQuantity(effectiveAgentQuantity)
const effectivePrompt = (agentPrompt || subjectAgent?.generation_prompt_en || "").trim()
const effectiveRequirement = (subjectAgent?.requirements_zh || agentRequirement).trim()
const requirementSummary = effectivePrompt
? "提示词已生成,请在确认弹窗里检查后出图;需要改动时直接继续发送消息。"
: effectiveRequirement || "按当前参考图和保留元素生成。"
const agentUserMessageCount = agentMessages.filter((message) => message.role === "user").length
const agentHiddenAssistantCount = agentMessages.length - agentUserMessageCount
const agentSummaryVisible = Boolean(effectiveRequirement || selectedAgentTraits.length || agentMessages.length)
const agentSummaryVisible = Boolean(effectivePrompt || effectiveRequirement || selectedAgentTraits.length || agentMessages.length)
const canGenerateAgentPack = effectiveAgentMode === "custom"
? Boolean(effectiveRequirement || agentReferenceFrames.length)
: agentReferenceFrames.length > 0
@@ -4209,9 +4212,21 @@ function SourceSubjectPipeline({
<MessageSquare className="h-3.5 w-3.5 text-cyan-100/55" />
</span>
<span className="text-[9px] text-white/34">
{reconstructionModeConfig(effectiveAgentMode).label} · {effectiveAgentQuantity}
</span>
{effectivePrompt ? (
<button
type="button"
onClick={() => setPromptConfirmOpen(true)}
disabled={!canGenerateAgentPack || subjectBusy || agentModeRunning}
className="inline-flex h-6 items-center gap-1 rounded-md border border-[#d6b36a]/28 bg-[#d6b36a]/[0.075] px-2 text-[9px] font-semibold text-[#f4dc88] transition hover:border-[#d6b36a]/48 hover:bg-[#d6b36a]/12 disabled:cursor-not-allowed disabled:opacity-40"
>
<Check className="h-3 w-3" />
· {effectiveAgentViews.length}
</button>
) : (
<span className="text-[9px] text-white/34">
{reconstructionModeConfig(effectiveAgentMode).label} · {effectiveAgentQuantity}
</span>
)}
</div>
<div className="min-h-[86px] flex-1 overflow-auto rounded border border-white/8 bg-black/20 p-1.5">
{agentSummaryVisible ? (
@@ -4219,7 +4234,7 @@ function SourceSubjectPipeline({
<div className="rounded-md border border-cyan-200/12 bg-cyan-300/[0.06] px-2 py-1.5">
<div className="text-[9px] font-semibold text-cyan-50/62"></div>
<p className="mt-0.5 line-clamp-3 text-[10px] leading-snug text-white/64">
{effectiveRequirement || "按当前参考图和保留元素生成。"}
{requirementSummary}
</p>
</div>
{selectedAgentTraits.length ? (
@@ -4315,24 +4330,6 @@ function SourceSubjectPipeline({
</div>
</div>
{effectivePrompt ? (
<div className="mt-2 rounded-md border border-[#d6b36a]/24 bg-[#d6b36a]/[0.075] p-2">
<div className="flex items-center justify-between gap-2">
<span className="text-[10px] font-semibold text-[#f4dc88]"></span>
<span className="text-[9px] text-white/42">{effectiveAgentViews.length} </span>
</div>
<p className="mt-1 line-clamp-4 text-[9.5px] leading-snug text-white/58">{effectivePrompt}</p>
<button
type="button"
onClick={() => setPromptConfirmOpen(true)}
disabled={!canGenerateAgentPack || subjectBusy || agentModeRunning}
className="skg-primary-action mt-2 inline-flex h-8 w-full items-center justify-center gap-1.5 px-2 text-[10.5px] font-semibold transition disabled:cursor-not-allowed disabled:opacity-40"
>
<Check className="h-3.5 w-3.5" />
{effectiveAgentViews.length}
</button>
</div>
) : null}
</div>
</div>
</div>