在 PostgreSQL 预检公开决定并复核导入事务 #16

Merged
Zayden-Jung merged 1 commits from codex/postgres-preflight into main 2026-11-07 08:10:38 +00:00
Collaborator

主库切换后,公开负面决定的预检仍只能读取冻结 SQLite;预检和实际导入之间发生状态变化时,也可能重新写入冲突标签。本次把预检直接接到 PostgreSQL,并在事务内复核当前投稿状态及文件内容。

  • db/backend.py:共用只读连接选择,SQLite以mode=ro打开且拒绝不存在文件;PostgreSQL使用只读一致性快照。
  • audits/public_openreview.py:支持--pg-service/--pg-schema,报告实际数据库与schema;保留固定revision、文件hash、manifest、出处和同届次/轨道检查,其他会议录用不误判为冲突。
  • db/submissions.py、db/store.py:统一最新决定排序,NULL决定日期回退观察时间;在附着到最终canonical submission之后检查公开负面决定的冲突,防止过期预检覆盖当前状态。
  • ingestion/records.py:对两类公开负面来源启用事务内状态复核;按原始字节流计算文件SHA-256、提交前检查manifest哈希,成功批次记录实际文件哈希,冲突或变更回滚整份文件。
  • tests/test_postgres_ingestion.py:真实PostgreSQL验证同会冲突/跨会录用、NULL日期排序、过期预检下的回滚、只读连接,以及输入哈希不符时回滚;缺失SQLite审计不创建空库。
  • docs/usage.md、docs/operations.md:当前主库预检命令、只读快照与写事务边界、状态与哈希复核说明。
  • .gitea/workflows/check.yml:源码目录外验证安装后的公开拒稿审计入口。

验证:批准的ces-control:host上完整203项回归通过,真实PG集成用例实际运行;git diff --check通过。未在本机测试或构建。本提交CI968/job1065已成功:203项回归通过,18项真实PG用例执行成功,wheel构建、安装与源码目录外的审计入口检查通过;runner为aliyun-ces-control。

实际只读预检:在当前foundry_data.research上核验papercopilot_openreview 1,411条(13文件)及openreview_public_archive 214条(1文件),共1,625条;同届次既有投稿匹配0、决定冲突0,均ready_for_serial_import。固定文件与sidecar哈希、revision和出处验证通过;两份新报告分别存于源目录的preimport-postgresql-audit.json。生产批次现已成功导入,并于2026-11-07T08:20:56Z独立逐条验收:1,625条来源记录(1,624拒稿、1撤稿)、1,625次投稿,关联1,624个当前paper ID;原文/作者/metadata、投稿身份、决定来源、14份文件哈希及运行checkpoint一致,既有跨会录用历史保留,GIN和实际全文查询通过、foundry-core就绪200、SQLite备份只读。论文表当前3,527,724行,不能将来源条数当作新增独立论文数;全会议拒稿覆盖和最终全库去重仍待完成。验收报告:服务器/data/paper-index/collected/public-negative-postgresql-import-postcheck-v1.json。

PR15已由用户手动合并。本PR从最新main dc41dfa创建,head codex/postgres-preflight(6fa59c4),用户已手动合并,本PR主线合并提交067a67f。完整goal保持active12/17,继续其他待导入资料和最终审计。

主库切换后,公开负面决定的预检仍只能读取冻结 SQLite;预检和实际导入之间发生状态变化时,也可能重新写入冲突标签。本次把预检直接接到 PostgreSQL,并在事务内复核当前投稿状态及文件内容。 - db/backend.py:共用只读连接选择,SQLite以mode=ro打开且拒绝不存在文件;PostgreSQL使用只读一致性快照。 - audits/public_openreview.py:支持--pg-service/--pg-schema,报告实际数据库与schema;保留固定revision、文件hash、manifest、出处和同届次/轨道检查,其他会议录用不误判为冲突。 - db/submissions.py、db/store.py:统一最新决定排序,NULL决定日期回退观察时间;在附着到最终canonical submission之后检查公开负面决定的冲突,防止过期预检覆盖当前状态。 - ingestion/records.py:对两类公开负面来源启用事务内状态复核;按原始字节流计算文件SHA-256、提交前检查manifest哈希,成功批次记录实际文件哈希,冲突或变更回滚整份文件。 - tests/test_postgres_ingestion.py:真实PostgreSQL验证同会冲突/跨会录用、NULL日期排序、过期预检下的回滚、只读连接,以及输入哈希不符时回滚;缺失SQLite审计不创建空库。 - docs/usage.md、docs/operations.md:当前主库预检命令、只读快照与写事务边界、状态与哈希复核说明。 - .gitea/workflows/check.yml:源码目录外验证安装后的公开拒稿审计入口。 验证:批准的ces-control:host上完整203项回归通过,真实PG集成用例实际运行;git diff --check通过。未在本机测试或构建。本提交CI968/job1065已成功:203项回归通过,18项真实PG用例执行成功,wheel构建、安装与源码目录外的审计入口检查通过;runner为aliyun-ces-control。 实际只读预检:在当前foundry_data.research上核验papercopilot_openreview 1,411条(13文件)及openreview_public_archive 214条(1文件),共1,625条;同届次既有投稿匹配0、决定冲突0,均ready_for_serial_import。固定文件与sidecar哈希、revision和出处验证通过;两份新报告分别存于源目录的preimport-postgresql-audit.json。生产批次现已成功导入,并于2026-11-07T08:20:56Z独立逐条验收:1,625条来源记录(1,624拒稿、1撤稿)、1,625次投稿,关联1,624个当前paper ID;原文/作者/metadata、投稿身份、决定来源、14份文件哈希及运行checkpoint一致,既有跨会录用历史保留,GIN和实际全文查询通过、foundry-core就绪200、SQLite备份只读。论文表当前3,527,724行,不能将来源条数当作新增独立论文数;全会议拒稿覆盖和最终全库去重仍待完成。验收报告:服务器/data/paper-index/collected/public-negative-postgresql-import-postcheck-v1.json。 PR15已由用户手动合并。本PR从最新main dc41dfa创建,head codex/postgres-preflight(6fa59c4),用户已手动合并,本PR主线合并提交067a67f。完整goal保持active12/17,继续其他待导入资料和最终审计。
codex-bot added 1 commit 2026-11-07 08:02:05 +00:00
Audit public decisions against PostgreSQL and recheck imports
Metadata integrity checks / metadata (push) Successful in 1m9s
6fa59c4d26
Zayden-Jung merged commit 067a67f3f7 into main 2026-11-07 08:10:38 +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#16