Compare commits
3 Commits
8278de44cb
...
830afac720
| Author | SHA1 | Date | |
|---|---|---|---|
| 830afac720 | |||
| 327cd2b113 | |||
| 96f19a49d1 |
@@ -1,7 +1,7 @@
|
||||
# 项目接力
|
||||
|
||||
- 生成时间:May 25, 2026 at 09:02
|
||||
- 项目:SKG Marketing Studio / SKG 营销内容工作台
|
||||
- 生成时间:May 25, 2026 at 23:14
|
||||
- 项目:SKG 营销内容生产平台
|
||||
- 路径:/Users/kangwan/Projects/business/20260512-20260512-skg-tk-二创验证
|
||||
- 状态:active
|
||||
- 主链接:https://marketing.skg.com
|
||||
@@ -100,36 +100,46 @@
|
||||
|
||||
### 最近用户要求
|
||||
|
||||
- 还是不够简洁简单,我们再深度研究下怎么样的排列才最简单,别人一看就会用
|
||||
- 我看一下样式,你用figma画一下
|
||||
- 设计的版面还是太差了 我找一下模版
|
||||
- api没关系 其他的麻烦你直接给我恢复 别削弱
|
||||
- ok 你现在看下api接入情况 有哪些模型可以直接接入好
|
||||
- OK 接入吧
|
||||
|
||||
### Codex 最近回复
|
||||
|
||||
> 我画了一版简化首页样式稿并打开了:
|
||||
>
|
||||
> - HTML 样式稿:`output/design/skg-simple-home-mockup.html`
|
||||
> - 截图:`output/design/skg-simple-home-mockup-fullpage.png`
|
||||
>
|
||||
> 说明一下:当前会话没有可写入 Figma 云文件的 MCP 工具,所以我先用本地“Figma 风格画板”做了可看的样式稿。这个稿不影响线上代码,也没有提交。
|
||||
>
|
||||
> 核心变化是:首屏只保留一个主流程:
|
||||
> `选择产物 → 上传素材可选 → 写一句话需求 → 开始生成`
|
||||
>
|
||||
> `git status -sb` 当前仍只有 `.memory/worklog.json` 自动日志脏文件。
|
||||
> 线上验收结果已经明确:`/health` 现在只返回 3 个图片模型和 1 个视频模型,前端包里也没有旧模型名。我把这次部署证据写回 `RULES.md` 和源码解析页,然后再做一个文档提交。
|
||||
|
||||
> 可以,你先找模板。
|
||||
> 已接入并上线。
|
||||
>
|
||||
> 我建议你找这类方向的,不要找复杂 AI 工具后台:
|
||||
> 现在生产画布里媒体模型已经收口为真实可用项:
|
||||
>
|
||||
> - “AI image generator dashboard”
|
||||
> - “content creation workspace”
|
||||
> - “simple prompt editor”
|
||||
> - “Canva / CapCut style creation home”
|
||||
> - “one page SaaS tool dashboard”
|
||||
> - “creative brief generator UI”
|
||||
> 图片:
|
||||
> `auto`
|
||||
> `GPT Image 2`
|
||||
> `Gemini 图片`
|
||||
>
|
||||
> 最适合我们的是:中间一个大输入区,顶部或左侧选择产物,右侧只放最近任务/结果。不要找那种很多统计卡、很多侧边栏菜单、很多模型参数的模板,那类还是会把普通同事绕晕。
|
||||
> 视频:
|
||||
> `Seedance 2.0 Fast`,真实模型是 `doubao-seedance-2-0-fast-260128`
|
||||
>
|
||||
> 同时把旧上游模型从生成下拉里移除了,包括 `Nano Banana`、`Seedream`、旧 `Seedance 1.x`、`Sora`。`Kling / Veo` 这次没有假接入,因为当前后端没有独立可用通道,只有指向同一个 Seedance 的别名,已经在 `/health` 里按真实模型去重。
|
||||
>
|
||||
> 已部署到生产:`https://marketing.skg.com`
|
||||
>
|
||||
> 验证过:
|
||||
> `npm run build` 通过。
|
||||
> `./scripts/deploy-prod-safe.sh` 通过。
|
||||
> 生产备份:`/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525105910.tgz`
|
||||
> 生产 `/health` 返回:
|
||||
> 图片模型 `auto,gpt-image-2,gemini-3-pro-image-preview`
|
||||
> 视频模型仅 `seedance / Seedance 2.0 Fast`
|
||||
> 视频时长 `5,8,10,12,15`
|
||||
> 图片尺寸 `auto,1024x1536,1024x1024,1536x1024`
|
||||
> 视频画幅 `720x1280,1280x720,1024x1024,960x1280`
|
||||
>
|
||||
> 提交也推了:
|
||||
> `84d9de6 fix: align canvas model options with backend`
|
||||
> `8278de4 docs: record model option deployment`
|
||||
>
|
||||
> 当前 `git status -sb` 只有本地 `.memory/worklog.json` 脏文件,代码和文档都已推到 `origin/main`。
|
||||
|
||||
## Cursor 最近会话
|
||||
|
||||
@@ -139,7 +149,7 @@
|
||||
|
||||
- 当前分支:main
|
||||
- 未提交变更:1 项
|
||||
- 最近提交:docs: record multilingual asr deployment
|
||||
- 最近提交:docs: record model option deployment
|
||||
- 变更文件:
|
||||
- M .memory/worklog.json
|
||||
|
||||
|
||||
@@ -1,356 +1,5 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "00872db",
|
||||
"message": "auto-save 2026-05-19 20:27 (~2)",
|
||||
"ts": "2026-05-19T20:27:27+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"hash": "78f2ffe",
|
||||
"message": "auto-save 2026-05-19 20:32 (~4)",
|
||||
"ts": "2026-05-19T20:32:53+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-19 20:32 (~4)",
|
||||
"ts": "2026-05-19T12:34:39Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"hash": "eafd5d7",
|
||||
"message": "auto-save 2026-05-19 20:38 (~4)",
|
||||
"ts": "2026-05-19T20:38:19+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 6,
|
||||
"hash": "15c6f4d",
|
||||
"message": "feat: simplify subject reconstruction layer",
|
||||
"ts": "2026-05-19T20:39:15+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "39ab443",
|
||||
"message": "docs: update deployment facts for reconstruction layer",
|
||||
"ts": "2026-05-19T20:41:37+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: update deployment facts for reconstruction layer",
|
||||
"ts": "2026-05-19T12:44:39Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "059a996",
|
||||
"message": "auto-save 2026-05-19 20:54 (~3)",
|
||||
"ts": "2026-05-19T20:54:36+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-19 20:54 (~3)",
|
||||
"ts": "2026-05-19T12:54:39Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "4729939",
|
||||
"message": "fix: require manual subject reconstruction generation",
|
||||
"ts": "2026-05-19T20:59:22+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: require manual subject reconstruction generation",
|
||||
"ts": "2026-05-19T13:04:39Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 5,
|
||||
"hash": "05c9343",
|
||||
"message": "auto-save 2026-05-19 21:10 (~5)",
|
||||
"ts": "2026-05-19T21:10:54+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-19 21:10 (~5)",
|
||||
"ts": "2026-05-19T13:14:39Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "87be9a6",
|
||||
"message": "auto-save 2026-05-19 21:16 (~3)",
|
||||
"ts": "2026-05-19T21:16:20+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"hash": "a282056",
|
||||
"message": "auto-save 2026-05-19 21:21 (~4)",
|
||||
"ts": "2026-05-19T21:21:45+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-19 21:21 (~4)",
|
||||
"ts": "2026-05-19T13:24:39Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "6e1aab2",
|
||||
"message": "auto-save 2026-05-19 21:27 (~3)",
|
||||
"ts": "2026-05-19T21:27:13+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 6,
|
||||
"hash": "00df9d0",
|
||||
"message": "feat: stream subject packs by generation batch",
|
||||
"ts": "2026-05-19T21:31:47+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: stream subject packs by generation batch",
|
||||
"ts": "2026-05-19T13:34:39Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:feat: stream subject packs by generation batch",
|
||||
"ts": "2026-05-19T13:44:40Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "9edf278",
|
||||
"message": "auto-save 2026-05-19 21:54 (~2)",
|
||||
"ts": "2026-05-19T21:54:21+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-19 21:54 (~2)",
|
||||
"ts": "2026-05-19T13:54:40Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 5,
|
||||
"hash": "fd794e3",
|
||||
"message": "fix: fail fast on gpt-image-2 timeouts",
|
||||
"ts": "2026-05-19T21:58:59+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "516d99b",
|
||||
"message": "docs: record image timeout deployment",
|
||||
"ts": "2026-05-19T22:03:11+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record image timeout deployment",
|
||||
"ts": "2026-05-19T14:04:40Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record image timeout deployment",
|
||||
"ts": "2026-05-19T15:45:00Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "95ad406",
|
||||
"message": "auto-save 2026-05-19 23:46 (~2)",
|
||||
"ts": "2026-05-19T23:46:34+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 6,
|
||||
"hash": "c383375",
|
||||
"message": "auto-save 2026-05-19 23:51 (~6)",
|
||||
"ts": "2026-05-19T23:52:01+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 3 项未提交变更 · 最近提交:auto-save 2026-05-19 23:51 (~6)",
|
||||
"ts": "2026-05-19T15:55:01Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 7,
|
||||
"hash": "3756259",
|
||||
"message": "feat: add Gemini image fallback circuit breaker",
|
||||
"ts": "2026-05-19T23:56:20+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "b4a7968",
|
||||
"message": "docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-20T00:00:46+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-19T16:05:01Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-19T16:15:01Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-19T16:25:01Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-19T16:35:01Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-19T16:45:01Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-19T16:55:01Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-19T17:25:05Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record Gemini fallback deployment",
|
||||
"ts": "2026-05-20T00:53:55Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "626271d",
|
||||
"message": "auto-save 2026-05-20 09:03 (~2)",
|
||||
"ts": "2026-05-20T09:03:51+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-20 09:03 (~2)",
|
||||
"ts": "2026-05-20T01:03:55Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"hash": "0736b8e",
|
||||
"message": "auto-save 2026-05-20 09:09 (~4)",
|
||||
"ts": "2026-05-20T09:11:19+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-20 09:09 (~4)",
|
||||
"ts": "2026-05-20T01:13:55Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 5,
|
||||
"hash": "c245bff",
|
||||
"message": "feat: add subject image model controls",
|
||||
"ts": "2026-05-20T09:16:28+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "75666f1",
|
||||
"message": "docs: record subject model deployment",
|
||||
"ts": "2026-05-20T09:21:21+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record subject model deployment",
|
||||
"ts": "2026-05-20T01:23:55Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record subject model deployment",
|
||||
"ts": "2026-05-20T01:33:55Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record subject model deployment",
|
||||
"ts": "2026-05-20T01:43:55Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"hash": "5085cb5",
|
||||
"message": "auto-save 2026-05-20 09:49 (~4)",
|
||||
"ts": "2026-05-20T09:49:21+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "2366662",
|
||||
"message": "fix: lock subject packs and upscale assets",
|
||||
"ts": "2026-05-20T09:52:03+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: lock subject packs and upscale assets",
|
||||
"ts": "2026-05-20T01:53:55Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "36fa481",
|
||||
"message": "auto-save 2026-05-20 09:54 (~2)",
|
||||
"ts": "2026-05-20T09:54:47+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "e64bf40",
|
||||
"message": "docs: record subject pack deployment",
|
||||
"ts": "2026-05-20T09:55:45+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record subject pack deployment",
|
||||
"ts": "2026-05-20T02:03:55Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:docs: record subject pack deployment",
|
||||
@@ -3144,62 +2793,436 @@
|
||||
"type": "assistant-session"
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T09:05:53+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-25 09:05 (~2)",
|
||||
"files_changed": 2,
|
||||
"hash": "8e60c7d",
|
||||
"files_changed": 2
|
||||
"message": "auto-save 2026-05-25 09:05 (~2)",
|
||||
"ts": "2026-05-25T09:05:53+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-25 09:05 (~2)",
|
||||
"ts": "2026-05-25T01:12:14Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-25 09:05 (~2)",
|
||||
"files_changed": 1
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-25 09:05 (~2)",
|
||||
"ts": "2026-05-25T01:22:15Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-25 09:05 (~2)",
|
||||
"files_changed": 1
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T09:27:31+08:00",
|
||||
"type": "commit",
|
||||
"message": "fix: enforce orthographic top bottom subject views",
|
||||
"files_changed": 5,
|
||||
"hash": "f8c51b5",
|
||||
"files_changed": 5
|
||||
"message": "fix: enforce orthographic top bottom subject views",
|
||||
"ts": "2026-05-25T09:27:31+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T01:32:15Z",
|
||||
"type": "session-heartbeat",
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: enforce orthographic top bottom subject views",
|
||||
"files_changed": 1
|
||||
"ts": "2026-05-25T01:32:15Z",
|
||||
"type": "session-heartbeat"
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T09:38:19+08:00",
|
||||
"type": "commit",
|
||||
"message": "fix: normalize media prompts and patent views",
|
||||
"files_changed": 3,
|
||||
"hash": "3b1d764",
|
||||
"files_changed": 3
|
||||
"message": "fix: normalize media prompts and patent views",
|
||||
"ts": "2026-05-25T09:38:19+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T01:40:36Z",
|
||||
"type": "session-end",
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: normalize media prompts and patent views",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T01:40:36Z",
|
||||
"type": "session-end",
|
||||
"message": "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: normalize media prompts and patent views",
|
||||
"files_changed": 1
|
||||
"type": "session-end"
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T10:16:59+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-25 10:16 (~2)",
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话结束 · 持续 0 秒 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:fix: normalize media prompts and patent views",
|
||||
"ts": "2026-05-25T01:40:36Z",
|
||||
"type": "session-end"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "04d80c1",
|
||||
"message": "auto-save 2026-05-25 10:16 (~2)",
|
||||
"ts": "2026-05-25T10:16:59+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "976b318",
|
||||
"message": "auto-save 2026-05-25 10:27 (~2)",
|
||||
"ts": "2026-05-25T10:27:52+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "eca5213",
|
||||
"message": "feat: simplify home like jimeng generate",
|
||||
"ts": "2026-05-25T10:29:55+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "7b4351f",
|
||||
"message": "fix: keep simplified home responsive",
|
||||
"ts": "2026-05-25T10:31:28+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "6ba84a7",
|
||||
"message": "feat: reduce home to single generation composer",
|
||||
"ts": "2026-05-25T10:42:03+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 6,
|
||||
"hash": "ce20475",
|
||||
"message": "auto-save 2026-05-25 10:55 (~6)",
|
||||
"ts": "2026-05-25T10:55:07+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 5,
|
||||
"hash": "dcc8abc",
|
||||
"message": "feat: expose generation model choices",
|
||||
"ts": "2026-05-25T11:02:13+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "fa64f95",
|
||||
"message": "docs: record model-choice production deploy",
|
||||
"ts": "2026-05-25T11:05:12+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "0b73fc3",
|
||||
"message": "auto-save 2026-05-25 14:13 (~2)",
|
||||
"ts": "2026-05-25T14:13:40+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"hash": "f6157e0",
|
||||
"message": "auto-save 2026-05-25 14:19 (~4)",
|
||||
"ts": "2026-05-25T14:19:08+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 5,
|
||||
"hash": "e77e77f",
|
||||
"message": "fix: align generation size and duration options",
|
||||
"ts": "2026-05-25T14:23:09+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "a69ab81",
|
||||
"message": "docs: record size-duration production deploy",
|
||||
"ts": "2026-05-25T14:28:54+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "a02c5eb",
|
||||
"message": "fix: tolerate blank creative job requests",
|
||||
"ts": "2026-05-25T14:46:36+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "d246563",
|
||||
"message": "docs: record blank creative job deploy",
|
||||
"ts": "2026-05-25T14:48:53+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"hash": "486a682",
|
||||
"message": "feat: auto-start feishu login in client",
|
||||
"ts": "2026-05-25T15:05:26+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "a82069f",
|
||||
"message": "docs: record feishu auto-login deploy",
|
||||
"ts": "2026-05-25T15:10:59+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "b2d84dc",
|
||||
"message": "fix: make home video results playable",
|
||||
"ts": "2026-05-25T15:17:21+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "f49d4b2",
|
||||
"message": "docs: record playable video result deploy",
|
||||
"ts": "2026-05-25T15:21:48+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 8,
|
||||
"hash": "3f17df0",
|
||||
"message": "auto-save 2026-05-25 15:51 (~8)",
|
||||
"ts": "2026-05-25T15:51:59+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 7,
|
||||
"hash": "779e9b3",
|
||||
"message": "feat: queue video generation per user",
|
||||
"ts": "2026-05-25T15:55:43+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "c425b82",
|
||||
"message": "docs: record video queue deploy",
|
||||
"ts": "2026-05-25T15:59:01+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 77,
|
||||
"hash": "ce7b4a1",
|
||||
"message": "auto-save 2026-05-25 16:21 (+1, ~1)",
|
||||
"ts": "2026-05-25T16:21:24+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 35,
|
||||
"hash": "010d6da",
|
||||
"message": "auto-save 2026-05-25 16:26 (+2, ~19, -14)",
|
||||
"ts": "2026-05-25T16:26:51+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 16,
|
||||
"hash": "33a32bf",
|
||||
"message": "auto-save 2026-05-25 16:32 (~15, -1)",
|
||||
"ts": "2026-05-25T16:32:18+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"hash": "e059758",
|
||||
"message": "auto-save 2026-05-25 16:37 (+2, ~2)",
|
||||
"ts": "2026-05-25T16:39:02+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 5,
|
||||
"hash": "84b5009",
|
||||
"message": "auto-save 2026-05-25 16:44 (~5)",
|
||||
"ts": "2026-05-25T16:44:29+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 72,
|
||||
"hash": "2d19560",
|
||||
"message": "feat: add internal skg infinite canvas",
|
||||
"ts": "2026-05-25T16:52:53+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "f21254f",
|
||||
"message": "docs: record canvas deploy",
|
||||
"ts": "2026-05-25T16:57:22+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 9,
|
||||
"hash": "ba0cfbb",
|
||||
"message": "auto-save 2026-05-25 17:06 (~9)",
|
||||
"ts": "2026-05-25T17:06:22+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 9,
|
||||
"hash": "2192f15",
|
||||
"message": "fix: clarify generation product naming",
|
||||
"ts": "2026-05-25T17:10:22+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "7d98de0",
|
||||
"message": "docs: record naming deploy",
|
||||
"ts": "2026-05-25T17:13:52+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 10,
|
||||
"hash": "be19056",
|
||||
"message": "auto-save 2026-05-25 17:22 (~10)",
|
||||
"ts": "2026-05-25T17:22:46+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 9,
|
||||
"hash": "2a1ceee",
|
||||
"message": "fix: simplify visible brand to skg logo",
|
||||
"ts": "2026-05-25T17:26:44+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "378d151",
|
||||
"message": "docs: record logo-only brand deploy",
|
||||
"ts": "2026-05-25T17:31:24+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "fb9dc17",
|
||||
"message": "fix: remove canvas prompt suggestions",
|
||||
"ts": "2026-05-25T17:36:14+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "afaf91d",
|
||||
"message": "auto-save 2026-05-25 17:39 (~2)",
|
||||
"ts": "2026-05-25T17:39:09+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 8,
|
||||
"hash": "05504dd",
|
||||
"message": "auto-save 2026-05-25 17:44 (~8)",
|
||||
"ts": "2026-05-25T17:44:36+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "b8d662c",
|
||||
"message": "auto-save 2026-05-25 17:49 (~2)",
|
||||
"ts": "2026-05-25T17:50:04+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 10,
|
||||
"hash": "320c77a",
|
||||
"message": "auto-save 2026-05-25 17:55 (+1, ~9)",
|
||||
"ts": "2026-05-25T17:55:31+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 13,
|
||||
"hash": "e767d2b",
|
||||
"message": "fix: make canvas the root generation experience",
|
||||
"ts": "2026-05-25T17:57:23+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"hash": "8bb4c96",
|
||||
"message": "docs: record root canvas deploy",
|
||||
"ts": "2026-05-25T18:02:15+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 16,
|
||||
"hash": "7da1fc9",
|
||||
"message": "auto-save 2026-05-25 18:17 (+1, ~15)",
|
||||
"ts": "2026-05-25T18:17:20+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 12,
|
||||
"hash": "8a007aa",
|
||||
"message": "auto-save 2026-05-25 18:22 (~12)",
|
||||
"ts": "2026-05-25T18:22:48+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 18,
|
||||
"hash": "cce9779",
|
||||
"message": "fix: restore upstream canvas capabilities",
|
||||
"ts": "2026-05-25T18:28:11+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "103907c",
|
||||
"message": "docs: record restored canvas deployment",
|
||||
"ts": "2026-05-25T18:32:10+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 10,
|
||||
"hash": "0497a6c",
|
||||
"message": "auto-save 2026-05-25 18:44 (~10)",
|
||||
"ts": "2026-05-25T18:44:38+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 6,
|
||||
"hash": "523c610",
|
||||
"message": "auto-save 2026-05-25 18:49 (~6)",
|
||||
"ts": "2026-05-25T18:50:05+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 16,
|
||||
"hash": "fd5a715",
|
||||
"message": "auto-save 2026-05-25 18:55 (~16)",
|
||||
"ts": "2026-05-25T18:55:33+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 15,
|
||||
"hash": "84d9de6",
|
||||
"message": "fix: align canvas model options with backend",
|
||||
"ts": "2026-05-25T18:56:20+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"hash": "8278de4",
|
||||
"message": "docs: record model option deployment",
|
||||
"ts": "2026-05-25T19:02:28+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 2,
|
||||
"message": "启动 Codex 接力会话 · 已载入 Claude / Codex 最近会话,等待下一条指令 · 分支 main · 2 项未提交变更 · 最近提交:docs: record model option deployment",
|
||||
"ts": "2026-05-25T15:14:40Z",
|
||||
"type": "assistant-session"
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T23:18:45+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-25 23:18 (~2)",
|
||||
"hash": "96f19a4",
|
||||
"files_changed": 2
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T15:24:42Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-25 23:18 (~2)",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T15:34:42Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-25 23:18 (~2)",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-25T15:44:42Z",
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-25 23:18 (~2)",
|
||||
"files_changed": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
3
RULES.md
3
RULES.md
@@ -19,6 +19,7 @@
|
||||
- Agent Cut 独立预览服务器:`2.24.28.41`(Ubuntu 24.04 / Docker Compose / 裸端口 `4290`),部署目录 `/opt/skg-marketing-studio`,Compose 入口 `docker-compose.standalone.yml`,访问地址 `http://2.24.28.41:4290/agent/`。该入口用于“一分钟二创出片终端”预览:用户只提交 TikTok 链接和产品图,后端 `AgentRun` 状态机负责下载、抽帧、规划、生成、自动重跑、审片和合成。
|
||||
- Agent Cut 独立预览验证(2026-05-21):已在 `2.24.28.41` 的 `/opt/skg-marketing-studio` 用 `docker-compose.standalone.yml` 启动 `skg-agent-api` / `skg-agent-web`;独立 compose 通过网络别名兼容 Nginx 的 `skg-marketing-api` upstream。该裸 IP HTTP 入口的服务器 `deploy/.env.production` 需要 `WEB_AUTH_COOKIE_SECURE=false`;本次已补齐 `WEB_AUTH_*` 后重启验证通过:未登录 `/agent/` 返回 302 到 `/login/`,登录后 `/agent/` 返回 200,`/api/agent-runs` 返回数组,容器内 `/health` 返回 `ok:true` 且 `auth_configured:true`。
|
||||
- 最近部署验证(2026-05-25):`84d9de6` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,画布图片/视频模型选择收口到当前后端真实可用媒体模型。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525105910.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。补验:外部访问 `https://marketing.skg.com/` 未登录返回 302 到 `/login/?next=/`,`https://marketing.skg.com/p/test` 未登录返回 302 到 `/login/?next=/p/test`;容器内 `/health` 返回 `image_options=auto,gpt-image-2,gemini-3-pro-image-preview`,`video_options=seedance:Seedance 2.0 Fast:doubao-seedance-2-0-fast-260128`,`video_duration_options=5,8,10,12,15`,图片尺寸为 `auto,1024x1536,1024x1024,1536x1024`,视频画幅为 `720x1280,1280x720,1024x1024,960x1280`;生产静态 bundle 命中 `GPT Image 2 / Gemini 图片 / Seedance 2.0 Fast / 1024x1536 / 720x1280`,未命中 `Nano Banana / Seedream / doubao-seedream / doubao-seedance-1 / sora-2 / Kling / Veo 3`。
|
||||
- 生产配置验证(2026-05-25 23:49 CST):已在服务器 `/opt/skg-marketing-studio/deploy/.env.production` 补齐飞书 OAuth 应用配置,并仅重建 `skg-marketing-api` 使环境变量生效;敏感 App Secret 不入库。验证结果:`https://marketing.skg.com/api/auth/config` 返回 `feishu_enabled=true`、`password_enabled=true`、`data_isolation_enabled=true`;`GET https://marketing.skg.com/api/auth/feishu/start?next=/` 返回 302 跳转到飞书授权页;容器内 `/health` 返回 `auth_modes.feishu=True`。
|
||||
- 最近部署验证(2026-05-25):`cce9779` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,恢复 `chatfire-AI/huobao-canvas` 上游画布能力但保留 SKG 后端 `/api` 接入。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525102857.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。补验:外部访问 `https://marketing.skg.com/` 未登录返回 302 到 `/login/?next=/`,`https://marketing.skg.com/canvas/` 返回 308 到 `/`,`https://marketing.skg.com/p/test` 未登录返回 302 到 `/login/?next=/p/test`;容器内静态 bundle 命中 `AI 润色 / 自动执行 / 推荐: / 首帧 / 尾帧 / 多角度分镜 / 儿童绘本 / 工作流模板 / 批量下载素材`,未命中上游注册链接、火宝欢迎文案、GitHub 入口或 `/huobao-canvas`。
|
||||
- 最近部署验证(2026-05-25):`e767d2b` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,生产根域名改为直接进入个人生成画布,`/canvas/` 仅作为旧链接 308 跳转到 `/`。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525095839.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。补验:容器内 `/usr/share/nginx/html/index.html` 为 Vue 画布产物,引用 `/assets/index-CioZwOvT.js` 且 title 为 `SKG`;静态 bundle 命中 `文生图 / 文生视频 / 图生视频`,未命中 `首帧生视频 / 首尾帧生视频 / 上传首帧 / 上传尾帧 / 推荐:`;外部访问 `https://marketing.skg.com/` 未登录返回 302 到 `/login/?next=/`,`https://marketing.skg.com/canvas/` 返回 308 到 `/`,`/p/test` 未登录返回 302 到 `/login/?next=/p/test`。
|
||||
- 最近部署验证(2026-05-25):`2a1ceee` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,可见品牌位从文字命名收敛为 logo-only:首页、登录页和画布首页只显示 SKG logo,网页 title 和画布 title 为 `SKG`,首页入口按钮文案为“画布”。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525092749.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。容器内静态产物复验:`index.html` 包含 `<title>SKG</title>` 和 `/skg-logo-black.svg`,首页入口包含“画布”,登录页只保留 logo;当前 `_next` 与 `/canvas` 产物未再命中 `SKG 生图生视频`、`SKG 生成画布`、`营销内容生产平台` 或 `内容生产画布` 等旧可见文案。
|
||||
@@ -27,7 +28,7 @@
|
||||
- 最近部署验证(2026-05-25):`2d19560` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,新增登录保护下的 SKG 内部生成画布入口 `https://marketing.skg.com/canvas/`,并把首页“生成画布”按钮接到该路径。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525085342.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。补验:未登录访问 `/canvas` 返回 308 到 `/canvas/`,未登录访问 `/canvas/` 返回 302 到 `/login/?next=/canvas/`;容器内确认 `/usr/share/nginx/html/canvas/index.html` 和 `canvas/assets` 已存在。
|
||||
- 最近部署验证(2026-05-25):`779e9b3` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,视频生成改为个人公平队列:全局默认同时 2 个视频、单用户同时 1 个视频,同一用户连续提交会显示排队且不会占满所有生成通道。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525075706.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。复验静态 bundle 已包含 `queue_message` 和“排队中”文案;API 容器确认 `VIDEO_QUEUE_MAX_CONCURRENT=2`、`VIDEO_QUEUE_MAX_CONCURRENT_PER_USER=1`。
|
||||
- 最近部署验证(2026-05-25):`b2d84dc` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,修复首页生成视频完成后结果卡点击无反馈的问题:`MediaAssetTile` 新增可选原生视频 controls,首页仅在视频 `completed` 后开启播放控件,失败状态展示错误说明。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525071823.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。复验静态 bundle 已包含 `videoControls` 和 `controls:`;生产容器内最近完成视频文件存在:`/data/jobs/16b984e804f5/storyboard_videos/ac96d8eba342/video.mp4`,大小 3687229 bytes。
|
||||
- 最近部署验证(2026-05-25):`486a682` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,登录页新增飞书客户端 UA 自动发起 `/api/auth/feishu/start`,Nginx 未登录跳转改为 `/login/?next=$request_uri` 以保留回跳页面。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525070905.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。复验静态 bundle 已包含 `skg-feishu-auto-login` 和 `auth/feishu/start?next`,未登录访问 `/detail/?job=test` 返回 `Location: /login/?next=/detail/?job=test`。当前生产 `auth_config()` 仍显示 `feishu_enabled=false`,说明服务器还缺 `FEISHU_APP_ID` / `FEISHU_APP_SECRET` 等飞书 OAuth 环境配置;配置补齐后该自动入口才会生效。
|
||||
- 最近部署验证(2026-05-25):`486a682` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,登录页新增飞书客户端 UA 自动发起 `/api/auth/feishu/start`,Nginx 未登录跳转改为 `/login/?next=$request_uri` 以保留回跳页面。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525070905.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。复验静态 bundle 已包含 `skg-feishu-auto-login` 和 `auth/feishu/start?next`,未登录访问 `/detail/?job=test` 返回 `Location: /login/?next=/detail/?job=test`。该部署当时生产 `auth_config()` 仍显示 `feishu_enabled=false`;2026-05-25 23:49 CST 已在服务器环境补齐飞书 OAuth 配置并重建 API,当前 `feishu_enabled=true`。
|
||||
- 最近部署验证(2026-05-25):`a02c5eb` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,修复无首帧文生图 / 文生视频创建空白创作任务时的 `createCreativeImageJob 400 There was an error parsing the body`。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525064659.tgz`;生产 Docker 重建后脚本内验证通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。云端容器确认图片 / 视频密钥均已配置:`image_configured=True`、`video_configured=True`、`image_base_url=https://ai.skg.com/ezlink/v1`、`video_base_url=https://ai.skg.com/doubao`;同一个缺 boundary 的空 multipart 探针已从旧版 400 变为认证层 401,说明请求体解析问题已消除。
|
||||
- 最近部署验证(2026-05-25):`e77e77f` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,生产入口新增图片尺寸、视频画幅和按真实能力返回的视频时长选择。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525062614.tgz`;脚本内首次验证在容器刚启动 3 秒时遇到 `/` 500,随后复跑 `./scripts/verify-prod-docker.sh root@76.13.31.179` 通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。容器内能力复验:`image_sizes=auto,1024x1536,1024x1024,1536x1024`,`video_sizes=720x1280,1280x720,1024x1024,960x1280`,`video_durations=5,8,10,12,15`,`video_max=15`;当前 Doubao / Seedance 单条不暴露 30 秒。
|
||||
- 最近部署验证(2026-05-25):`dcc8abc` 已通过 `./scripts/deploy-prod-safe.sh` 部署到 `/opt/skg-marketing-studio`,生产入口为单对话框四模式生成页,并接入图片 / 视频模型选择。部署前脚本已备份生产私有环境、任务数据、资源库和 secrets 到 `/opt/skg-marketing-studio-backups/skg-marketing-preserve-20260525030237.tgz`;首次脚本校验在容器刚启动时遇到 `/` 500,经日志确认是 Nginx auth 子请求早于 API 就绪导致的临时连接拒绝,随后复跑 `./scripts/verify-prod-docker.sh root@76.13.31.179` 通过(web/API 容器 Up、`/` 302、`/login/` 200、缺失 `_next` 资源 404、未登录 `/api/health` 401、容器内 `api:health ok`、`api:ytdlp_cookie_args []`、未发现本地 API/dev URL 泄漏)。容器内模型选项复验:`image_options=auto,gpt-image-2,gemini-3-pro-image-preview`,`video_options=seedance,kling,veo3,veo`,`video_configured=True`。
|
||||
|
||||
@@ -1353,6 +1353,18 @@ ProductRefStateItem {
|
||||
<p><strong>影响:</strong>首页生成视频完成后可直接在结果卡里播放;详情页和旧分镜候选仍按原有缩略图 / hover 预览 / 下载按钮语义工作。</p>
|
||||
</div>
|
||||
</article>
|
||||
<article class="change">
|
||||
<header>
|
||||
<h3>2026-05-25 · 生产启用飞书 OAuth 登录</h3>
|
||||
<span class="tag amber">Auth</span>
|
||||
<span class="tag blue">Ops</span>
|
||||
</header>
|
||||
<div class="body">
|
||||
<p><strong>改动:</strong>生产服务器 <code>/opt/skg-marketing-studio/deploy/.env.production</code> 已补齐飞书 OAuth 应用配置,保留 <code>WEB_AUTH_SESSION_SECRET</code> 和 <code>AUTH_DATA_ISOLATION_ENABLED=true</code>,并仅重建 <code>skg-marketing-api</code> 使环境变量生效;敏感 App Secret 不进入仓库。</p>
|
||||
<p><strong>验证:</strong><code>/api/auth/config</code> 返回 <code>feishu_enabled=true</code>、<code>password_enabled=true</code>、<code>data_isolation_enabled=true</code>;<code>GET /api/auth/feishu/start?next=/</code> 返回 302 跳转到飞书授权页;容器内 <code>/health</code> 返回 <code>auth_modes.feishu=True</code>。</p>
|
||||
<p><strong>影响:</strong>飞书登录链路正式可用,飞书用户新建任务时 <code>owner_id</code> 会按飞书身份写入,后端列表、详情和素材接口继续按 owner 校验;备用账号密码登录仍保留。</p>
|
||||
</div>
|
||||
</article>
|
||||
<article class="change">
|
||||
<header>
|
||||
<h3>2026-05-25 · 飞书客户端内登录页自动发起免登录</h3>
|
||||
|
||||
Reference in New Issue
Block a user