77 lines
1.8 KiB
Markdown
77 lines
1.8 KiB
Markdown
# Archive Content 回填脚本
|
||
|
||
## 脚本路径
|
||
|
||
```text
|
||
scripts/backfill_archive_content.php
|
||
```
|
||
|
||
## 脚本作用
|
||
|
||
回填历史 `archives.content` 字段。
|
||
|
||
这个脚本主要用于修复旧数据中 `content` 为空的问题。它会按下面顺序尝试生成 `content`:
|
||
|
||
1. 如果 archive 有 `raw`,就按当前导入规则把原始 Markdown 规范化成正文文本。
|
||
2. 如果 `raw` 为空,就按 `chunk_index` 顺序拼接现有 chunk 的 `text` 作为回退正文。
|
||
|
||
脚本不会伪造 `raw`。如果历史数据里 `raw` 丢了,脚本只会尽力补 `content`。
|
||
|
||
## 运行前提
|
||
|
||
- 当前环境中的 PostgreSQL 配置可用。
|
||
- 项目依赖已安装完成。
|
||
- 从项目根目录执行命令。
|
||
|
||
## 运行命令
|
||
|
||
默认只处理 `content` 为空的 archive:
|
||
|
||
```bash
|
||
php scripts/backfill_archive_content.php
|
||
```
|
||
|
||
只处理一个 archive:
|
||
|
||
```bash
|
||
php scripts/backfill_archive_content.php --archive_uid=01KQHVREB6XPYF604RVZAP9NNY
|
||
```
|
||
|
||
强制重算,即使 `content` 已经有值:
|
||
|
||
```bash
|
||
php scripts/backfill_archive_content.php --force
|
||
```
|
||
|
||
只预览,不写数据库:
|
||
|
||
```bash
|
||
php scripts/backfill_archive_content.php --dry-run
|
||
```
|
||
|
||
## 成功输出示例
|
||
|
||
```text
|
||
[updated] 01KQHVREB6XPYF604RVZAP9NNY source=chunks content_length=6375
|
||
Archive content backfill completed.
|
||
Archive filter: auto
|
||
Force mode: no
|
||
Dry run: no
|
||
Scanned: 1
|
||
Updated: 1
|
||
From raw: 0
|
||
From chunks: 1
|
||
Skipped: 0
|
||
```
|
||
|
||
## 适用场景
|
||
|
||
- 修复旧版本导入留下的 `archives.content` 为空问题。
|
||
- 导入逻辑更新后,希望重算归一化正文。
|
||
- 为后续 AI / RAG / archive 级读取补齐正文字段。
|
||
|
||
## 重要限制
|
||
|
||
- 如果历史数据既没有 `raw`,也没有 chunks,脚本会跳过该 archive。
|
||
- 用 chunks 回填时,得到的是拼接后的正文文本,不会恢复原始 Markdown 结构。
|