auto-save 2026-05-18 17:45 (~3)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# 项目接力
|
||||
|
||||
- 生成时间:May 16, 2026 at 16:38
|
||||
- 生成时间:May 18, 2026 at 14:10
|
||||
- 项目:SKG Marketing Studio / SKG 营销内容工作台
|
||||
- 路径:/Users/kangwan/Projects/business/20260512-20260512-skg-tk-二创验证
|
||||
- 状态:active
|
||||
@@ -9,7 +9,7 @@
|
||||
## 最近助手会话概览
|
||||
|
||||
- Claude:be53a031-9311-4ee8-b822-d4cfb4f5e78b · 时间未知
|
||||
- Codex:019e2274-9db5-71c1-85e7-2bb0519c8ba9 · 时间未知
|
||||
- Codex:019e2fef-97a7-7523-a1ff-051a8c66e1c4 · 时间未知
|
||||
- Cursor:未找到匹配当前项目的最近会话
|
||||
|
||||
## Claude 最近会话
|
||||
@@ -44,42 +44,22 @@
|
||||
|
||||
## Codex 最近会话
|
||||
|
||||
- Session ID:019e2274-9db5-71c1-85e7-2bb0519c8ba9
|
||||
- Transcript:/Users/kangwan/.codex/sessions/2026/05/14/rollout-2026-05-14T01-48-48-019e2274-9db5-71c1-85e7-2bb0519c8ba9.jsonl
|
||||
- Session ID:019e2fef-97a7-7523-a1ff-051a8c66e1c4
|
||||
- Transcript:/Users/kangwan/.codex/sessions/2026/05/16/rollout-2026-05-16T16-38-11-019e2fef-97a7-7523-a1ff-051a8c66e1c4.jsonl
|
||||
- 工作目录:/Users/kangwan/Projects/business/20260512-20260512-skg-tk-二创验证
|
||||
- 敏感字段:已对 token / key / password / secret 做脱敏
|
||||
|
||||
### 最近用户要求
|
||||
|
||||
- <image name=[Image #1]> </image> [Image #1] logo 和那个营销内容工作台 你把营销内容工作台和logo水平对齐
|
||||
- logo怎么没有在服务器上显现出来呢奇怪
|
||||
- 账号密码创建了么
|
||||
- 这个顺序不太对,首先视频需要的是什么,场景+人+产品+在做什么 有这些定下来后 描述才可以生成首尾帧 你觉得呢
|
||||
- 首先人物已经生成了6视图或者10视图里面选, 怎么选呢,根据需求选因为已经有了人物的文字描述了如果没有请补上
|
||||
- 打开cursor 这个项目的
|
||||
|
||||
### Codex 最近回复
|
||||
|
||||
> 原因找到了:不是 logo 文件没上去,而是生产 Nginx 把 `/skg-logo-black.svg` 当成受保护资源了,未登录访问会 `302` 到 `/login/`,所以登录页里的图片加载不到。
|
||||
>
|
||||
> 已修:
|
||||
> - `deploy/nginx.conf` 加了 `/skg-logo-black.svg` 公开静态资源规则
|
||||
> - 同步更新了 `RULES.md` 和 `docs/source-analysis.html`
|
||||
> - 已重新构建并重启生产 web 容器
|
||||
>
|
||||
> 验证结果:
|
||||
> - `https://marketing.skg.com/skg-logo-black.svg` 现在是 `200 image/svg+xml`
|
||||
> - `https://marketing.skg.com/login/` 是 `200 OK`
|
||||
> - 我截了线上图,logo 已经显示,和“营销内容工作台”也水平对齐了
|
||||
>
|
||||
> 你浏览器那边如果还看不到,强刷一下页面缓存即可。
|
||||
> 我打开 Cursor 到当前项目目录。
|
||||
|
||||
> 创建好了,生产环境现在可用:
|
||||
>
|
||||
> ```text
|
||||
> 登录地址:https://marketing.skg.com/login/
|
||||
> 账号:skg
|
||||
> 密码:c413cdc5bbbf2ca042
|
||||
> ```
|
||||
>
|
||||
> 密码备份位置按项目规则放在服务器:`/root/skg-marketing-studio-login.txt`。前面已验证登录接口返回成功。
|
||||
> 已打开 Cursor 到当前项目目录。
|
||||
|
||||
## Cursor 最近会话
|
||||
|
||||
@@ -87,9 +67,9 @@
|
||||
|
||||
## 当前仓库状态
|
||||
|
||||
- 当前分支:HEAD
|
||||
- 未提交变更:2 项
|
||||
- 最近提交:auto-save 2026-05-16 10:20 (~1)
|
||||
- 当前分支:main
|
||||
- 未提交变更:3 项
|
||||
- 最近提交:auto-save 2026-05-18 09:29 (~5)
|
||||
- 变更文件:
|
||||
- M .memory/worklog.json
|
||||
|
||||
|
||||
@@ -15,16 +15,17 @@ key 写在 `api/.env` 的 `LLM_API_KEY`
|
||||
|
||||
| 端点 / 字段 | 状态 | 用途 |
|
||||
|---|---|---|
|
||||
| `/v1/chat/completions` text-only | ✅ 通 | translate / rewrite |
|
||||
| `/v1/chat/completions` + image_url | ✅ **通**(之前误判为不通,是 dog.jpg 那张图损坏) | vision 识别图片(gemini-2.5-flash 推荐) |
|
||||
| `/v1/chat/completions` + input_audio | ❌ 不通 | ASR 不能走这条 |
|
||||
| `/v1/audio/transcriptions` (whisper) | ❌ 404 | 整个 audio 端点都没暴露 |
|
||||
| `/v1/audio/speech` (tts) | ❌ 404 | |
|
||||
| `/v1/images/generations` (text→image) | ✅ 通 | 生图(gemini-3-pro-image-preview = nano-banana-pro) |
|
||||
| `/v1/images/generations` + image 参数 | ✅ **通**(image-to-image) | 实测能传 reference image,关键的发现 |
|
||||
| `/v1/images/edits` | ❌ 404 | |
|
||||
| `/v1/videos/*` (sora-2) | ❌ 404 | 视频生成需要 IT 开通或外部 key |
|
||||
| `/v1/files` | ❌ 403 "必须指定渠道" | |
|
||||
| 远端 ASR | `ASR_MODEL=whisper-1` | 失败后进本机 ASR,再进多模态兜底。 |
|
||||
| 本机 ASR | `LOCAL_ASR_MODEL=mlx-community/whisper-tiny` | 默认二级兜底,优先产出真实逐句时间轴。 |
|
||||
| ASR 兜底 / 音频分析 | `ASR_FALLBACK_MODEL=gemini-2.5-flash` | 多模态音频兜底;后端会拒绝假字幕、重复文本和覆盖率过低结果。 |
|
||||
| 字幕翻译 | `TRANSLATE_MODEL=gemini-2.5-flash` | 保留 Gemini。 |
|
||||
| 画面理解 | `VISION_MODEL=gpt-4o` | 关键帧 Vision 已切 GPT;旧环境若写 `gemini-*` 会自动归一化到 `GPT_TEXT_MODEL`。 |
|
||||
| 通用改写 / 分镜描述 | `REWRITE_MODEL=gpt-4o` | 已切 GPT;旧 Gemini 覆盖值会自动归一化。 |
|
||||
| 新口播改写 | `AUDIO_REWRITE_MODEL=gpt-4o` | 默认跟随 `REWRITE_MODEL`;旧 Gemini 覆盖值会自动归一化。 |
|
||||
| 产品视角识别 | `PRODUCT_VIEW_MODEL=gpt-image-2` | 产品图批量识别视角、左右 / 上下 / 内外侧、用途和风险。 |
|
||||
| 所有生图 / 修图 | `gpt-image-2` | 服务端硬锁,无图片模型 fallback;覆盖关键帧生图、水印清理、元素提取、主体资产包、产品补角度、首尾帧。 |
|
||||
| 配音 | `VOICE_PROVIDER=azure_openai` + `AZURE_TTS_MODEL=gpt-4o-mini-tts` | 语音固定 Azure OpenAI TTS;MiniMax 不再作为 fallback。后端会按 `AZURE_TTS_PATHS` 依次尝试路径,便于区分路径错误和整条语音服务不可用。 |
|
||||
| 视频 | `VIDEO_MODEL=seedance` | 当前主流程暂停直接提交;生产通道默认 `ai.skg.com/doubao`,Seedance 真实 ID 由 `VIDEO_MODEL_SEEDANCE` 配置。 |
|
||||
|
||||
**网关后端 = one-hub 多渠道代理**。当前 key 分组叫「纯OpenAI+AWSClaude+Gemini官方」,缺 audio 渠道(`gpt-4o-audio-preview` 503 "无可用渠道")和 video 渠道。
|
||||
|
||||
@@ -91,6 +92,7 @@ Job { frames: KeyFrame[] ... }
|
||||
## 已通的 API 端点
|
||||
```
|
||||
POST /jobs 创建 job(链接)
|
||||
POST /jobs/{id}/download/retry TK 链接下载失败后重新下载
|
||||
POST /jobs/upload 上传视频
|
||||
GET /jobs/{id} job 状态
|
||||
POST /jobs/{id}/analyze?frames=5 拆轨+抽帧+ASR 自动一气呵成
|
||||
@@ -104,43 +106,21 @@ GET /jobs/{id}/frames/{idx}.jpg 关键帧 jpg
|
||||
GET /health
|
||||
```
|
||||
|
||||
## 已知坑 / 不要再踩
|
||||
1. **关键帧 index 不连续**:手动加帧后 frames 数组按 timestamp 排序,index 是稳定 ID。lightbox 必须用 `frames.find(x => x.index === activeIndex)`,**不要**用 `frames[activeIndex]`。
|
||||
2. **SKG 网关 vision 之前测试结果错误**:用 `dog.jpg` 那张 wikipedia 200px 缩略图损坏 / metadata 异常,导致一直以为 image input 不通。用标准 PNG / 真实 jpeg 测就通了。
|
||||
3. **Gemini 2.5 Flash 默认带 thinking**,`content` 字段经常为空(token 都给了 reasoning),要从 `reasoning_content` 正则挖 JSON 兜底。
|
||||
4. **缩略图 aspect-ratio**:必须用 `aspectRatio: ${job.width}/${job.height}` 自适应,不要强制 `aspect-video` 16:9(竖屏视频会被裁切)。
|
||||
5. **ReactFlow `type="input"` / `"output"` 是 reserved**:自带白底默认样式,要 CSS 覆盖 `.react-flow .react-flow__node-input { background: transparent !important; ... }`。
|
||||
6. **ReactFlow 12 colorMode 独立于 next-themes**:必须 `<ReactFlow colorMode={resolvedTheme}>` 联动,否则节点白底。
|
||||
7. **FastAPI BackgroundTasks 用法**:`bg.add_task(func, arg)` 不能传 coroutine。
|
||||
8. **ffmpeg 8 mjpeg encoder 拒绝 yuv420p**:抽帧必须加 `-pix_fmt yuvj420p`,且 `-vsync` 改 `-fps_mode`。
|
||||
9. **抽帧速度**:场景切换检测(`select='gt(scene,0.4)'`)超慢(71s 视频要 30s+),换均匀采样 fast seek(5 张 < 3 秒)。
|
||||
## 当前约束 / 不要踩
|
||||
1. 图片 / 视频 / 抽帧 / 产品图 / 生成图 / 首尾帧 / 视频候选缩略图默认复用 `web/components/media-asset-tile.tsx`。
|
||||
2. 所有生图入口服务端只允许 `gpt-image-2`,不要重新加 Gemini 图片模型或其他 fallback。
|
||||
3. 画面理解和文案改写默认归 GPT:`VISION_MODEL`、`REWRITE_MODEL`、`AUDIO_REWRITE_MODEL` 会拦截旧 `gemini-*` 覆盖值。
|
||||
4. Gemini 仍保留在 ASR fallback / 音频分析 / 翻译链路,不要误删。
|
||||
5. 语音只走 Azure OpenAI TTS;不要新增或依赖其他配音通道配置。
|
||||
6. TikTok 受限下载遇到 `Log in for access` 不是后端没接到任务;需要 `YTDLP_COOKIES_FILE` 或 `YTDLP_COOKIES_FROM_BROWSER`,配置后可点“重新下载”。
|
||||
7. 当前主流程不直接批量提交视频;先走“分镜规划 → 首尾帧 → 人工审核”。
|
||||
8. 后端长任务不要用 `--reload`。
|
||||
9. 关键帧 `index` 是稳定 ID,不等于数组下标;前端取帧用 `frames.find(x => x.index === idx)`。
|
||||
|
||||
## 待办(按优先级)
|
||||
1. **ASR 阻塞**:找 SKG IT 开 audio 渠道,或给一个外部 ASR key(Deepgram / 讯飞 / OpenAI 直连)
|
||||
2. **生图测试反馈**:刚做完,等用户在浏览器试 → 调 negative prompt / 模型选型
|
||||
3. **区域化修图(inpainting)**:用户讨论了,方案 A 纯 prompt / B 矩形框 / C 画笔 mask / D SAM;暂时搁置
|
||||
4. **改写 Rewrite**:等用户给产品信息卡模板
|
||||
5. **视频生成**:sora-2 走 SKG 端点不通;考虑外部 key (Runway/Kling/Veo3)
|
||||
6. **合成 Compose**:全本地 ffmpeg + 字幕 + TTS
|
||||
|
||||
## 操作流(开发会话)
|
||||
```bash
|
||||
# 1. 启动后端(如未跑)
|
||||
cd ~/Projects/business/20260512-20260512-skg-tk-二创验证/api
|
||||
source .venv/bin/activate
|
||||
uvicorn main:app --port 4291 --reload
|
||||
|
||||
# 2. 启动前端(如未跑)
|
||||
cd ../web
|
||||
pnpm dev
|
||||
|
||||
# 3. 浏览器
|
||||
open http://localhost:4290/?job=c6767f3a166b
|
||||
```
|
||||
|
||||
## 用户偏好提醒(feedback memory)
|
||||
- feedback_image-gen-model:生图统一用 nano-banana-pro ✅
|
||||
- feedback_keep-scope-small:小需求小做
|
||||
- feedback_flow-dont-stop:连续执行到交付,真分叉才问
|
||||
- feedback_demand-before-infra:基建前先反问谁/痛点/频率
|
||||
- feedback_no-guessing-ports:操作前先核实
|
||||
## 最近变更
|
||||
- 2026-05-18:清理个人语音通道残留,`/health`、前端类型、环境模板和文档不再暴露相关字段或配置。
|
||||
- 2026-05-18:`VISION_MODEL`、`REWRITE_MODEL`、`AUDIO_REWRITE_MODEL` 切到 GPT 默认模型 `gpt-4o`,并加旧 Gemini 环境变量归一化保护。
|
||||
- 2026-05-18:语音通道固定 Azure OpenAI TTS,并按 `AZURE_TTS_PATHS` 尝试语音路径。
|
||||
- 2026-05-18:TikTok 受限链接支持 cookies 配置和失败素材“重新下载”。
|
||||
- 2026-05-18:媒体素材交互统一收口到 `MediaAssetTile`。
|
||||
- 2026-05-18:产品图视角识别和产品缺角度补图收敛到 `gpt-image-2`。
|
||||
|
||||
3848
.memory/worklog.json
3848
.memory/worklog.json
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user