内容生产链

v2.0
每天三班 · 无人值守的生产线
架构总览 1.0 2.0 3.0
一句话:把「发一篇内容」拆成六个模块,每个模块只做一件事,做不了就停住报错 —— 而不是往下猜。

结构

A
扫描
找候选
给最小可判信息
模型
X
判定
判重 · 定归属
排结构 · 写文字
模型
B
组装
结构 → 整页
缺东西即停
纯代码
C
检查
结构 · 值域
规则 · HTML
纯代码
D
部署
推页 · 数据件
索引 · 同步
纯代码
E
验收
线上四项
核验
纯代码
顺序不能换
C 不通过时 D 拒绝执行 —— 这是前置检查,不是口头约定。
B 拿到的结构缺一块,就报错停住,不猜要填什么。
整条链里只有 A 和 X 调模型,其余四个模块是纯代码,同样的输入永远出同样的结果。
判断只在 X 一处发生。别的地方出现「我觉得这样更好」,就是越界。

三班

06:30
·
12:30
·
19:30
每天三班,无人值守。没有人回答问题,所以需要人裁的,一律写进留痕后停住。
产出上限 · 本期 5 条
上限不是指标。可投产几条就产几条,只产 0 条也合法 —— 扫满、判定走完、确认本期没有可投产的,就照常收口。
不为凑数降标准。
超过上限的,按价值排序取前面几条,剩下的直接落无效库,不占下一轮判重。

标准放在哪

唯一源在服务器,宿主只放指针
标准正文(格式、判重、部署、验收)全部放在服务器一处。
执行端不放副本 —— 取不到就停住报错,不许「用手边旧版顶一下」。
副本是这里最容易犯的错:两边一漂,谁也不知道哪边是对的。
放什么在哪性质
标准服务器 conf/唯一源 · 指过去
算法服务器 scripts/唯一源 · 不持副本
运行配置执行端本环境的值 · 每个角色一样
宿主配置执行端 · 一角色一文件本角色的值 · 逐角色不同
为什么运行配置要拆两份
判据只有一句:这个值逐角色不同吗?
不同 —— 就一个角色一份文件。混在一起会出两种事:角色 A 读到角色 B 的本机路径,写到别人的目录去了;或者后写的把先写的盖掉。

每班留下什么

data\{实例}\ A-扫描结果 扫到了什么 X-分析结论 判了什么 · 为什么 B-生产实际 生成的页面 C-检查结论 过没过 · 哪条没过 D-部署动作 推了什么 · 推到哪 E-验收结论 线上对不对
为什么六个区都要留
页面不对的时候,「从头查到尾」是最贵的排查方式。
六个区各留一份,哪一步不对就看那一份 —— 判断错了看 X,渲染错了看 B,检查漏了看 C。
同一算法两个入口:自动跑和人工补跑用同一套工具,差异写死成表,不另造一套。

边界

动作归谁
推新页 · 删页需人授权
改服务器配置 · 改标准需人授权
回改已上线的内容需人授权
索引维护 · 落盘两处链内必做 · 不请示
修自家缺陷造成的死链 / 笔误可自做 · 必留痕 · 当轮报
判据:这一步改变对外事实吗
改变 —— 需授权。只是让已有的东西对上(补索引、补备份)—— 链内自做。
页已经发出去了而索引没更新,站上就是不一致状态;补索引只是让它反映已有事实,没有改变任何对外的东西。

这一版的代价

跑得住,但带不走
2.0 的所有前提是「能连上那台服务器」。换一台机器、换一个人接手,第一步得先要到访问权 —— 而那台服务器上没有一份能直接读的「这套东西认什么」。
这就是 3.0 存在的原因:把标准收进 config/,让它可以被拷走。