迁移 PostgreSQL 并保留完整研究数据与投稿历史 #13

Merged
Zayden-Jung merged 1 commits from codex/postgresql-migration into main 2026-11-06 18:56:52 +00:00
Collaborator

现有索引只在 SQLite,无法使用用户已有的共享 PostgreSQL。新增完整业务数据迁移和原生查询,保留论文、来源、投稿、决定、标签、合并记录及原 ID;目标采用可配置的共享研究数据域,供后续项目复用表。

  • paper_atlas/postgres/__init__.py:独立 PostgreSQL 模块;client.py:libpq service、只读一致性事务、可配置 schema 与查询行适配;schema.py:完整21张业务表的类型、主键、索引、外键及 CHECK 语义盘点;migration.py:源维护锁、目标 advisory lock、固定快照、逐表 COPY/断点恢复、完整排序哈希回读、全部约束验证、历史 ID 序列恢复、GIN 重建及原子发布。
  • paper_atlas/cli.py、querying.py:maintain postgres 和 --pg-service/--pg-schema;保留会议别名、标签、逐次投稿与跨会录用语义。PostgreSQL 使用原生英文 web-search 全文检索,不宣称与 FTS5 分词完全等价。
  • paper_atlas/db/backend.py、store.py、ingestion/maintenance.py、arxiv_tags.py、pmlr_tracks.py:切换标记保护旧写入入口,防止备份继续写入后与 PostgreSQL 分叉;只读核查仍可进行。
  • pyproject.toml:独立 postgres extra,固定 psycopg[binary] 3.3.8。
  • tests/test_postgres.py:12项检查,真实 PostgreSQL 覆盖完整内容、拒稿后另会录用、自定义/平台标签、论文/投稿/决定历史 ID 不复用、中断恢复、源变更、暂存数据篡改、外键失败、禁止覆盖和只读查询。
  • .gitea/workflows/check.yml:在既定 ces-control runner 安装二进制驱动,有已配置 service 时运行真实 PostgreSQL 测试,并检查构建及安装后的迁移入口。
  • README.md、docs/usage.md、docs/operations.md:共享库/schema、连接配置、查询差异、迁移与恢复、验收和切换后旧导入限制。

验证:批准的 ces-control:host 上完整188项回归全部通过,包含真实 PostgreSQL 测试。未在本机测试或构建。CI957(作业1054,aliyun-ces-control/ces-control)实际188项测试全部通过,6项真实PostgreSQL集成用例均执行成功,wheel构建及安装检查成功。

运行环境:用户授权的现有容器已从 endoleap-dev-postgres-1 改名为 foundry-postgres;镜像 postgres:17-alpine、实际17.11。Compose配置已持久化并校验,进程、数据卷和网络地址一致,foundry-core readiness改名前后均200。已在原实例准备 foundry_data 空库、research schema的连接配置;凭据仅在服务器0600服务文件中,不入库、不上命令行。

限制/待办:固定a3b677b已在远程安装并逐文件核对50个源码/资源文件一致;全量作业 paper-atlas-postgresql-migrate.service 已启动(InvocationID a5164bfe367a4070bf398c542f5b4d54),当前源快照校验已完成,sources(11行)和 papers(3,526,999行)已复制提交,identifiers 正在复制;尚未完成全量回读验证,也尚未发布生产 schema。报告以 /data/paper-index/collected/postgres-migration.json 为准,不能把进程启动或测试通过当作迁移完成。只有21表数量/全量哈希、所有约束、序列、GIN与实际查询验收通过后才切换;SQLite保留备份。旧采集仍可写独立文件,后续 PostgreSQL 生产导入适配属于原任务下一阶段;本次不声称旧 SQLite 导入器已支持 PostgreSQL。最终全库去重及会议覆盖核验仍未完成。按用户要求,在本次生产迁移验收结束后暂停整个目标。

base main(029e73c);head codex/postgresql-migration(a3b677b)。已推送工作分支,等待用户手动合并。
代码交付状态:已完成代码与远程 CI 验证,现转为可评审 PR;git merge-tree 对当前 main 的合并预演无冲突。数据迁移是已固定版本的独立运行作业,仍需继续全量验收。代码合并不代表生产数据迁移已完成;迁移验收完成后才按用户要求暂停目标。

现有索引只在 SQLite,无法使用用户已有的共享 PostgreSQL。新增完整业务数据迁移和原生查询,保留论文、来源、投稿、决定、标签、合并记录及原 ID;目标采用可配置的共享研究数据域,供后续项目复用表。 - paper_atlas/postgres/__init__.py:独立 PostgreSQL 模块;client.py:libpq service、只读一致性事务、可配置 schema 与查询行适配;schema.py:完整21张业务表的类型、主键、索引、外键及 CHECK 语义盘点;migration.py:源维护锁、目标 advisory lock、固定快照、逐表 COPY/断点恢复、完整排序哈希回读、全部约束验证、历史 ID 序列恢复、GIN 重建及原子发布。 - paper_atlas/cli.py、querying.py:maintain postgres 和 --pg-service/--pg-schema;保留会议别名、标签、逐次投稿与跨会录用语义。PostgreSQL 使用原生英文 web-search 全文检索,不宣称与 FTS5 分词完全等价。 - paper_atlas/db/backend.py、store.py、ingestion/maintenance.py、arxiv_tags.py、pmlr_tracks.py:切换标记保护旧写入入口,防止备份继续写入后与 PostgreSQL 分叉;只读核查仍可进行。 - pyproject.toml:独立 postgres extra,固定 psycopg[binary] 3.3.8。 - tests/test_postgres.py:12项检查,真实 PostgreSQL 覆盖完整内容、拒稿后另会录用、自定义/平台标签、论文/投稿/决定历史 ID 不复用、中断恢复、源变更、暂存数据篡改、外键失败、禁止覆盖和只读查询。 - .gitea/workflows/check.yml:在既定 ces-control runner 安装二进制驱动,有已配置 service 时运行真实 PostgreSQL 测试,并检查构建及安装后的迁移入口。 - README.md、docs/usage.md、docs/operations.md:共享库/schema、连接配置、查询差异、迁移与恢复、验收和切换后旧导入限制。 验证:批准的 ces-control:host 上完整188项回归全部通过,包含真实 PostgreSQL 测试。未在本机测试或构建。CI957(作业1054,aliyun-ces-control/ces-control)实际188项测试全部通过,6项真实PostgreSQL集成用例均执行成功,wheel构建及安装检查成功。 运行环境:用户授权的现有容器已从 endoleap-dev-postgres-1 改名为 foundry-postgres;镜像 postgres:17-alpine、实际17.11。Compose配置已持久化并校验,进程、数据卷和网络地址一致,foundry-core readiness改名前后均200。已在原实例准备 foundry_data 空库、research schema的连接配置;凭据仅在服务器0600服务文件中,不入库、不上命令行。 限制/待办:固定a3b677b已在远程安装并逐文件核对50个源码/资源文件一致;全量作业 paper-atlas-postgresql-migrate.service 已启动(InvocationID a5164bfe367a4070bf398c542f5b4d54),当前源快照校验已完成,sources(11行)和 papers(3,526,999行)已复制提交,identifiers 正在复制;尚未完成全量回读验证,也尚未发布生产 schema。报告以 /data/paper-index/collected/postgres-migration.json 为准,不能把进程启动或测试通过当作迁移完成。只有21表数量/全量哈希、所有约束、序列、GIN与实际查询验收通过后才切换;SQLite保留备份。旧采集仍可写独立文件,后续 PostgreSQL 生产导入适配属于原任务下一阶段;本次不声称旧 SQLite 导入器已支持 PostgreSQL。最终全库去重及会议覆盖核验仍未完成。按用户要求,在本次生产迁移验收结束后暂停整个目标。 base main(029e73c);head codex/postgresql-migration(a3b677b)。已推送工作分支,等待用户手动合并。 代码交付状态:已完成代码与远程 CI 验证,现转为可评审 PR;git merge-tree 对当前 main 的合并预演无冲突。数据迁移是已固定版本的独立运行作业,仍需继续全量验收。代码合并不代表生产数据迁移已完成;迁移验收完成后才按用户要求暂停目标。
codex-bot added 1 commit 2026-11-06 18:11:09 +00:00
Add verified PostgreSQL migration and shared research queries
Metadata integrity checks / metadata (push) Successful in 46s
a3b677bdf2
codex-bot marked the pull request as ready for review 2026-11-06 18:56:07 +00:00
Zayden-Jung merged commit 3f040b968f into main 2026-11-06 18:56:52 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Zayden-Jung/paper-atlas#13