# 2026-04-24 抖音客户端配置接入进度

## 2026-04-25 当前状态
截至 2026-04-25，抖音项目这一轮的主结论如下：

- 客户端真实配置注入链路已打通，运行时以客户端配置为主口径
- `workspace_entry.py` 的 pending intake / continue 主链路已恢复到可验证状态
- `VectCut` 已从本轮阻断项中移除，不再作为抖音运行时必填
- 客户端聊天附件入口已从“仅图片”扩展为“图片 + 通用资料文件”
- PDF 附件已在桌面 smoke 中完成真实落盘验证

当前更准确的表述不是“只差 UI 验收”，而是：

- 配置接入、运行时注入、pending intake 回归、通用附件上传已经完成并有验证
- 下一阶段仍然是客户端真实聊天验收

## 本轮新增完成项

### 1. 客户端真实配置接入
- 客户端设置保存后，抖音项目运行时改为从客户端配置注入 `project.env`
- `QJC_CLIENT_CONFIG_ACTIVE=1` 已在 smoke 中确认
- 抖音相关模型配置已覆盖：
  - `VIDEO_LLM_ANALYZER_*`
  - `REPLICATION_BRIEF_*`
  - `SEEDANCE_*`
  - `VOLC_*`
  - `QINIU_*`
- `VectCut` 不再是本轮闭环前置阻断项

### 2. Pending Intake 回归修复已稳定
- `run_intake()` 已恢复为可调用主路径
- `workspace_entry.py` 的 pending intake / continue 逻辑已重新验证
- 当前不再继续主动改 `run_from_request.py` / `coordinator.py` 主业务编排

### 3. 客户端通用附件上传已接入
- 共享类型 `ChatAttachment.kind` 已从仅 `image` 扩展为 `image | file`
- 桌面端新增统一附件选择接口 `pickAttachments()`
- 当前聊天附件支持：
  - 图片：`png/jpg/jpeg/webp/gif/bmp`
  - 文档资料：`pdf/ppt/pptx/xls/xlsx/csv/tsv/doc/docx/txt/md/json`
- 图片继续落到 `inputs/images/main`
- 文档资料落到 `inputs/assets/manual`
- 聊天输入支持多附件发送

### 4. PDF 真实样本 smoke 已通过
本轮使用以下真实样本完成验证：

- `C:\Users\EDY\Desktop\douyin-example\2025欧文酵室招商手册(1).pdf`

已确认的事实：

- smoke 中附件类型为 `file`
- PDF 被真实落盘到项目目录：
  - `projects/douyin/inputs/assets/manual/...pdf`
- assistant 回复中已包含 `Project attachments:` 回显
- 说明附件没有停留在 UI 层，而是实际进入了抖音项目工作区

## 已完成范围
- 客户端抖音模型配置读写、保存、注入
- 抖音运行时 `project.env` 注入
- `workspace_entry.py` 的 pending intake / continue 适配
- `run_intake()` 回归修复
- `VectCut` 非阻断化
- 客户端聊天附件从“仅图片”扩展到“通用资料文件”
- PDF 资料落盘到 `inputs/assets/manual`
- smoke 对真实配置和真实 PDF 的验证

## 当前未完成范围
- Pending Intake UI 手工闭环验收
- 三条业务链路聊天闭环验收
- OmniHuman / Seedance 聊天闭环验收
- 验收过程中暴露问题后的针对性回修

## 下一步顺序
1. Pending Intake UI 闭环验收
2. `research_replication + crawler`、`specified_sample + link`、`direct_creation + none` 三条链路聊天闭环验收
3. OmniHuman / Seedance 聊天闭环验收
4. 若验收暴露问题，再做最小范围回修

## 边界
- 不主动重写 `run_from_request.py` 三条主链路逻辑
- 不主动重写 `coordinator.py` 主业务编排
- `VectCut` 继续排除在本轮主线通过门槛之外

## 验证记录
- 2026-04-25：`python workspace/douyin/test_intake_integration.py` 28/28 通过
- 2026-04-25：`python workspace/douyin/test_pending_intake.py` 68/68 通过
- 2026-04-25：`corepack pnpm typecheck` 通过
- 2026-04-25：`corepack pnpm build` 通过
- 2026-04-25：`build/scripts/douyin-expert-cloud-bundle-smoke.ps1 -SettingsConfigPath "C:\Users\EDY\Desktop\龙虾密钥&模型配置信息.txt" -AttachmentFixturePath "C:\Users\EDY\Desktop\douyin-example\2025欧文酵室招商手册(1).pdf" -SkipMaterializeRuntime`
  - 真实配置注入通过
  - PDF 附件落盘通过
  - assistant `Project attachments:` 回显通过
  - 首次运行仍偶发 `Gateway connection closed (1012)`，重试后通过

## 2026-04-26 最新进度

### 已验证通过
- 客户端真实聊天链路中，上传 PDF 并描述需求后，可以走通纯画面 Seedance 视频生成。
- 已修复 Seedance split 最终视频 0 秒 / 缺音轨问题：
  - `run_pipeline.py` 在无 `ffprobe` 时改用 `ffmpeg -i` 兜底解析媒体时长。
  - audio compose 前后增加最终产物校验，避免 0 秒视频被写成 success。
  - `workspace_entry.py` 已支持读取 `results.video_seedance.manifest` 内的嵌套最终视频字段，并在必要时用 `final_video_concat.mp4 + narration_audio_path` 兜底重新 mux。
- 已用坏产物目录验证修复：
  - `E:\testworkspace2\projects\douyin\output\招商\seedance-split-runs\20260426-184026`
  - 修复后 `final_video.mp4` 时长约 30 秒，包含视频流和音频流。
  - `latest_seedance_split.mp4` 已同步更新。
- `D:\qjclaw\workspace\douyin` 已重新打包上传到云端配置。
- 本地开发版客户端已重启，`5173` 和内置网关 `18889` 正常监听。

### 当前仍有问题
- 数字人口播链路仍待排查。
- 上传音频 + 数字人图片生成链路仍待排查。
- 输入抖音链接并走样本/复刻相关链路仍待排查。
- Seedance 平台返回 `OutputVideoSensitiveContentDetected` 时，目前按平台拒绝生成处理，只提示用户调整需求，不做自动改写 prompt。

### 下一步建议
1. 先验证数字人口播：确认音频、数字人图片、模型配置、输出目录和失败日志。
2. 再验证“传音频 + 数字人图片”链路：区分是附件落盘、参数传递、OmniHuman 调用还是后处理失败。
3. 最后验证抖音链接链路：重点看 crawler/downloader/analyzer/selected sample continue 是否在客户端聊天里闭环。