test / README.md
Rongjin03's picture
Upload 6 files
1d20572 verified
|
Raw
History Blame Contribute Delete
4.01 kB
---
title: Team Paper List
emoji: 📚
colorFrom: blue
colorTo: indigo
sdk: docker
app_port: 7860
hf_oauth: true
disable_embedding: true
---
# Team Paper List
一个供研究团队共同维护论文清单的私有 Hugging Face Docker Space。左侧可批量导入 arXiv ID;右侧是可筛选、排序、协同编辑的论文表格。每篇导入成功的论文都会把 Papers.cool 的 Kimi 摘要写入私有 Dataset,点击论文标题即可在弹窗中阅读 Markdown 摘要。
## 架构
| 组件 | 作用 |
| --- | --- |
| 私有 Docker Space | React 界面、FastAPI API、Hugging Face OAuth 登录 |
| 私有 Dataset | `index.json``taxonomy.json``kimi/<arxiv-id>.md` 摘要文件 |
| Papers.cool | 通过 `https://papers.cool/arxiv/kimi?paper=<arxiv-id>` 提供 Kimi 摘要 |
Space 的浏览器端从不接触 Dataset 写 token。服务端使用 `PAPERLIST_DATA_TOKEN` 将索引、标签与摘要提交到 Dataset,并以父 revision 检测多人并发写入;冲突会自动读取最新 revision 后重试。
## 首次部署到 Hugging Face
1. 确认已登录目标 Hugging Face 账号;部署脚本也可将用户名替换为 Organization slug。
2. 使用已登录的 Hugging Face CLI/API 创建两个私有仓库:
```bash
python scripts/provision_hf.py --namespace YOUR_USERNAME
```
默认会创建 `YOUR_USERNAME/paper-list`(Docker Space)和 `YOUR_USERNAME/paper-list-data`(Dataset)。脚本不会上传本地文件。
3. 将这个 Git 仓库推送到新建的 Space:
```bash
git remote add hf https://huggingface.co/spaces/YOUR_USERNAME/paper-list
git push hf feature/paper-list-space:main
```
4. 在 Space 的 **Settings → Variables and secrets** 中设置:
| 名称 | 类型 | 值 |
| --- | --- | --- |
| `PAPERLIST_DATASET_REPO` | Variable | `YOUR_USERNAME/paper-list-data` |
| `PAPERLIST_DATA_TOKEN` | Secret | 可写入该私有 Dataset 的最小权限 token |
不要把 `PAPERLIST_DATA_TOKEN` 放进 Git、README 或浏览器端变量。部署后,`hf_oauth: true` 会由 Hugging Face 自动注入 OAuth 相关环境变量;应用使用 Hub 提供的 FastAPI OAuth 集成处理登录、回调与会话。
5. 等待 Docker build 完成。若要让团队成员使用私有 Space,请在 Space 的 **Settings → Repository** 中把他们加入 collaborators;Dataset 可继续只由 owner 持有,因为所有数据读写均由 Space 服务端完成。首次导入会在 Dataset 中自动创建 `index.json``taxonomy.json`
## 本地开发
后端默认采用内存存储,便于无 token 开发。设置 `PAPERLIST_DEV_USER` 后可模拟一个已登录成员:
```bash
python -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'
PAPERLIST_DEV_USER=alice .venv/bin/uvicorn app.main:app --app-dir backend --reload --port 7860
```
前端开发服务器会把 `/api``/oauth` 代理到端口 7860:
```bash
cd frontend
npm ci
npm run dev
```
运行验证:
```bash
.venv/bin/python -m pytest
cd frontend && npm test && npm run build
```
## 使用说明
- **批量导入**:左侧输入框中每行放一个 arXiv ID,支持 `arXiv:...`、arXiv URL 和带版本号的 ID。已有 Ready 摘要的论文会跳过;Missing 状态再次导入会重试。
- **摘要**:Ready 的论文标题可点击,弹窗加载 Dataset 中保存的 Kimi Markdown。Missing 论文仍保留在表内,并显示原因。
- **筛选与排序**:可按上传者、载体分类、时序分类、功能分类筛选,并按上传/修改时间正反序排序。
- **协同标注**:任意登录成员都可新增、重命名、归档/恢复标签,也可多选分类和编辑备注。归档标签保留在历史论文上,但不能重新选择。
- **成员颜色**:首次上传论文的成员会分配一种稳定的浅色,整行以该颜色显示。
## 数据布局
```text
paper-list-data/
├── index.json
├── taxonomy.json
└── kimi/
└── 2504.12369.md
```