# v6.3.15 采集进度/多任务/重复优化 + AI回复8010修复

## AI回复 retCode=8010 修复
现场错误：
- retCode=8010
- 参数校验失败：字段 createTime 格式不正确
- do-comment 只提交了 comment_type/content/feed_id

修复：
1. 通知 `#ref` 可用时仍优先走官方 `do-comment/do-reply --ref`。
2. 桌面轮询没有本地 ref 时，不再直接拿不完整通知字段发送。
3. 对 `feed_create_time` / `comment_create_time` 统一转换为 Unix 秒（10位），
   13位毫秒自动除1000，ISO时间自动转Unix秒。
4. 通知缺 feed_create_time 时，根据 guild_id + feed_id 回查 get-guild-feeds
   （最新/热门）补齐帖子 createTime。
5. 收到评论/回复但通知缺 comment_id/评论时间时，自动调用 get-feed-comments
   回查并匹配评论正文/作者，补齐 comment_id、comment_create_time、author_id。
6. type=4/5 收到评论/回复时优先 do-reply；只有无法形成评论链的@帖子场景才 do-comment。
7. 在 createTime 仍无法补齐时直接阻止发送并显示明确诊断，不再向平台提交必失败请求。
8. 保留失败最多5次自动重试，并复用已生成DeepSeek文本。

腾讯官方约束：
- do-comment 评论帖子需要 feed_id + feed_create_time。
- do-reply 只用于回复已有评论/回复，需要 comment_id。
- `--ref` 会由CLI自动填充通知上下文链。

## 全网采集排除自己频道
- 调用官方 `manage get-my-join-guild-info`。
- 从 `created_guilds` 精确识别当前QQ自己创建的频道。
- 全网频道池不再保存/扫描 created_guilds。
- 旧版本已缓存的自己频道会在下一次发现时自动从 discovered_public_guilds 清理。
- managed/joined 频道不一刀切排除，仍可采集。

## 标题重复逻辑
- 自动采集标题先做编号清理，再生成 title_key。
- 只要清洗后的标题相同，就直接跳过，不下载、不保存。
- 同时检查 collected_videos 和现有视频素材库，兼容旧版本已经入库的素材。
- source_key / 文件SHA256 去重继续保留，形成三层去重。

## 采集进度
- video_collection_jobs 新增持久化进度字段。
- 页面新增实时进度条。
- 展示：发现频道 → 扫描频道 → 读取帖子详情 → 处理/下载视频 → 完成/失败。
- 后台自动采集和手工“立即采集”都会显示进度。

## 多任务与功能页
- 同一个QQ可以保存任意多条采集任务。
- 选中任务不再自动切换到编辑模式，避免误覆盖。
- 新增“保存为新任务 / 新建表单 / 编辑所选”明确操作。
- 只有点击“编辑所选”后保存才更新那一条。
- 采集页新增“扫码登录/新增QQ”，扫码完成后返回采集页并从数据库重新加载任务。
- 已保存采集任务持久化，不因切页或扫码登录而删除。

## 热更新
- 版本继续 v6.3.15。
- app/updater.py / make_update_package.py / bootstrap.py /
  licensing / license_public_key / 构建脚本继续保持指定 v6.3.12 原文件字节级不变。
