This commit is contained in:
Your Name
2026-04-19 20:50:02 +08:00
parent d469c4b93d
commit 53a1d7e4fd
12 changed files with 801 additions and 91 deletions

View File

@@ -163,6 +163,7 @@
今天最新一轮已落档:
- [40-老模板每日复盘-2026-04-19.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/40-老模板每日复盘-2026-04-19.md)
- [44-老模板环境核对与后台报错说明-2026-04-19.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/44-老模板环境核对与后台报错说明-2026-04-19.md)
---

View File

@@ -0,0 +1,127 @@
# 43-老模板每日例行巡检 - 2026-04-19
## 目的
从今天开始,老模板 `1001-1005` 这条线每天不是只看蜘蛛日志。
还必须多做一个固定动作:
- 把数据库里的老模板域名全部跑一遍访问巡检
这属于例行工作,不再靠人工临时记忆。
---
## 一、每日固定动作
每天至少做这 2 件事:
1.`24h spider workbench`,分析抓取趋势与 SEO 目标偏差
2. 把数据库里老模板 `1001-1005` 的域名全量跑一次访问巡检
这两件事缺一不可。
原因很简单:
1. 蜘蛛日志只能说明“百度怎么抓”
2. 但它不能替代“这些域名现在能不能正常访问”
3. 如果域名本身访问已经异常,单看 spider workbench 很容易误判
---
## 二、已固化脚本
今天已经新增了一个老模板专用脚本:
- [old_tmp_domain_daily_probe.php](/www/wwwroot/VideoSource2/code/scripts/old_tmp_domain_daily_probe.php:1)
它会做这几件事:
1. 从数据库读取老模板域名
2. 默认范围是:
- `1001`
- `1002`
- `1003`
- `1004`
- `1005`
3. 调用现有的 `DomainImportProbeRunHelper`
4. 对每个 host 做采样和轨迹探测
5. 生成 `json/html` 巡检摘要
---
## 三、默认运行方式
在项目根目录执行:
```bash
cd /www/wwwroot/VideoSource2/code
php scripts/old_tmp_domain_daily_probe.php --format=text
```
如果想看完整 JSON
```bash
cd /www/wwwroot/VideoSource2/code
php scripts/old_tmp_domain_daily_probe.php --format=json
```
如果只想巡检部分模板:
```bash
cd /www/wwwroot/VideoSource2/code
php scripts/old_tmp_domain_daily_probe.php --templates=1002,1003 --format=text
```
---
## 四、输出结果在哪里
默认会落到:
- `code/storage/domain-import-runs/YYYYMMDD/HHMMSS_old_tmp_daily_probe_xxxxxx/`
重点文件有两个:
1. `import-probe.summary.json`
2. `import-probe.summary.html`
文本模式下终端也会直接给出:
1. 总处理数
2. 通过数
3. 失败数
4. 失败 host 列表
5. 对应失败阶段和说明
---
## 五、每天回报最少要写什么
每天给主 Codex 或人工交班时,除了蜘蛛日志结论,还要补这 5 条:
1. 今天数据库老模板域名总巡检数是多少
2. 通过了多少
3. 失败了多少
4. 失败 host 主要卡在哪个阶段
5. 蜘蛛日志异常和访问异常是否落在同一批 host
---
## 六、和蜘蛛日志怎么配合看
最稳的方式是:
1. 先看 `old_tmp_domain_daily_probe.php` 结果
2. 确认是不是有整批域名访问异常
3. 再看 `24h spider workbench`
4. 最后判断:
- 是抓取问题
- 还是访问问题
- 还是两者同时存在
---
## 七、一句话交接
> 老模板这条线从 `2026-04-19` 起,日常例行工作固定为“两张表一起看”:一张是蜘蛛日志,一张是数据库域名全量访问巡检;只看其中一张,判断都会偏。

View File

@@ -0,0 +1,198 @@
# 44-老模板环境核对与后台报错说明 - 2026-04-19
## 目的
这份文档专门记录 `2026-04-19` 这次环境核对结论,解决两个后台报错的判断混乱问题:
1. `读取真实站外 summary 骨架失败`
2. `读取 SEO 结果观察面板失败`
结论先说:
> 当前核心问题不是老模板代码,也不是 `domain` 表本身,而是当前 `video2` 库缺少 `seo_external_snapshot` 表,同时相关 migration 尚未执行。
---
## 一、今天实际核对了什么
按固定顺序核对:
1. `migrate:status`
2. `domain` 表字段状态
3. `seo_external_snapshot` 是否存在
4. 当前库里的 migration 记录表情况
特别约束:
- `migrate` 只能由 `www` 用户执行
今天的 `migrate:status` 也是按这个约束执行的。
---
## 二、`migrate:status` 结果
今天已确认下面 3 条 migration 当前都是 `down`
1. `20260119132713 AddBaiduTokenToVideoTable`
2. `20260410010000 CreateSeoExternalSnapshotTable`
3. `20260410020000 OptimizeSeoExternalSnapshotIndexes`
这说明:
1. `d_baidu_token` 这类字段补充没有执行
2. `seo_external_snapshot` 建表没有执行
3. `seo_external_snapshot` 的索引优化也没有执行
---
## 三、当前库的实际状态
当前 `.env` 已确认连接的是:
- `DB_NAME = video2`
### 1. `domain` 表
今天已确认:
- `domain` 表存在
- 基础字段如:
- `d_domain`
- `t_id`
存在
但今天没有查到:
- `d_baidu_token`
### 2. `seo_external_snapshot` 表
今天已确认:
- `seo_external_snapshot` 表不存在
这和后台报错完全一致。
---
## 四、为什么“真实站外 summary 骨架失败”
触发链路是:
1. 后台接口:
- [Site.php getDomainExternalSeoRealSummary](/www/wwwroot/VideoSource2/code/app/admin/controller/Site.php:2941)
2. 调用:
- [DomainExternalSeoRealSummaryHelper.php](/www/wwwroot/VideoSource2/code/app/common/helper/DomainExternalSeoRealSummaryHelper.php:7)
3. 它一上来先走:
- `buildAutoSnapshotSummary($days)`
4. 这一步内部又调用:
- [DomainExternalSeoSnapshotAnalysisHelper.php](/www/wwwroot/VideoSource2/code/app/common/helper/DomainExternalSeoSnapshotAnalysisHelper.php:7)
5. 该 helper 底层模型:
- [SeoExternalSnapshotModel.php](/www/wwwroot/VideoSource2/code/app/model/SeoExternalSnapshotModel.php:9)
6. 绑定表名:
- `seo_external_snapshot`
所以这个报错的根因不是:
- 骨架模板坏了
- provider skeleton 坏了
而是:
- 在进入 skeleton fallback 之前,自动快照分支先查表
- 当前库没有 `seo_external_snapshot`
- 所以直接 SQL 异常
---
## 五、为什么“SEO 结果观察面板失败”
这次也已核对过后台“SEO 结果观察面板”不是单独一块静态 UI而是会去读“站外 SEO 观察数据”。
最像当前入口的是:
- [router.php](/www/wwwroot/VideoSource2/code/app/admin/config/router.php:161)
- `/domain/external/seo/cn/overview`
- [Site.php](/www/wwwroot/VideoSource2/code/app/admin/controller/Site.php:2580)
- `DomainExternalSeoCnOverviewHelper::buildOverview(...)`
而这个 overview 底层直接依赖:
1. `DomainExternalSeoSnapshotAnalysisHelper::buildSummary(...)`
2. `DomainExternalSeoSnapshotAnalysisHelper::buildIndexMovementSummary(...)`
3. `DomainExternalSeoSnapshotAnalysisHelper::buildKeywordMovementSummary(...)`
这些 helper 的底层数据源仍然是:
- `seo_external_snapshot`
所以这条报错本质上和“真实站外 summary 骨架失败”是同一类问题:
- 观察面板不是单独坏了
- 而是它背后的历史快照表没建起来
---
## 六、当前不要误判的点
### 1. 不要把主矛盾误判成 `domain` 表
当前 `domain` 表的 migration 确实没补齐,`d_baidu_token` 也没进库。
但今天这两个后台报错的第一矛盾不是它。
当前更直接的主矛盾是:
- `seo_external_snapshot` 缺表
### 2. 不要把问题误判成老模板 `1001-1005`
这两个报错属于:
- 后台站外 SEO 观察能力
- migration / 表结构层
而不是:
- 老模板前台 SEO 模板渲染失败
### 3. 不要直接在非 `www` 用户下跑 migrate
今天已经再次确认这条规则要固定下来:
- `migrate` 只能由 `www` 用户执行
---
## 七、当前最稳结论
截至 `2026-04-19` 当前环境,最稳结论是:
1. 当前数据库是 `video2`
2. `domain` 表存在,但相关新增字段未补齐
3. `seo_external_snapshot` 表不存在
4. 对应 migration 当前是 `down`
5. 后台“真实站外 summary / SEO 结果观察面板”这两类报错,根因都优先指向:
- `seo_external_snapshot` 缺失
---
## 八、后续最稳动作顺序
后续如果要继续推进,不要跳步,按下面顺序:
1.`migrate:status`
2. 再核对 `domain` 表字段
3. 再核对 `seo_external_snapshot` 是否缺失
4. 最后再决定是否执行 migration
执行约束:
- 只能由 `www` 用户执行
---
## 九、一句话交接
> `2026-04-19` 这次后台报错核对已经确认:当前环境主矛盾不是老模板也不是 `domain` 表本身,而是 `video2` 库缺少 `seo_external_snapshot`,且相关 migration 仍是 `down`;后续如果要处理,必须按“先 status、再核字段和缺表、最后由 www 执行”的顺序推进。

View File

@@ -28,6 +28,8 @@
- [40-老模板每日复盘-2026-04-19.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/40-老模板每日复盘-2026-04-19.md)
- [41-老模板SEO代码优化清单-2026-04-19.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/41-老模板SEO代码优化清单-2026-04-19.md)
- [42-老模板SEO代码优化实录-2026-04-19.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/42-老模板SEO代码优化实录-2026-04-19.md)
- [43-老模板每日例行巡检-2026-04-19.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/43-老模板每日例行巡检-2026-04-19.md)
- [44-老模板环境核对与后台报错说明-2026-04-19.md](/www/wwwroot/VideoSource2/docs/old-tmp-seo/44-老模板环境核对与后台报错说明-2026-04-19.md)
昨天的复盘在这里: