# 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 结构。