mega icon indicating copy to clipboard operation
mega copied to clipboard

[r2cn] 重构Docs 相关的API,并迁移到Mega系统中

Open benjamin-747 opened this issue 2 months ago • 7 comments

[任务] 重构Docs 相关的API,并迁移到Mega系统中

[任务分值] 40 分

[背景描述]

当前系统中的项目文档功能(Project Docs) 仍依赖于一套由 Node.js 服务 提供中间层的旧版 API。 随着 Mega 系统 的功能不断完善,文档模块需要与代码仓库进行集成。 为了解决这些问题,需要将原有 Node.js 实现的文档接口迁移至 Mega 系统后端(Rust)中,实现完全替换。

[需求描述]

目前与Docs 相关的API 有以下这些:

  1. 获取
  • GET /organizations/{org_slug}/notes 获取笔记

  • GET /organizations/{org_slug}/notes/{noteId} 按笔记ID获取笔记

  • GET /organizations/{org_slug}/notes/{noteId}/comments 获取笔记评论

  • GET /organizations/{org_slug}/notes/{noteId}/attachments/{attachmentId}/comments 获取笔记附件评论

  • GET /organizations/{org_slug}/notes/{noteId}/views 获取笔记视图

  • GET /organizations/{org_slug}/notes/{noteId}/timeline-events 获取笔记时间线

  • GET /organizations/{org_slug}/notes/{noteId}/permissions 获取笔记权限

  1. 修改
  • PUT /organizations/{org_slug}/notes/{noteId} 更新笔记

  • PUT /organizations/{org_slug}/notes/{noteId}/visibility 更新笔记可见性

  • PUT /organizations/{org_slug}/notes/{noteId}/project-permissions 更新笔记项目权限

  1. 创建
  • POST /organizations/{org_slug}/notes 创建笔记

  • POST /organizations/{org_slug}/notes/{noteId}/comments 创建笔记评论

  • POST /organizations/{org_slug}/notes/{noteId}/views 创建笔记视图

  • POST /organizations/{org_slug}/notes/{noteId}/pin 置顶笔记

  • POST /organizations/{org_slug}/notes/{noteId}/follow-up 创建笔记跟进

  • POST /organizations/{org_slug}/notes/favorite 收藏笔记

  • POST /organizations/{org_slug}/notes/{noteId}/attachments 创建笔记附件

  1. 删除
  • DELETE /organizations/{org_slug}/notes/{noteId} 删除笔记

  • DELETE /organizations/{org_slug}/notes/{noteId}/permissions/{permissionId} 删除笔记权限

  • DELETE /organizations/{org_slug}/notes/{noteId}/project-permissions 删除笔记项目权限

  • DELETE /organizations/{org_slug}/notes/{noteId}/favorite 取消笔记收藏

  1. API 替换与兼容
  • 在 Mega 后端实现一套新的文档 API,涵盖原有 Node.js 版本的核心功能,包括:
  • 获取文档目录;
  • 获取文档详情;
  • 创建 / 更新 / 删除文档;
  • 搜索文档。
  • 保持与前端的请求结构兼容(或提供适配层),确保迁移后前端逻辑无需大幅修改。
  • Node.js 文档服务迁移完成后下线,不再依赖旧的 Node 服务。
  1. 数据来源与存储方式
  • 文档内容存储在 Mega 管理的项目仓库中(例如 /docs 目录下的 Markdown 文件)。
  • 后端通过 Git 操作读取、更新、提交文档文件,实现版本化管理。
  • 支持根据分支或 Tag 查看对应版本的文档。
  1. 前端交互与兼容性
  • 前端调用的接口路径和返回格式应尽量保持一致。
  1. 迁移计划
  • 第一步:在 Mega 中开发并验证新文档 API 功能;
  • 第二步:前端切换到新 API;
  • 第三步:下线旧 Node.js 文档服务。

[代码标准]

  1. 所有 PR 提交必须签署 Signed-off-by 和 使用 GPG 签名,即提交代码时(使用 git commit 命令时)至少使用 -s -S 两个参数,参考 Contributing Guide
  2. 所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
  3. 代码注释均需要使用英文;

[PR 提交地址] 提交到 mega 仓库的 main 分支 `` 目录;

[开发指导]

  1. 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;

[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。

  1. Quanyi Ma [email protected]
  2. Tianxing Ye [email protected]

[备注]

  1. 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务r2cn 开源实习计划 - 学生注册与审核

benjamin-747 avatar Oct 14 '25 07:10 benjamin-747

任务创建成功。

r2cn-bot[bot] avatar Oct 14 '25 07:10 r2cn-bot[bot]

/request-assign

zhoujiaqi30 avatar Oct 14 '25 07:10 zhoujiaqi30

认领成功:等待导师审核,请及时联系导师进行审核。

r2cn-bot[bot] avatar Oct 14 '25 07:10 r2cn-bot[bot]

/intern-approve

benjamin-747 avatar Oct 16 '25 03:10 benjamin-747

认领审核成功:已将该任务分配给学生。

r2cn-bot[bot] avatar Oct 16 '25 03:10 r2cn-bot[bot]

/request-release

zhoujiaqi30 avatar Oct 22 '25 02:10 zhoujiaqi30

请求释放成功:当前任务重新开放。

r2cn-bot[bot] avatar Oct 22 '25 02:10 r2cn-bot[bot]

/request-assign

VhahahaV avatar Nov 19 '25 15:11 VhahahaV

认领失败:请先在 https://summer-ospp.ac.cn/r2cnLogin 进行学生注册并通过审核后才能认领任务。

r2cn-bot[bot] avatar Nov 19 '25 15:11 r2cn-bot[bot]

/request-release

ztygod avatar Nov 21 '25 07:11 ztygod

操作失败:当前任务的状态不允许进行该操作。

r2cn-bot[bot] avatar Nov 21 '25 07:11 r2cn-bot[bot]

/request-assign

ztygod avatar Nov 22 '25 00:11 ztygod

认领成功:等待导师审核,请及时联系导师进行审核。

r2cn-bot[bot] avatar Nov 22 '25 00:11 r2cn-bot[bot]

/intern-approve

benjamin-747 avatar Nov 24 '25 03:11 benjamin-747

认领审核成功:已将该任务分配给学生。

r2cn-bot[bot] avatar Nov 24 '25 03:11 r2cn-bot[bot]

任务更新成功,当前分值为: 60

r2cn-bot[bot] avatar Nov 24 '25 03:11 r2cn-bot[bot]

/request-release

ztygod avatar Dec 03 '25 01:12 ztygod

请求释放成功:当前任务重新开放。

r2cn-bot[bot] avatar Dec 03 '25 01:12 r2cn-bot[bot]

任务更新成功,当前分值为: 80

r2cn-bot[bot] avatar Dec 03 '25 02:12 r2cn-bot[bot]