API 路径命名对齐现有风格:/api/<模块>/<资源>/<动作>(参考 /api/annotate/{project_id}/suggest-classes)。
字段匹配用精确匹配,不用子串模糊匹配。
② 在 backend/api.py 注册(约 558 行起的路由注册区,仿照 science_discovery 的写法):
try:
from my_feature import router as my_feature_router
app.include_router(my_feature_router)
except Exception as _e:
print(f"[my_feature] 路由加载失败: {_e}")
用 try/except 包裹是本项目惯例:单个板块出错不拖垮整个后端。
③ 如需登录态/权限:依赖注入 auth 模块的 require_perm("xxx:yyy"),并在权限矩阵中登记新权限点(参考 auth.py 现有 perm 定义)。
前端:4 步
① 新建页面frontend/src/pages/MyFeature.tsx(React + TSX,用 antd 组件,参考现有页面如 Compat.tsx)。
面向多源异构国产算力的开源 AI 开发运维一体化平台
本文档面向参与平台优化的同学,帮助快速了解平台架构、本地开发部署方式,以及新增功能板块的标准流程。
一、平台总体架构
平台采用 「控制平面 + 可插拔算力节点」 架构:
二、线上环境
/opt/jrl(git 仓库)systemctl status jrl-backend(uvicorn :8001)平台数据集模型/三、本地开发环境搭建
1. 拉取代码
2. 后端(Python 3.12+)
3. 前端(Node 20+ / npm 10+)
4. 验证
浏览器打开
http://localhost:5173,用 admin 登录(本地库首次启动自动初始化默认账号)。四、目录结构速览
模块划分惯例:后端一个业务板块 = 一个
.py模块或一个子包;前端一个页面 =pages/下一个.tsx(大板块可用子目录,如pages/billing/)。五、如何加入一个新板块(标准流程)
以新增「我的板块」为例,完整走一遍:
后端:3 步
① 新建路由模块
backend/my_feature.py:/api/<模块>/<资源>/<动作>(参考/api/annotate/{project_id}/suggest-classes)。② 在
backend/api.py注册(约 558 行起的路由注册区,仿照 science_discovery 的写法):③ 如需登录态/权限:依赖注入
auth模块的require_perm("xxx:yyy"),并在权限矩阵中登记新权限点(参考auth.py现有 perm 定义)。前端:4 步
① 新建页面
frontend/src/pages/MyFeature.tsx(React + TSX,用 antd 组件,参考现有页面如Compat.tsx)。② 在
frontend/src/App.tsx注册懒加载(约 51 行起的 lazy 区):③ 在
App.tsx加路由(约 440 行起的 Route 区):④ 在
App.tsx的sections配置中挂入菜单(约 108 行起):选择要归属的大板块(任务大厅/数据/模型/算力市场/功能/系统/个人),在其options数组里加一项:perm可选:配置后按用户等级权限控制可见性;不写则默认可见。adminOnly: true的大板块(如「系统」)仅管理员可见。API 调用封装
前端请求统一走
frontend/src/api/client.ts的封装(带 token、错误处理),不要裸写 fetch(裸 fetch 静默失败曾导致 PK 台”功能丢失”事故)。涉及创建/支付/状态变更的 POST 必须带幂等键(参考withIdempotency用法)。自测清单
cd backend && python -m py_compile my_feature.py通过cd frontend && npm run build通过六、部署到线上 ECS
/opt/jrl后systemctl restart jrl-backend,然后curl验证接口。npm run build→ 打包dist/上传 → 覆盖 ECS 上 nginx 静态目录 → 强刷浏览器验证。七、协作与编码规范
feature/xxx),完成自测后提合并,不要直接推主分支。obs_storage.py),代码标识符用英文。.env或密钥文档,严禁写进代码或 README 提交。八、常见问题
Q: requirements.txt 安装报错找不到 whl? A: 该文件含昇腾镜像内本地 wheel 路径,本地开发请用
requirements-windows.txt。Q: 前端页面能开但接口 401? A: 后端重启后旧 token 失效,重新登录即可。
Q: 刷新子页面白屏? A: 确认
vite.config.ts的base为'/'(相对路径./会导致深层路由资源 404)。Q: 数据集广场/模型库列表为空? A: 平台按目录扫描:数据集须在
workspace/datasets/<id>/(含images/train、data.yaml),模型须在workspace/*.pt。Q: 跨节点调用的接口很慢(2~4s)? A: 正常现象是走 SSH 连接池;新写远端命令必须用
server_manager._acquire_ssh/exec_command,不要裸建新连接,高频轮询接口加 TTL 缓存。九、技术栈与版本