Files
SEONexus/docs/2026-04-19-domain-seo-external-storage收口说明.md
Your Name 53a1d7e4fd debug
2026-04-19 20:54:57 +08:00

153 lines
5.0 KiB
Markdown

# 2026-04-19 domain-seo-external storage 收口说明
## 背景
`domain-seo-external` 这套后台摘要原先把最新运行产物持续写到:
- `code/public/_admin_templates/domain-seo-external/latest`
- `code/public/_admin_templates/domain-seo-external/snapshot-runs`
- `code/public/_admin_templates/domain-seo-external/snapshot-validate-runs`
这会带来两个直接问题:
1. 运行数据混进 `public`,容易污染 Git 待提交区
2. `latest/*.summary.json/html` 属于运行产物,不适合作为源码提交
---
## 本次收口目标
`domain-seo-external` 的最新摘要与快照运行产物统一切到:
- `code/storage/external-seo/latest`
- `code/storage/external-seo/snapshot-runs`
- `code/storage/external-seo/snapshot-validate-runs`
并确保管理端 / API 返回路径同步改成 `storage/...` 相对路径。
---
## 本次实际修改
### 1. 管理端 root 改到 storage
文件:
- [Site.php](/www/wwwroot/VideoSource2/code/app/admin/controller/Site.php:1058)
调整:
1. `domainExternalSeoSummaryRoot()` 改到 `storage/external-seo/latest`
2. `domainExternalSeoSnapshotRunRoot()` 改到 `storage/external-seo/snapshot-runs`
3. `domainExternalSeoSnapshotValidateRunRoot()` 改到 `storage/external-seo/snapshot-validate-runs`
4. 新增 `storageRelativePath()`,供站外 SEO 这条链专门返回 `storage` 相对路径
### 2. 管理端站外 SEO 摘要返回值改走 storage 路径
文件:
- [Site.php](/www/wwwroot/VideoSource2/code/app/admin/controller/Site.php:2192)
覆盖范围:
1. `getDomainExternalSeoSummary`
2. `getDomainExternalSeoTrendSummary`
3. `getDomainExternalSeoRealSummary`
4. Search Console / 百度推送 / 爱站关键词 / site: probe 等摘要接口
5. `saveDomainExternalSeoSnapshots`
6. `validateDomainExternalSeoSnapshots`
7. 手工导入后返回的 `real_summary_*` 路径
结果:
这些接口现在返回的是:
- `external-seo/latest/...`
- `external-seo/snapshot-runs/...`
- `external-seo/snapshot-validate-runs/...`
而不是 `public/_admin_templates/...`
### 3. API 推送入口改到 storage
文件:
- [SeoCollector.php](/www/wwwroot/VideoSource2/code/app/api/controller/SeoCollector.php:35)
调整:
1. `summaryRoot()` 改到 `storage/external-seo/latest`
2. `snapshotRunRoot()` 改到 `storage/external-seo/snapshot-runs`
3. `snapshotValidateRunRoot()` 改到 `storage/external-seo/snapshot-validate-runs`
4. `saveSnapshots()` / `validateSnapshots()` 的返回路径统一改走 `storageRelativePath()`
### 4. snapshot run 索引 helper 也改走 storage
文件:
- [DomainExternalSeoSnapshotRunIndexHelper.php](/www/wwwroot/VideoSource2/code/app/common/helper/DomainExternalSeoSnapshotRunIndexHelper.php:7)
- [DomainExternalSeoSnapshotValidateRunIndexHelper.php](/www/wwwroot/VideoSource2/code/app/common/helper/DomainExternalSeoSnapshotValidateRunIndexHelper.php:7)
调整:
1. 原先 helper 内部只识别 `public`
2. 现在改为识别 `storage`
3. 避免列表接口继续吐绝对路径,或继续带旧 `public` 前缀
---
## 兼容处理
为了避免切换后后台立刻读不到最近一次摘要,这次已把当前:
- `code/public/_admin_templates/domain-seo-external/latest/*`
复制了一份到:
- `code/storage/external-seo/latest/*`
这样下一次后台读 `storage` 时,至少已有一份最近摘要可用。
---
## 已验证
已通过语法检查:
```bash
php -l code/app/admin/controller/Site.php
php -l code/app/api/controller/SeoCollector.php
php -l code/app/common/helper/DomainExternalSeoSnapshotRunIndexHelper.php
php -l code/app/common/helper/DomainExternalSeoSnapshotValidateRunIndexHelper.php
```
---
## 当前仍需主线 Codex 注意
1. `code/public/_admin_templates/domain-seo-external/latest/*` 这批文件在仓库里当前仍是已跟踪文件
2. 本次收口已经阻止后续新运行继续写这条 `public` 路径
3. 但历史上已被 Git 跟踪的 `public` 运行产物,这次没有直接强删或批量移出版本库
4. 主线 Codex 提交前,建议明确把这批运行产物排除在提交之外
---
## 建议提交范围
建议优先给主线 Codex 复核这几份代码:
- [Site.php](/www/wwwroot/VideoSource2/code/app/admin/controller/Site.php:1058)
- [SeoCollector.php](/www/wwwroot/VideoSource2/code/app/api/controller/SeoCollector.php:35)
- [DomainExternalSeoSnapshotRunIndexHelper.php](/www/wwwroot/VideoSource2/code/app/common/helper/DomainExternalSeoSnapshotRunIndexHelper.php:7)
- [DomainExternalSeoSnapshotValidateRunIndexHelper.php](/www/wwwroot/VideoSource2/code/app/common/helper/DomainExternalSeoSnapshotValidateRunIndexHelper.php:7)
这份说明文档:
- [2026-04-19-domain-seo-external-storage收口说明.md](/www/wwwroot/VideoSource2/docs/2026-04-19-domain-seo-external-storage收口说明.md:1)
---
## 一句话结论
> 本次已经把 `domain-seo-external` 的 latest / snapshot 运行产物输出主链从 `public/_admin_templates/...` 收口到 `storage/external-seo/...`,后续不应再把这类后台摘要数据当源码提交。