|
|
@@ -1,87 +0,0 @@
|
|
|
-# 10. V3 跑通与代码治理报告(2026-06-12)
|
|
|
-
|
|
|
-> 一句话结论:**V3 整条流程真实跑通了,而且第一次有内容真进池(6 条,V2 同需求是 0 进池全拒),墙钟从 83 分钟降到 3 分 19 秒(约 25 倍)。** 唯一的硬伤不在代码——云服务器(阿里云中国 IP)被 OpenRouter 区域封锁,判定模型调不通,生产部署要先解决出口问题。
|
|
|
-
|
|
|
----
|
|
|
-
|
|
|
-## 一、跑通结论(同一个需求单 id=45"中医养生",三轮对照)
|
|
|
-
|
|
|
-| | V2 基线(2026-06-10) | V3 云服务器(本次) | V3 本机(本次) |
|
|
|
-|---|---|---|---|
|
|
|
-| run | v1_run_3a3bc9f0d72d | v1_run_c3cb568207f1 | v1_run_4e24c1b85637 |
|
|
|
-| **进池** | **0**(17 决策全拒) | 0(判定全失败) | **6 条** ✅ |
|
|
|
-| 待复看 / 拒 | 4 / 13 | 11 / 0 | 13 / 0 |
|
|
|
-| 判定引擎 | decode+分类树(3 次超时) | Gemini **0/11 成功**(被区域封锁) | Gemini **16/19 成功** |
|
|
|
-| 血缘校验 | pass | pass | pass |
|
|
|
-| **墙钟** | **83 分钟** | 87 秒 | **3 分 19 秒** |
|
|
|
-| 成本 | decode 不可控等待 | ~0(调用全失败) | **$0.42**(19 次判定) |
|
|
|
-
|
|
|
-**业务读法:**
|
|
|
-- V3 立项要证明的命题——"换 Gemini 直读视频,合格的中老年内容就能进池"——**验证成立**:同一个需求,V2 一条都进不来,V3 进了 6 条,且判定理由可读(适老性、贴题度都有分数和一句话理由)。
|
|
|
-- 全链路(取需求 → 真爬虫搜索 → 下载视频 → ffmpeg 压缩 → Gemini 判定 → 规则打分 → 游走扩展 → 落库 → 血缘校验)**每一环都是真的**,没有 mock。
|
|
|
-- 游走五类动作全走通:翻页 2 次、标签扩词 1 次、看作者作品 2 次、进池沉淀 6 次、降延伸次数 13 次——允许延伸游走次数(原来的预算)闸、判定通行证、去重、血缘全部按规则执行。
|
|
|
-- 判定失败的优雅降级也真实验证了:失败内容自动转"待复看"、run 不崩、留痕可查(两轮共 14 条失败全部如此)。
|
|
|
-
|
|
|
-## 二、真跑暴露的问题(按严重度)
|
|
|
-
|
|
|
-| # | 问题 | 业务影响 | 怎么办 |
|
|
|
-|---|---|---|---|
|
|
|
-| 1 | **云服务器调不通判定模型**:OpenRouter 平台连得上,但推理接口对阿里云中国 IP 全部 403 区域封锁(Gemini/Claude 都封) | **生产部署的拦路虎**——代码放在那台服务器上,判定永远全失败,内容永远进不了池 | 三选一:给服务器配海外代理出口 / 换国内可直连的判定通道(如自有网关) / 判定环节放在能出海的机器上跑。**需要拍板** |
|
|
|
-| 2 | ~~相关性分数没有区分度~~ **勘误:贴题满分是设计、非问题**:16 条全 fit_true、relevance 全 0.8–1.0 | **贴题是"门"不是排序器**:按题搜回来的内容贴题都满分(正是设计要的),只有偏题的才掉档;贴题合格后由热度排序定进池——这是设计,**不是"偏离贴题为主初衷"** | 贴题侧唯一起步值="稍降"惩罚档位(贴题<0.8 跌一档现仅扣 15 分,可加重/趋拒);热度侧见 #3 |
|
|
|
-| 3 | **热度锚点是拍脑袋起步值、待标定**:10 条 60–69 待复看皆"贴题满分、热度分不够" | 贴题合格后由热度排序定进池(设计如此);只是热度锚点(抖音 1 万~100 万赞)是拍的、没真实数据校准 → 锚点不准则进池线失真 | 用真实互动分布标定各平台锚点 |
|
|
|
-| 4 | 本机仍有 3/19 判定 HTTP 失败(瞬时) | 失败即降级待复看,不丢内容,但人工复看量+16% | 可加一次重试(目前判定无重试);量小,优先级低 |
|
|
|
-| 5 | 服务器轮 2/11 视频下载失败 | 视频拿不到=没法判=待复看 | 真实网络波动,有降级兜底;观察即可 |
|
|
|
-
|
|
|
-## 三、代码治理体检(详细对照 09 计划 §15)
|
|
|
-
|
|
|
-**总体:结构是健康的**——模块职责清晰(取数/判定/规则/游走/落库各管一段)、无循环依赖、326 项自动测试全绿且无注水(无空断言/跳过)、判定和游走全部配置驱动(改规则只改 JSON 不改代码)。
|
|
|
-
|
|
|
-**本次已修 5 项**(行为零变化,测试全绿):
|
|
|
-
|
|
|
-| 修了什么 | 业务效果 |
|
|
|
-|---|---|
|
|
|
-| 落库改"整批一次提交"(原来每行一次网络往返) | 真跑落库更快更稳 |
|
|
|
-| 视频压缩加 120 秒超时(原来会被坏视频卡死) | 一条坏视频不再拖垮整批判定 |
|
|
|
-| 同一段代码抄三份的两处合并(校验失败构造/判定失败构造) | 改一处生效全部,不再漏改 |
|
|
|
-| 配置文件加缓存(原来一个 run 反复读盘 3+ 次) | 小提速,消除重复 IO |
|
|
|
-
|
|
|
-**待决策 4 项**(动起来有代价,建议带着真跑数据一起定):事件通道文件模式空实现(设计债)、游走引擎 4 个超长函数拆分(纯重构需重验等价)、配额接口鸭子类型收紧(M5 有意的兼容设计)、查询效果两套聚合统一(反哺前置)。
|
|
|
-
|
|
|
-## 四、临时拍板决策复核(真跑回填)
|
|
|
-
|
|
|
-09 §15 台账里 B 类"无真实数据支撑的临时值",本次真跑给了第一批数据:
|
|
|
-
|
|
|
-| 临时值 | 真跑表现 | 结论 |
|
|
|
-|---|---|---|
|
|
|
-| 视频压缩档(360p/1fps) | **16 条真实视频批量压缩全部成功**,Gemini 都能读 | ✅ 起步值靠谱,可转正 |
|
|
|
-| 并发度 4 | 19 条判定并发跑完,无限速报错 | ✅ 起步值可用(提速空间留观察) |
|
|
|
-| 配额 cap=200 | 实际用 19 次,余量充足 | ✅ 合理 |
|
|
|
-| 游走延伸次数(翻页3/作者2/tag1) | 翻页用 2、作者顶格 2、**tag 顶格 1** | ⚠️ tag 延伸次数被用满——召回面收窄的判断成立,放宽要配合成本一起定 |
|
|
|
-| 打分权重/阈值(60:40、70/60) | 贴题全 0.8+ 满分(=门、设计),进池由热度排序定档(=设计) | ✅ **贴题满分是设计、非缺陷**;待调仅:贴题"稍降"惩罚档位(<0.8) + 热度锚点(见下行) |
|
|
|
-| 热度锚点(1 万~100 万赞) | 贴题合格内容里按互动排序定档(设计),但锚点值是拍的 | ⚠️ **锚点起步值待真实数据标定**(非缺陷,是缺校准) |
|
|
|
-
|
|
|
-C 类"权宜之计"里,"mock 判定员默认全给高分"的坑也被真跑证实:拒判/低分路径在测试里从没走过,本次是第一次真实走通(没出问题,但靠的是兜底设计)。
|
|
|
-
|
|
|
-## 五、收尾前最该做的 3 件事
|
|
|
-
|
|
|
-1. **拍板服务器出口方案**(问题 #1):不解决,生产部署=摆设。这是唯一的硬阻塞。
|
|
|
-2. **用真跑数据标定热度锚点 + 贴题"稍降"惩罚力度**(#2/#3 已勘误为设计):贴题满分是设计、不需要"区分度";真要调的是热度锚点(把互动换成热度分的及格线/满分线)和"贴题<0.8 罚多狠",多跑几个题材的需求单攒数据即可。
|
|
|
-3. **判定加一次重试**(问题 #4):3/19 的瞬时失败率,一次重试大概率消掉一半以上的人工复看增量,改动很小。
|
|
|
-
|
|
|
----
|
|
|
-
|
|
|
-## 六、V2 废弃物清除(2026-06-12 当日追加执行,详账见 09 附录 E.4)
|
|
|
-
|
|
|
-跑通报告交付后,按四项拍板(历史数据归档后删/砍画像链/零行表全保留/配置僵尸都删)做了一轮全仓废弃物清除,五批 commit(`d17fc13`→`1eb8916`):
|
|
|
-
|
|
|
-- **砍掉一笔每条视频都在白花的钱**:douyin 客户端过去为每条视频多调一次"观众画像"接口——V3 判定早已不用画像(本次真跑 19 条全调全失败),整条调用链删除,判定结果零影响(快照指纹零重钉实证);
|
|
|
-- **配置恢复"真实"**:老游走策略文件 13 段里 10 段是僵尸(运行时零消费,仅靠非空校验被迫活着),JSON 段+Excel sheet+校验器同步删除;.env 清掉 105 行死键;
|
|
|
-- **生产库只剩 V3 数据**:V2 时代 21 表 1451 行(12 个旧 run 的全量血缘)归档到仓库 `archive/v2_db_archive/` 后删除,decode 时代 7 列+画像 1 列 DROP——复盘统计从此不混旧架构的行;
|
|
|
-- **交叉验证防住了 2 个误删**:采证岗判"可删"的 mock 判定员和五张零行资产表,复核证实都是活功能(零行表是"进池即写",只是开双写的 run 从没进过池),已写入防误删清单。
|
|
|
-
|
|
|
-清理后基线:**324 项测试全绿**(原 326,−3 个画像专属用例 +1 个配置钉死用例),config gate 五闸 pass,DB schema 闸 pass。
|
|
|
-
|
|
|
-- 部署:`stuuudy.pem` → root@192.168.82.27;`git pull`(1cd1b94→7e0e394,服务器从 V2 一步跳到 V3 全量);`.env` 备份后还原仓库版+回填服务器定制(双写=1、deepseek 查询模型);`pip install imageio-ffmpeg`(自带 ffmpeg 二进制,免系统安装)。
|
|
|
-- 预检三闸:DB 21 表 schema_ready / config gate 5 闸 pass / 服务器 pytest **326 passed**。
|
|
|
-- 服务器真跑:`--platform douyin --platform-mode real --demand-content-id 45`,DB 双写开;87 秒完成,validation pass,判定 0/11(OpenRouter 403 region block,经 curl 实证:models 端点 200、推理端点对 google/anthropic 模型一律 403)。
|
|
|
-- 本机真跑:同命令文件模式(不写生产库);199 秒完成,validation pass,判定 16/19,进池 6。run 产物:`runtime/v1/v1_run_4e24c1b85637/`(本机)、服务器 `runtime/v1/v1_run_c3cb568207f1/` + DB。
|