共享 PostgreSQL 论文只读 API [skip ci] #17

Merged
Zayden-Jung merged 5 commits from codex/research-api into main 2026-11-07 08:23:37 +00:00
Collaborator

目标与结果

在共享 Foundry Core 中提供 Thesisly 及其他已注册项目使用的公开论文只读 API,连接已验收的 PostgreSQL research schema。身份与私有收藏仍按项目隔离,不新增应用后端或SQLite sidecar。

实际改动

  • 注册GET /projects/{project}/research/papers及/{id},支持绑定参数全文/作者搜索、精确arXiv领域、稳定排序、分页;严格限制参数、两个并发请求与8秒预算,返回明确的400/404/429/503/504,不泄露数据库细节。
  • PostgreSQL查询在只读repeatable-read快照中完成精确计数、取页和批量来源/标签/DOI/投稿决定;先筛选ID再分页及加载长文本,局部禁用JIT,避免稀疏查询扫描大量正文。
  • 按已发布nul-soh-v1 schema注释还原标题/摘要/SQL文本再解析JSON;兼容作者字符串、三段姓名元组及真实arXiv四段元组中的附加机构字段,机构不拼入姓名。
  • 新增可选服务器连接配置及独立两连接池;默认不启用,配置错误阻止候选就绪;部署可读取受保护research.env。连接串不进入Git、前端或Actions Variables。
  • 单独提供操作员并发索引脚本,支持作者及领域访问路径,不由只读运行账号执行DDL;迁移脚本容器默认适配foundry-postgres。
  • 扩展现有隔离PostgreSQL fixture和测试,验证真实SQL、证据排序、只读权限、编码还原、作者机构处理和SQLSTATE超时分类。

实际验证

  • 用户确认的ECS上手动执行研究模块测试和Core构建通过;四项SQL集成用例在无网络/无宿主端口的临时PostgreSQL中通过,fixture已清理。
  • 已核对实际schema编码标记、字段与索引;专用reader仅获十张论文表SELECT及schema USAGE,并默认只读;受保护连接文件仅在服务器保存。
  • 作者和领域索引已并发建成;临时Core真实HTTP:详情约0.34秒,作者146条约0.34秒,cs.AR领域9457条约4.91秒,CartoonGAN三条约0.33秒,多词全文8653条约6.33秒。为顺序请求检查,不是负载测试。
  • 前端真实桌面/手机列表、简介、筛选和错误恢复检查通过。
  • 本次更新按用户要求用skip标记跳过CI;不把历史HEAD的CI结果当作当前HEAD验证。

限制与人工集成

  • 宽泛全文精确计数仍可能超过8秒预算,前端可保留条件并缩小范围;未改变匹配语义、使用估算总数或退回样本。
  • 此分支新代码尚未合入main或发布正式Core。临时服务只绑定ECS回环地址,通过SSH供本地前端联调;其身份配置为不可用的虚拟配置,不接触真实账户。
  • 正式身份项目配置另已复用原发布二进制重载,新增thesisly并保留原项目;这不代表本分支论文API已部署。
  • Google/Slack真实身份均已观察到,用户分别确认授权、刷新/新标签保持和退出正常;邮箱投递未实测。前端详见PR #1。
  • 已具备人工评审条件,等待用户手动合并;本阶段不启用CI,未来需要CI或部署时先处理skip标记。
## 目标与结果 在共享 Foundry Core 中提供 Thesisly 及其他已注册项目使用的公开论文只读 API,连接已验收的 PostgreSQL research schema。身份与私有收藏仍按项目隔离,不新增应用后端或SQLite sidecar。 ## 实际改动 - 注册GET /projects/{project}/research/papers及/{id},支持绑定参数全文/作者搜索、精确arXiv领域、稳定排序、分页;严格限制参数、两个并发请求与8秒预算,返回明确的400/404/429/503/504,不泄露数据库细节。 - PostgreSQL查询在只读repeatable-read快照中完成精确计数、取页和批量来源/标签/DOI/投稿决定;先筛选ID再分页及加载长文本,局部禁用JIT,避免稀疏查询扫描大量正文。 - 按已发布nul-soh-v1 schema注释还原标题/摘要/SQL文本再解析JSON;兼容作者字符串、三段姓名元组及真实arXiv四段元组中的附加机构字段,机构不拼入姓名。 - 新增可选服务器连接配置及独立两连接池;默认不启用,配置错误阻止候选就绪;部署可读取受保护research.env。连接串不进入Git、前端或Actions Variables。 - 单独提供操作员并发索引脚本,支持作者及领域访问路径,不由只读运行账号执行DDL;迁移脚本容器默认适配foundry-postgres。 - 扩展现有隔离PostgreSQL fixture和测试,验证真实SQL、证据排序、只读权限、编码还原、作者机构处理和SQLSTATE超时分类。 ## 实际验证 - 用户确认的ECS上手动执行研究模块测试和Core构建通过;四项SQL集成用例在无网络/无宿主端口的临时PostgreSQL中通过,fixture已清理。 - 已核对实际schema编码标记、字段与索引;专用reader仅获十张论文表SELECT及schema USAGE,并默认只读;受保护连接文件仅在服务器保存。 - 作者和领域索引已并发建成;临时Core真实HTTP:详情约0.34秒,作者146条约0.34秒,cs.AR领域9457条约4.91秒,CartoonGAN三条约0.33秒,多词全文8653条约6.33秒。为顺序请求检查,不是负载测试。 - 前端真实桌面/手机列表、简介、筛选和错误恢复检查通过。 - 本次更新按用户要求用skip标记跳过CI;不把历史HEAD的CI结果当作当前HEAD验证。 ## 限制与人工集成 - 宽泛全文精确计数仍可能超过8秒预算,前端可保留条件并缩小范围;未改变匹配语义、使用估算总数或退回样本。 - 此分支新代码尚未合入main或发布正式Core。临时服务只绑定ECS回环地址,通过SSH供本地前端联调;其身份配置为不可用的虚拟配置,不接触真实账户。 - 正式身份项目配置另已复用原发布二进制重载,新增thesisly并保留原项目;这不代表本分支论文API已部署。 - Google/Slack真实身份均已观察到,用户分别确认授权、刷新/新标签保持和退出正常;邮箱投递未实测。前端详见PR #1。 - 已具备人工评审条件,等待用户手动合并;本阶段不启用CI,未来需要CI或部署时先处理skip标记。
codex-bot added 1 commit 2026-11-06 17:58:50 +00:00
Add bounded public research HTTP contract and transport tests
Foundry Go checks / check (push) Successful in 2m54s
Foundry Go checks / check (pull_request) Successful in 2m55s
81cf7d9448
codex-bot added 1 commit 2026-11-06 18:38:33 +00:00
Prepare read-only PostgreSQL paper queries and optional Core wiring
Foundry Go checks / check (push) Successful in 3m57s
Foundry Go checks / check (pull_request) Successful in 5m2s
028e453d92
codex-bot added 1 commit 2026-11-06 18:45:00 +00:00
Verify research SQL and read-only permissions in isolated PostgreSQL CI
Foundry Go checks / check (push) Successful in 3m43s
Foundry Go checks / check (pull_request) Successful in 4m1s
913bf4292b
codex-bot changed title from WIP: 共享论文只读 API(等待 PostgreSQL 迁移) to WIP: 共享 PostgreSQL 论文只读 API [skip ci] 2026-11-07 07:53:01 +00:00
codex-bot added 1 commit 2026-11-07 07:53:51 +00:00
codex-bot added 1 commit 2026-11-07 08:14:08 +00:00
codex-bot marked the pull request as ready for review 2026-11-07 08:14:11 +00:00
Zayden-Jung merged commit 142c7b2d86 into main 2026-11-07 08:23:37 +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/foundry-core#17