Files
Thesisly/docs/paper-api.md
T

44 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 论文只读 HTTP 接口
状态:用户要求等待既有论文库从 SQLite 迁移至 PostgreSQL。此前 SQLite 实现方案已撤回,未部署;Foundry Core 的 codex/research-api 分支在迁移完成后按实际 PostgreSQL schema实现。本任务包括后端实现与联调,不把接口开发留给用户。
## 地址与配置
实际契约:GET /projects/{project}/research/papers 和 GET /projects/{project}/research/papers/{id}。上线后前端配置:
```dotenv
PAPER_API_ORIGIN=https://api.foundry.entroia.com/projects/thesisly/research/
```
未配置时显式显示20条真实数据库样本;配置后只请求远程接口,错误不会退回样本。前端不携带数据库或服务账户凭据。
## 列表
GET {PAPER_API_ORIGIN}/papers?q=&searchIn=text&topic=&sort=recent&page=1&pageSize=8
- q:最多200个Unicode字符、20个词。searchIn=text时检索标题/摘要,searchIn=author时检索显示作者名。不会把用户输入作为任意SQL或FTS操作符。
- topic:精确arxiv:category值。
- sort:recent是稳定论文ID降序,即收录顺序,**不是发表日期排序**;title使用现有title_key索引。
- page:1–1000;pageSize:1–50,前端当前为8。
- 返回{items:Paper[],total,topics,page,pageSize},同一只读事务内计数及取页;无效、重复、未知参数返回400。
## 论文
Paper包含id、title、abstract(可空)、authors字符串数组、publishedAt(保留来源格式,可空)、topics、sources(label/url/externalId),以及publications(venue/year/track/status/evidenceUrl)。可选doi、journal、comments。
source_records按paper_id关联;作者兼容[family,given,suffix]数组与字符串。会议记录通过submissions→editions→venues,状态取最新决定观察;没有决定时保持unknown,不推断拒稿。不虚构代码库、数据集、引用量、热门或AI结论。详情不存在返回404。
## 读取边界
待 PostgreSQL 迁移任务完成后,核对实际数据库/schema、字段类型、全文索引及最小只读权限,在 Foundry Core 中实现查询。不部署 SQLite sidecar,不复制整库,不从浏览器持有数据库连接串。
最多两个并行查询、8秒查询预算;繁忙返回429,超时/存储异常明确报错。作者筛选可能全库扫描,需要在真实库上验证性能。语料库是共享公开数据;账户与未来私有收藏仍须按项目隔离。
## 联调前置
- 用户手动合并后端PR;后端沿用已确认ECS runner验证与部署。
- 保留FOUNDRY_PROJECTS旧条目,追加thesisly→http://localhost:17322/auth/callback。
- 用户已确认新增 FOUNDRY_PROJECTS;无需添加 FOUNDRY_RESEARCH_DATABASE。PostgreSQL 的后端接入配置待迁移完成后确定。
- 前端仓库为Zayden-Jung/Thesisly,不配置CI/CD;本地build按用户最新要求暂不执行。
- 真实Google/Slack、邮箱验证、刷新恢复与退出需要实际浏览器授权验收;302与fixture测试不代表登录成功。