ft_wyt #6

Merged
caoxiaozhu merged 10 commits from ft_wyt into main 2026-07-21 14:23:18 +08:00
21 changed files with 418 additions and 415 deletions
Showing only changes of commit bccd3bf448 - Show all commits

View File

@@ -58,15 +58,15 @@ pip install -r requirements.txt
uvicorn app.main:app --reload --port 17861
```
默认 API 前缀为 `/api`,例如:
默认接口前缀为 `/modelTF`,例如:
```text
GET /api/health
POST /api/login
GET /api/model-manage
GET /api/dataset-manage
GET /api/fine-tune
GET /api/compute/nodes
GET /modelTF/health
POST /modelTF/login
GET /modelTF/model-manage
GET /modelTF/dataset-manage
GET /modelTF/fine-tune
GET /modelTF/compute/nodes
```
本地运行时默认数据库路径:
@@ -83,7 +83,7 @@ npm install
npm run dev
```
前端开发服务默认运行在 `http://localhost:16801`,并通过 Vite proxy 将 `/api` 转发到 `http://localhost:17861`
前端开发服务默认运行在 `http://localhost:16801`,并通过 Vite proxy 将 `/modelTF` 转发到 `http://localhost:17861`
## 算力服务启动

View File

@@ -8,7 +8,7 @@
backend/
app/
main.py # FastAPI 应用入口
api/v1/ # 对前端暴露的 API 路由
api/v1/ # 对前端暴露的 接口路由
core/ # 配置、日志、中间件、权限等基础能力
db/ # 数据库连接、迁移集成、事务工具
modules/ # 业务模块
@@ -48,7 +48,7 @@ uvicorn app.main:app --reload
健康检查:
```text
GET /api/v1/health
GET /modelTF/health
```
## 日志

View File

@@ -14,7 +14,7 @@ def _int_env(name: str, default: int) -> int:
class Settings:
app_name: str = os.getenv("APP_NAME", "YG Fine-Tune Platform API")
app_env: str = os.getenv("APP_ENV", "local")
api_prefix: str = os.getenv("API_PREFIX", "/api")
route_prefix: str = os.getenv("MODELTF_ROUTE_PREFIX", "/modelTF")
app_mode: str = os.getenv("APP_MODE", "local")
local_db_path: str = os.getenv("LOCAL_DB_PATH", "./runtime/platform.db")
compute_mode: str = os.getenv("COMPUTE_MODE", "simulator")

View File

@@ -11,7 +11,7 @@ def create_app() -> FastAPI:
app = FastAPI(title=settings.app_name)
setup_request_logging(app)
app.include_router(api_router, prefix=settings.api_prefix)
app.include_router(api_router, prefix=settings.route_prefix)
return app

View File

@@ -14,6 +14,7 @@ from compute.engines.llama_factory.adapter import build_command, parse_log_line
def create_app() -> FastAPI:
app = FastAPI(title="YG Fine-Tune Compute API")
jobs: dict[str, dict[str, Any]] = {}
route_prefix = os.getenv("MODELTF_ROUTE_PREFIX", "/modelTF").rstrip("/") or "/modelTF"
def now() -> float:
return time.time()
@@ -101,14 +102,14 @@ def create_app() -> FastAPI:
)
return gpus
@app.get("/health")
@app.get(f"{route_prefix}/health")
async def health_check() -> dict[str, str]:
return {
"status": "ok",
"compute_host_id": os.getenv("COMPUTE_HOST_ID", "unknown"),
}
@app.get("/api/v1/compute/health")
@app.get(f"{route_prefix}/v1/compute/health")
async def compute_health_check() -> dict[str, str | bool]:
data_root = Path(os.getenv("YG_FT_DATA_ROOT", "/data/yg-ft"))
llama_factory_home = Path(os.getenv("LLAMA_FACTORY_HOME", "/app/LLaMA-Factory"))
@@ -122,15 +123,15 @@ def create_app() -> FastAPI:
"llama_factory_home_exists": llama_factory_home.exists(),
}
@app.get("/api/v1/compute/jobs")
@app.get(f"{route_prefix}/v1/compute/jobs")
async def list_jobs_alias() -> dict[str, list[dict[str, Any]]]:
return {"items": [job_status(job) for job in jobs.values()]}
@app.get("/compute/resources/gpus")
@app.get(f"{route_prefix}/compute/resources/gpus")
async def list_gpus() -> dict[str, Any]:
return {"items": gpu_resources(), "compute_host_id": host_id()}
@app.post("/compute/jobs")
@app.post(f"{route_prefix}/compute/jobs")
async def create_job(payload: dict[str, Any]) -> dict[str, Any]:
try:
command = build_command(payload, os.getenv("LLAMA_FACTORY_HOME", "/app/LLaMA-Factory"))
@@ -153,18 +154,18 @@ def create_app() -> FastAPI:
jobs[job_id] = job
return job_status(job)
@app.get("/compute/jobs")
@app.get(f"{route_prefix}/compute/jobs")
async def list_jobs() -> dict[str, Any]:
return {"items": [job_status(job) for job in jobs.values()]}
@app.get("/compute/jobs/{job_id}")
@app.get(f"{route_prefix}/compute/jobs/{{job_id}}")
async def get_job(job_id: str) -> dict[str, Any]:
job = jobs.get(job_id)
if not job:
raise HTTPException(status_code=404, detail="job not found")
return job_status(job)
@app.post("/compute/jobs/{job_id}/stop")
@app.post(f"{route_prefix}/compute/jobs/{{job_id}}/stop")
async def stop_job(job_id: str) -> dict[str, Any]:
job = jobs.get(job_id)
if not job:
@@ -173,7 +174,7 @@ def create_app() -> FastAPI:
job["progress"] = min(job.get("progress", 0), 99)
return job
@app.get("/compute/jobs/{job_id}/logs")
@app.get(f"{route_prefix}/compute/jobs/{{job_id}}/logs")
async def job_logs(job_id: str) -> dict[str, Any]:
job = jobs.get(job_id)
if not job:
@@ -182,14 +183,14 @@ def create_app() -> FastAPI:
metrics = [parse_log_line(line) for line in job["logs"].splitlines()]
return {"job_id": job_id, "content": job["logs"], "metrics": [m for m in metrics if m]}
@app.post("/compute/files/upload")
@app.post(f"{route_prefix}/compute/files/upload")
async def upload_file(payload: dict[str, Any]) -> dict[str, Any]:
file_id = str(payload.get("id") or f"file_{int(now() * 1000)}")
return {"id": file_id, "status": "available", "local_path": f"/data/yg-ft/uploads/{file_id}"}
@app.get("/compute/files/{file_id}/download")
@app.get(f"{route_prefix}/compute/files/{{file_id}}/download")
async def download_file(file_id: str) -> dict[str, Any]:
return {"id": file_id, "status": "ready", "download_url": f"/compute/files/{file_id}/download"}
return {"id": file_id, "status": "ready", "download_url": f"{route_prefix}/compute/files/{file_id}/download"}
return app

View File

@@ -7,7 +7,7 @@
| 镜像 | 用途 |
| --- | --- |
| `python:3.12-slim` | 应用后端基础镜像,后端运行环境要求 Python 3.12 及以上 |
| `nginx:1.27-alpine` | 前端静态资源与 `/api` 反向代理运行镜像 |
| `nginx:1.27-alpine` | 前端静态资源与 `/modelTF` 反向代理运行镜像 |
| `hiyouga/llamafactory:latest` | 算力服务基础镜像,基于 LLaMA-Factory 官方镜像扩展 Compute API |
| `postgres:16-alpine` | 开发阶段内置 PostgreSQL |
| `redis:7-alpine` | 开发阶段内置 Redis |
@@ -152,8 +152,8 @@ docker compose up -d
健康检查:
```text
GET http://<compute-server-ip>:19100/health
GET http://<compute-server-ip>:19100/api/v1/compute/health
GET http://<compute-server-ip>:19100/modelTF/health
GET http://<compute-server-ip>:19100/modelTF/v1/compute/health
```
算力侧代码和数据外挂:

View File

@@ -1,6 +1,6 @@
APP_ENV=prod
APP_NAME=YG Fine-Tune Platform API
API_PREFIX=/api
MODELTF_ROUTE_PREFIX=/modelTF
FRONTEND_IMAGE=yg-ft-frontend-runtime:latest
BACKEND_API_IMAGE=yg-ft-backend-api:latest
@@ -30,7 +30,7 @@ LOG_ERROR_FILE_PREFIX=error
LOG_MAX_BYTES=20971520
LOG_RETENTION_DAYS=10
API_PROXY_PASS=http://backend-api:8000
BACKEND_PROXY_PASS=http://backend-api:8000
# Split deployment: set these to the compute server address, for example http://10.10.20.31:19100.
COMPUTE_API_BASE_URL=http://compute-api:9100

View File

@@ -8,7 +8,7 @@ services:
ports:
- "${FRONTEND_PORT:-16801}:80"
environment:
API_PROXY_PASS: ${API_PROXY_PASS:-http://backend-api:8000}
BACKEND_PROXY_PASS: ${BACKEND_PROXY_PASS:-http://backend-api:8000}
volumes:
- ../../frontend/dist:/usr/share/nginx/html:ro
- ../nginx.conf.template:/etc/nginx/templates/default.conf.template:ro
@@ -31,7 +31,7 @@ services:
environment:
APP_ENV: ${APP_ENV:-prod}
APP_NAME: ${APP_NAME:-YG Fine-Tune Platform API}
API_PREFIX: ${API_PREFIX:-/api}
MODELTF_ROUTE_PREFIX: ${MODELTF_ROUTE_PREFIX:-/modelTF}
DATABASE_URL: ${DATABASE_URL:-postgresql+asyncpg://yg_ft:change_me@postgres:5432/yg_ft}
REDIS_URL: ${REDIS_URL:-redis://redis:6379/0}
USE_BUILTIN_POSTGRES: ${USE_BUILTIN_POSTGRES:-true}
@@ -56,7 +56,7 @@ services:
networks:
- yg-ft-app
healthcheck:
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/api/v1/health', timeout=3).read()\""]
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/modelTF/health', timeout=3).read()\""]
interval: 30s
timeout: 5s
retries: 3

View File

@@ -1,5 +1,6 @@
COMPUTE_ENV=prod
COMPUTE_HOST_ID=gpu-node-01
MODELTF_ROUTE_PREFIX=/modelTF
# Five-digit host ports exposed outside the compute server.
COMPUTE_API_PORT=19100
FILE_GATEWAY_PORT=19101

View File

@@ -8,6 +8,7 @@ services:
environment:
COMPUTE_ENV: ${COMPUTE_ENV:-prod}
COMPUTE_HOST_ID: ${COMPUTE_HOST_ID:-gpu-node-01}
MODELTF_ROUTE_PREFIX: ${MODELTF_ROUTE_PREFIX:-/modelTF}
COMPUTE_SERVICE_TOKEN: ${COMPUTE_SERVICE_TOKEN:-change_me}
ENABLE_APP_CALLBACK: ${ENABLE_APP_CALLBACK:-false}
LLAMA_FACTORY_HOME: ${LLAMA_FACTORY_HOME:-/app/LLaMA-Factory}
@@ -25,7 +26,7 @@ services:
networks:
- yg-ft-compute
healthcheck:
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:9100/health', timeout=3).read()\""]
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:9100/modelTF/health', timeout=3).read()\""]
interval: 30s
timeout: 5s
retries: 3

View File

@@ -11,8 +11,8 @@ server {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass ${API_PROXY_PASS};
location /modelTF {
proxy_pass ${BACKEND_PROXY_PASS};
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;

View File

@@ -1,6 +1,6 @@
# 模型微调平台后端接口设计
> 后端建议使用 FastAPI统一挂载 `/api` 前缀。本文根据当前 Vue 前端路由、API 模块、mock 数据和页面交互反推接口,并补充完整微调平台必须具备的用户中心、权限控制、审计、异步任务、文件版本与监控能力。
> 后端建议使用 FastAPI统一挂载 `/modelTF` 前缀。本文根据当前 Vue 前端路由、API 模块、mock 数据和页面交互反推接口,并补充完整微调平台必须具备的用户中心、权限控制、审计、异步任务、文件版本与监控能力。
## 1. 通用约定
@@ -58,7 +58,7 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
### 2.1 登录
`POST /api/login`
`POST /modelTF/login`
请求:
@@ -92,7 +92,7 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
### 2.2 当前用户
`GET /api/me`
`GET /modelTF/me`
用于刷新页面后恢复用户信息和权限,避免完全依赖 localStorage。
@@ -100,11 +100,11 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 | 权限 |
| --- | --- | --- | --- |
| GET | `/api/users` | 用户列表 | `user-settings` |
| POST | `/api/users` | 创建用户 | `user-settings` |
| PUT | `/api/users/{id}` | 更新角色、状态、页面权限 | `user-settings` |
| DELETE | `/api/users/{id}` | 删除用户 | `user-settings` |
| PUT | `/api/users/{id}/password` | 重置密码 | `user-settings` |
| GET | `/modelTF/users` | 用户列表 | `user-settings` |
| POST | `/modelTF/users` | 创建用户 | `user-settings` |
| PUT | `/modelTF/users/{id}` | 更新角色、状态、页面权限 | `user-settings` |
| DELETE | `/modelTF/users/{id}` | 删除用户 | `user-settings` |
| PUT | `/modelTF/users/{id}/password` | 重置密码 | `user-settings` |
创建用户请求:
@@ -133,7 +133,7 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
### 3.1 首页看板
`GET /api/dashboard/overview?period=7d`
`GET /modelTF/dashboard/overview?period=7d`
返回:
@@ -162,7 +162,7 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
### 3.2 健康指标
`GET /api/health`
`GET /modelTF/health`
响应字段兼容前端 `HealthMetrics`
@@ -176,7 +176,7 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
### 3.3 平台性能
`GET /api/system-info`
`GET /modelTF/system-info`
返回 CPU、内存、磁盘、GPU、网络、系统运行时间。GPU 进程字段建议包含 `pid``name``memory_used_gb``task_name``user`
@@ -184,11 +184,11 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/log-files?date=2026-07-16` | 系统日志文件列表 |
| GET | `/api/log-content?file=system.log` | 系统日志内容 |
| GET | `/api/training-log-files` | 训练日志文件列表 |
| GET | `/api/training-log-content?file=xxx.log` | 训练日志内容 |
| POST | `/api/web-log` | 前端错误/行为日志 |
| GET | `/modelTF/log-files?date=2026-07-16` | 系统日志文件列表 |
| GET | `/modelTF/log-content?file=system.log` | 系统日志内容 |
| GET | `/modelTF/training-log-files` | 训练日志文件列表 |
| GET | `/modelTF/training-log-content?file=xxx.log` | 训练日志内容 |
| POST | `/modelTF/web-log` | 前端错误/行为日志 |
日志内容应支持 `tail``offset``limit` 参数,避免一次返回超大文件。
@@ -198,14 +198,14 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/model-manage` | 模型列表 |
| GET | `/api/model-manage/{id}` | 模型详情 |
| GET | `/api/model-manage/name/{name}` | 按名称查询 |
| POST | `/api/model-manage` | 创建模型 |
| PUT | `/api/model-manage/{id}` | 编辑模型 |
| DELETE | `/api/model-manage/{id}` | 删除模型 |
| PUT | `/api/model-manage/{id}/purpose` | 修改用途 |
| GET | `/api/model-manage/local-models` | 扫描本地模型目录 |
| GET | `/modelTF/model-manage` | 模型列表 |
| GET | `/modelTF/model-manage/{id}` | 模型详情 |
| GET | `/modelTF/model-manage/name/{name}` | 按名称查询 |
| POST | `/modelTF/model-manage` | 创建模型 |
| PUT | `/modelTF/model-manage/{id}` | 编辑模型 |
| DELETE | `/modelTF/model-manage/{id}` | 删除模型 |
| PUT | `/modelTF/model-manage/{id}/purpose` | 修改用途 |
| GET | `/modelTF/model-manage/local-models` | 扫描本地模型目录 |
创建/编辑请求:
@@ -234,10 +234,10 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/model-manage/trained-models` | 已训练模型列表 |
| DELETE | `/api/model-manage/trained-models/{id}?type=merged\|lora` | 删除训练产物 |
| POST | `/api/model-manage/merge` | 合并 LoRA 权重 |
| GET | `/api/model-manage/trained-models/{model_name}/export` | 导出模型文件 |
| GET | `/modelTF/model-manage/trained-models` | 已训练模型列表 |
| DELETE | `/modelTF/model-manage/trained-models/{id}?type=merged\|lora` | 删除训练产物 |
| POST | `/modelTF/model-manage/merge` | 合并 LoRA 权重 |
| GET | `/modelTF/model-manage/trained-models/{model_name}/export` | 导出模型文件 |
合并请求:
@@ -264,14 +264,14 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/dataset-manage` | 数据集列表 |
| GET | `/api/dataset-manage/{id}` | 数据集详情 |
| POST | `/api/dataset-manage` | 创建数据集 |
| PUT | `/api/dataset-manage/{id}` | 更新数据集 |
| DELETE | `/api/dataset-manage/{id}` | 删除数据集 |
| POST | `/api/dataset-manage/upload/{dataset_id}` | 上传文件,字段名 `files` |
| GET | `/api/dataset-manage/download/{dataset_id}` | 打包下载数据集 |
| GET | `/api/dataset-manage/download/{dataset_id}/{file_id}` | 下载单文件 |
| GET | `/modelTF/dataset-manage` | 数据集列表 |
| GET | `/modelTF/dataset-manage/{id}` | 数据集详情 |
| POST | `/modelTF/dataset-manage` | 创建数据集 |
| PUT | `/modelTF/dataset-manage/{id}` | 更新数据集 |
| DELETE | `/modelTF/dataset-manage/{id}` | 删除数据集 |
| POST | `/modelTF/dataset-manage/upload/{dataset_id}` | 上传文件,字段名 `files` |
| GET | `/modelTF/dataset-manage/download/{dataset_id}` | 打包下载数据集 |
| GET | `/modelTF/dataset-manage/download/{dataset_id}/{file_id}` | 下载单文件 |
创建数据集:
@@ -296,12 +296,12 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/dataset-manage/preview/{file_id}` | 当前版本内容预览 |
| GET | `/api/dataset-manage/versions/{file_id}` | 文件版本列表 |
| GET | `/api/dataset-manage/versions/{file_id}/{version_id}` | 读取历史版本 |
| POST | `/api/dataset-manage/versions/{file_id}` | 保存为新版本 |
| PUT | `/api/dataset-manage/versions/{file_id}/active` | 切换当前版本 |
| DELETE | `/api/dataset-manage/versions/{file_id}/{version_id}` | 删除非当前、非初始版本 |
| GET | `/modelTF/dataset-manage/preview/{file_id}` | 当前版本内容预览 |
| GET | `/modelTF/dataset-manage/versions/{file_id}` | 文件版本列表 |
| GET | `/modelTF/dataset-manage/versions/{file_id}/{version_id}` | 读取历史版本 |
| POST | `/modelTF/dataset-manage/versions/{file_id}` | 保存为新版本 |
| PUT | `/modelTF/dataset-manage/versions/{file_id}/active` | 切换当前版本 |
| DELETE | `/modelTF/dataset-manage/versions/{file_id}/{version_id}` | 删除非当前、非初始版本 |
创建新版本:
@@ -324,15 +324,15 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/data-process` | 数据处理任务列表 |
| POST | `/api/data-process` | 创建草稿任务 |
| GET | `/api/data-process/{id}` | 任务详情 |
| PUT | `/api/data-process/{id}` | 更新任务配置 |
| DELETE | `/api/data-process/{id}` | 删除任务 |
| POST | `/api/data-process/{id}/start` | 启动处理 |
| POST | `/api/data-process/{id}/stop` | 停止处理 |
| GET | `/api/data-process/{id}/progress` | 查询进度 |
| GET | `/api/data-process/{id}/events` | SSE 实时进度 |
| GET | `/modelTF/data-process` | 数据处理任务列表 |
| POST | `/modelTF/data-process` | 创建草稿任务 |
| GET | `/modelTF/data-process/{id}` | 任务详情 |
| PUT | `/modelTF/data-process/{id}` | 更新任务配置 |
| DELETE | `/modelTF/data-process/{id}` | 删除任务 |
| POST | `/modelTF/data-process/{id}/start` | 启动处理 |
| POST | `/modelTF/data-process/{id}/stop` | 停止处理 |
| GET | `/modelTF/data-process/{id}/progress` | 查询进度 |
| GET | `/modelTF/data-process/{id}/events` | SSE 实时进度 |
创建任务:
@@ -358,10 +358,10 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| POST | `/api/data-process/{id}/source-files` | 上传源文件,字段名 `files` |
| DELETE | `/api/data-process/{id}/source-files/{file_id}` | 移除源文件 |
| POST | `/api/data-process/{id}/external/test` | 测试外部数据源连接 |
| POST | `/api/data-process/{id}/external/pull` | 拉取外部数据并生成源文件 |
| POST | `/modelTF/data-process/{id}/source-files` | 上传源文件,字段名 `files` |
| DELETE | `/modelTF/data-process/{id}/source-files/{file_id}` | 移除源文件 |
| POST | `/modelTF/data-process/{id}/external/test` | 测试外部数据源连接 |
| POST | `/modelTF/data-process/{id}/external/pull` | 拉取外部数据并生成源文件 |
外部数据源请求:
@@ -383,11 +383,11 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| POST | `/api/data-process/{id}/preview/build` | 根据源文件和配置生成预览切片 |
| GET | `/api/data-process/{id}/preview` | 查询预览切片 |
| PUT | `/api/data-process/{id}/preview/{preview_id}` | 编辑切片内容 |
| POST | `/api/data-process/{id}/preview` | 手动新增切片 |
| DELETE | `/api/data-process/{id}/preview/{preview_id}` | 删除切片 |
| POST | `/modelTF/data-process/{id}/preview/build` | 根据源文件和配置生成预览切片 |
| GET | `/modelTF/data-process/{id}/preview` | 查询预览切片 |
| PUT | `/modelTF/data-process/{id}/preview/{preview_id}` | 编辑切片内容 |
| POST | `/modelTF/data-process/{id}/preview` | 手动新增切片 |
| DELETE | `/modelTF/data-process/{id}/preview/{preview_id}` | 删除切片 |
预览切片字段:
@@ -410,11 +410,11 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| POST | `/api/data-process/{id}/generate` | 启动 LLM 生成 |
| GET | `/api/data-process/{id}/results` | 查询结果明细 |
| PUT | `/api/data-process/{id}/results/{result_id}` | 编辑结果 |
| POST | `/api/data-process/{id}/results/{result_id}/restore` | 恢复原始结果 |
| POST | `/api/data-process/{id}/publish` | 发布为数据集 |
| POST | `/modelTF/data-process/{id}/generate` | 启动 LLM 生成 |
| GET | `/modelTF/data-process/{id}/results` | 查询结果明细 |
| PUT | `/modelTF/data-process/{id}/results/{result_id}` | 编辑结果 |
| POST | `/modelTF/data-process/{id}/results/{result_id}/restore` | 恢复原始结果 |
| POST | `/modelTF/data-process/{id}/publish` | 发布为数据集 |
结果字段:
@@ -445,17 +445,17 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/fine-tune` | 训练任务列表 |
| GET | `/api/fine-tune/{id}` | 训练任务详情 |
| GET | `/api/fine-tune/check-name?name=xxx` | 任务名查重 |
| POST | `/api/fine-tune` | 创建训练任务记录 |
| POST | `/api/fine-tune/start` | 启动训练 |
| PUT | `/api/fine-tune/{id}` | 更新任务 |
| POST | `/api/fine-tune/stop/{id}` | 停止任务 |
| DELETE | `/api/fine-tune/{id}` | 删除任务 |
| GET | `/api/fine-tune/progress/{id}` | 获取训练进度 |
| GET | `/api/fine-tune/{id}/events` | SSE 训练日志/进度 |
| POST | `/api/fine-tune/tensorboard/start` | 启动 TensorBoard |
| GET | `/modelTF/fine-tune` | 训练任务列表 |
| GET | `/modelTF/fine-tune/{id}` | 训练任务详情 |
| GET | `/modelTF/fine-tune/check-name?name=xxx` | 任务名查重 |
| POST | `/modelTF/fine-tune` | 创建训练任务记录 |
| POST | `/modelTF/fine-tune/start` | 启动训练 |
| PUT | `/modelTF/fine-tune/{id}` | 更新任务 |
| POST | `/modelTF/fine-tune/stop/{id}` | 停止任务 |
| DELETE | `/modelTF/fine-tune/{id}` | 删除任务 |
| GET | `/modelTF/fine-tune/progress/{id}` | 获取训练进度 |
| GET | `/modelTF/fine-tune/{id}/events` | SSE 训练日志/进度 |
| POST | `/modelTF/fine-tune/tensorboard/start` | 启动 TensorBoard |
启动训练请求兼容前端 `FineTuneStartPayload`
@@ -496,14 +496,14 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
训练日志页还会联合调用:
- `GET /api/fine-tune/{id}` 获取任务参数。
- `GET /api/dataset-manage/{id}` 获取训练集信息。
- `GET /api/system-info` 获取 GPU 状态。
- `GET /api/training-log-files``GET /api/training-log-content` 获取日志。
- `GET /modelTF/fine-tune/{id}` 获取任务参数。
- `GET /modelTF/dataset-manage/{id}` 获取训练集信息。
- `GET /modelTF/system-info` 获取 GPU 状态。
- `GET /modelTF/training-log-files``GET /modelTF/training-log-content` 获取日志。
建议新增:
`GET /api/fine-tune/{id}/overview`
`GET /modelTF/fine-tune/{id}/overview`
一次返回任务、数据集、GPU、日志摘要、指标曲线减少页面聚合复杂度。
@@ -513,11 +513,11 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/model-eval` | 评测任务列表 |
| GET | `/api/model-eval/{id}` | 评测详情 |
| POST | `/api/model-eval/start` | 启动评测 |
| DELETE | `/api/model-eval/{id}` | 删除评测 |
| GET | `/api/model-eval/{id}/events` | SSE 评测进度 |
| GET | `/modelTF/model-eval` | 评测任务列表 |
| GET | `/modelTF/model-eval/{id}` | 评测详情 |
| POST | `/modelTF/model-eval/start` | 启动评测 |
| DELETE | `/modelTF/model-eval/{id}` | 删除评测 |
| GET | `/modelTF/model-eval/{id}/events` | SSE 评测进度 |
启动评测:
@@ -550,11 +550,11 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/dimension` | 维度列表 |
| GET | `/api/dimension/{id}` | 维度详情 |
| POST | `/api/dimension` | 创建维度 |
| PUT | `/api/dimension/{id}` | 编辑维度 |
| DELETE | `/api/dimension/{id}` | 删除维度 |
| GET | `/modelTF/dimension` | 维度列表 |
| GET | `/modelTF/dimension/{id}` | 维度详情 |
| POST | `/modelTF/dimension` | 创建维度 |
| PUT | `/modelTF/dimension/{id}` | 编辑维度 |
| DELETE | `/modelTF/dimension/{id}` | 删除维度 |
维度请求:
@@ -583,17 +583,17 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/model-compare` | 推理/对比任务列表 |
| GET | `/api/model-compare/{id}` | 任务详情 |
| POST | `/api/model-compare` | 创建任务 |
| DELETE | `/api/model-compare/{id}` | 删除任务 |
| POST | `/api/model-compare/{id}/load` | 加载任务内模型 |
| POST | `/api/model-compare/{id}/unload` | 卸载任务内模型 |
| GET | `/api/model-compare/{id}/load-status` | 查询加载状态 |
| POST | `/api/model-compare/{id}/load-status` | 更新加载状态 |
| POST | `/api/model-compare/{id}/start-model` | 启动单个模型服务 |
| POST | `/api/model-compare/stop-by-pid` | 按 PID 停止模型 |
| POST | `/api/model-compare/all/stop-all` | 停止全部旧模型服务 |
| GET | `/modelTF/model-compare` | 推理/对比任务列表 |
| GET | `/modelTF/model-compare/{id}` | 任务详情 |
| POST | `/modelTF/model-compare` | 创建任务 |
| DELETE | `/modelTF/model-compare/{id}` | 删除任务 |
| POST | `/modelTF/model-compare/{id}/load` | 加载任务内模型 |
| POST | `/modelTF/model-compare/{id}/unload` | 卸载任务内模型 |
| GET | `/modelTF/model-compare/{id}/load-status` | 查询加载状态 |
| POST | `/modelTF/model-compare/{id}/load-status` | 更新加载状态 |
| POST | `/modelTF/model-compare/{id}/start-model` | 启动单个模型服务 |
| POST | `/modelTF/model-compare/stop-by-pid` | 按 PID 停止模型 |
| POST | `/modelTF/model-compare/all/stop-all` | 停止全部旧模型服务 |
创建任务:
@@ -617,12 +617,12 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| POST | `/api/model-compare/stream-chat` | 流式对话,建议 SSE/chunked |
| POST | `/api/model-compare/chat-with-port` | 指定端口非流式对话 |
| POST | `/api/model-chat/batch` | API 模型批量对话 |
| POST | `/api/model-chat/local/chat` | 本地模型对话 |
| POST | `/api/model-chat/local/preload` | 预加载本地模型 |
| POST | `/api/model-chat/trained/preload` | 预加载已训练模型 |
| POST | `/modelTF/model-compare/stream-chat` | 流式对话,建议 SSE/chunked |
| POST | `/modelTF/model-compare/chat-with-port` | 指定端口非流式对话 |
| POST | `/modelTF/model-chat/batch` | API 模型批量对话 |
| POST | `/modelTF/model-chat/local/chat` | 本地模型对话 |
| POST | `/modelTF/model-chat/local/preload` | 预加载本地模型 |
| POST | `/modelTF/model-chat/trained/preload` | 预加载已训练模型 |
流式请求:
@@ -649,10 +649,10 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| POST | `/api/data-convert/jobs` | 创建转换任务multipart 上传源文件 |
| GET | `/api/data-convert/jobs/{id}` | 转换任务详情 |
| GET | `/api/data-convert/jobs/{id}/download` | 下载转换结果 |
| DELETE | `/api/data-convert/jobs/{id}` | 删除转换任务 |
| POST | `/modelTF/data-convert/jobs` | 创建转换任务multipart 上传源文件 |
| GET | `/modelTF/data-convert/jobs/{id}` | 转换任务详情 |
| GET | `/modelTF/data-convert/jobs/{id}/download` | 下载转换结果 |
| DELETE | `/modelTF/data-convert/jobs/{id}` | 删除转换任务 |
请求字段:
@@ -667,11 +667,11 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/tools` | 工具列表 |
| POST | `/api/tools` | 创建工具 |
| GET | `/api/tools/{id}` | 工具详情 |
| PUT | `/api/tools/{id}` | 编辑工具 |
| DELETE | `/api/tools/{id}` | 删除工具 |
| GET | `/modelTF/tools` | 工具列表 |
| POST | `/modelTF/tools` | 创建工具 |
| GET | `/modelTF/tools/{id}` | 工具详情 |
| PUT | `/modelTF/tools/{id}` | 编辑工具 |
| DELETE | `/modelTF/tools/{id}` | 删除工具 |
字段:`name``description``url``icon``visibility``owner_id`
@@ -706,12 +706,12 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 | 权限 |
| --- | --- | --- | --- |
| GET | `/api/tenants` | 租户列表 | 平台管理员 |
| POST | `/api/tenants` | 创建租户 | 平台管理员 |
| GET | `/api/tenants/{id}` | 租户详情 | 租户管理员 |
| PUT | `/api/tenants/{id}` | 更新租户 | 平台管理员 |
| PUT | `/api/tenants/{id}/quota` | 设置租户配额 | 平台管理员 |
| PUT | `/api/tenants/{id}/retention-policy` | 设置租户留存策略 | 平台管理员 |
| GET | `/modelTF/tenants` | 租户列表 | 平台管理员 |
| POST | `/modelTF/tenants` | 创建租户 | 平台管理员 |
| GET | `/modelTF/tenants/{id}` | 租户详情 | 租户管理员 |
| PUT | `/modelTF/tenants/{id}` | 更新租户 | 平台管理员 |
| PUT | `/modelTF/tenants/{id}/quota` | 设置租户配额 | 平台管理员 |
| PUT | `/modelTF/tenants/{id}/retention-policy` | 设置租户留存策略 | 平台管理员 |
创建租户:
@@ -738,15 +738,15 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/projects` | 当前用户可访问项目列表 |
| POST | `/api/projects` | 创建项目 |
| GET | `/api/projects/{id}` | 项目详情 |
| PUT | `/api/projects/{id}` | 更新项目 |
| POST | `/api/projects/{id}/archive` | 归档项目 |
| GET | `/api/projects/{id}/members` | 项目成员 |
| POST | `/api/projects/{id}/members` | 添加成员 |
| PUT | `/api/projects/{id}/members/{user_id}` | 修改项目角色 |
| DELETE | `/api/projects/{id}/members/{user_id}` | 移除成员 |
| GET | `/modelTF/projects` | 当前用户可访问项目列表 |
| POST | `/modelTF/projects` | 创建项目 |
| GET | `/modelTF/projects/{id}` | 项目详情 |
| PUT | `/modelTF/projects/{id}` | 更新项目 |
| POST | `/modelTF/projects/{id}/archive` | 归档项目 |
| GET | `/modelTF/projects/{id}/members` | 项目成员 |
| POST | `/modelTF/projects/{id}/members` | 添加成员 |
| PUT | `/modelTF/projects/{id}/members/{user_id}` | 修改项目角色 |
| DELETE | `/modelTF/projects/{id}/members/{user_id}` | 移除成员 |
创建项目:
@@ -772,9 +772,9 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/resources/{resource_type}/{resource_id}/acl` | 查询资源授权 |
| PUT | `/api/resources/{resource_type}/{resource_id}/acl` | 覆盖资源授权 |
| POST | `/api/resources/{resource_type}/{resource_id}/share` | 快速分享给用户/项目角色 |
| GET | `/modelTF/resources/{resource_type}/{resource_id}/acl` | 查询资源授权 |
| PUT | `/modelTF/resources/{resource_type}/{resource_id}/acl` | 覆盖资源授权 |
| POST | `/modelTF/resources/{resource_type}/{resource_id}/share` | 快速分享给用户/项目角色 |
授权请求:
@@ -801,14 +801,14 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/approvals` | 审批列表,支持 `type=pending/mine/done` |
| POST | `/api/approvals` | 发起审批 |
| GET | `/api/approvals/{id}` | 审批详情 |
| POST | `/api/approvals/{id}/approve` | 通过 |
| POST | `/api/approvals/{id}/reject` | 驳回 |
| POST | `/api/approvals/{id}/cancel` | 撤回 |
| GET | `/api/approval-templates` | 审批模板列表 |
| PUT | `/api/approval-templates/{id}` | 更新审批模板 |
| GET | `/modelTF/approvals` | 审批列表,支持 `type=pending/mine/done` |
| POST | `/modelTF/approvals` | 发起审批 |
| GET | `/modelTF/approvals/{id}` | 审批详情 |
| POST | `/modelTF/approvals/{id}/approve` | 通过 |
| POST | `/modelTF/approvals/{id}/reject` | 驳回 |
| POST | `/modelTF/approvals/{id}/cancel` | 撤回 |
| GET | `/modelTF/approval-templates` | 审批模板列表 |
| PUT | `/modelTF/approval-templates/{id}` | 更新审批模板 |
发起审批:
@@ -831,28 +831,28 @@ page=1&page_size=20&keyword=xxx&sort=-created_at
### 13.5 算力资源与队列
应用平台对前端暴露 `/api/compute/*`,实际由 Compute Gateway 调用算力平台内部接口。
应用平台对前端暴露 `/modelTF/compute/*`,实际由 Compute Gateway 调用算力平台内部接口。
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/compute/nodes` | 算力节点列表 |
| POST | `/api/compute/nodes` | 新增算力节点 |
| GET | `/api/compute/nodes/{id}` | 算力节点详情 |
| PUT | `/api/compute/nodes/{id}` | 编辑节点地址、权重、标签、路径和启用状态 |
| POST | `/api/compute/nodes/{id}/test-connection` | 测试 Compute API/File Gateway 连通性 |
| POST | `/api/compute/nodes/{id}/enable` | 启用节点 |
| POST | `/api/compute/nodes/{id}/disable` | 禁用节点,不接收新任务 |
| POST | `/api/compute/nodes/{id}/drain` | 进入维护模式,已有任务跑完后下线 |
| POST | `/api/compute/nodes/{id}/health-check` | 主动触发节点健康检查 |
| GET | `/api/compute/nodes/{id}/engines` | 节点训练引擎和版本 |
| GET | `/api/compute/nodes/{id}/replicas` | 节点本地资源副本 |
| GET | `/api/compute/gpus` | GPU 状态 |
| GET | `/api/compute/queue` | 任务队列 |
| GET | `/api/compute/jobs/{id}` | 算力任务详情 |
| POST | `/api/compute/jobs/{id}/retry` | 重试任务 |
| POST | `/api/compute/jobs/{id}/priority` | 调整优先级 |
| POST | `/api/internal/compute-sync/jobs/poll` | 应用平台主动轮询并同步算力任务状态 |
| POST | `/api/internal/compute-sync/resources` | 调度前同步数据集/模型到目标节点 |
| GET | `/modelTF/compute/nodes` | 算力节点列表 |
| POST | `/modelTF/compute/nodes` | 新增算力节点 |
| GET | `/modelTF/compute/nodes/{id}` | 算力节点详情 |
| PUT | `/modelTF/compute/nodes/{id}` | 编辑节点地址、权重、标签、路径和启用状态 |
| POST | `/modelTF/compute/nodes/{id}/test-connection` | 测试 Compute API/File Gateway 连通性 |
| POST | `/modelTF/compute/nodes/{id}/enable` | 启用节点 |
| POST | `/modelTF/compute/nodes/{id}/disable` | 禁用节点,不接收新任务 |
| POST | `/modelTF/compute/nodes/{id}/drain` | 进入维护模式,已有任务跑完后下线 |
| POST | `/modelTF/compute/nodes/{id}/health-check` | 主动触发节点健康检查 |
| GET | `/modelTF/compute/nodes/{id}/engines` | 节点训练引擎和版本 |
| GET | `/modelTF/compute/nodes/{id}/replicas` | 节点本地资源副本 |
| GET | `/modelTF/compute/gpus` | GPU 状态 |
| GET | `/modelTF/compute/queue` | 任务队列 |
| GET | `/modelTF/compute/jobs/{id}` | 算力任务详情 |
| POST | `/modelTF/compute/jobs/{id}/retry` | 重试任务 |
| POST | `/modelTF/compute/jobs/{id}/priority` | 调整优先级 |
| POST | `/modelTF/internal/compute-sync/jobs/poll` | 应用平台主动轮询并同步算力任务状态 |
| POST | `/modelTF/internal/compute-sync/resources` | 调度前同步数据集/模型到目标节点 |
算力节点设计说明:
@@ -913,13 +913,13 @@ GPU 响应字段:
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| POST | `/compute/jobs` | 创建训练/评测/数据处理/推理任务 |
| GET | `/compute/jobs/{id}` | 查询任务 |
| POST | `/compute/jobs/{id}/stop` | 停止任务 |
| GET | `/compute/jobs/{id}/logs` | 拉取日志 |
| GET | `/compute/resources/gpus` | 查询 GPU |
| POST | `/compute/files/upload` | 上传到算力本地磁盘 |
| GET | `/compute/files/{id}/download` | 下载文件 |
| POST | `/modelTF/compute/jobs` | 创建训练/评测/数据处理/推理任务 |
| GET | `/modelTF/compute/jobs/{id}` | 查询任务 |
| POST | `/modelTF/compute/jobs/{id}/stop` | 停止任务 |
| GET | `/modelTF/compute/jobs/{id}/logs` | 拉取日志 |
| GET | `/modelTF/compute/resources/gpus` | 查询 GPU |
| POST | `/modelTF/compute/files/upload` | 上传到算力本地磁盘 |
| GET | `/modelTF/compute/files/{id}/download` | 下载文件 |
创建算力任务:
@@ -994,13 +994,13 @@ GPU 响应字段:
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| POST | `/api/files/upload-session` | 创建分片上传会话 |
| PUT | `/api/files/upload-session/{id}/parts/{part_no}` | 上传分片 |
| POST | `/api/files/upload-session/{id}/complete` | 完成上传 |
| GET | `/api/files/{id}/preview` | 文件预览 |
| GET | `/api/files/{id}/download-url` | 获取短时下载链接 |
| POST | `/api/import/local-model` | 从算力节点本地路径导入模型 |
| POST | `/api/import/local-dataset` | 从算力节点本地路径导入数据集 |
| POST | `/modelTF/files/upload-session` | 创建分片上传会话 |
| PUT | `/modelTF/files/upload-session/{id}/parts/{part_no}` | 上传分片 |
| POST | `/modelTF/files/upload-session/{id}/complete` | 完成上传 |
| GET | `/modelTF/files/{id}/preview` | 文件预览 |
| GET | `/modelTF/files/{id}/download-url` | 获取短时下载链接 |
| POST | `/modelTF/import/local-model` | 从算力节点本地路径导入模型 |
| POST | `/modelTF/import/local-dataset` | 从算力节点本地路径导入数据集 |
离线导入模型:
@@ -1019,10 +1019,10 @@ GPU 响应字段:
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/training-engines` | 训练引擎列表 |
| GET | `/api/training-engines/{id}` | 引擎详情 |
| GET | `/api/training-engines/{id}/schema` | 参数 schema |
| POST | `/api/training-engines/{id}/health-check` | 健康检查 |
| GET | `/modelTF/training-engines` | 训练引擎列表 |
| GET | `/modelTF/training-engines/{id}` | 引擎详情 |
| GET | `/modelTF/training-engines/{id}/schema` | 参数 schema |
| POST | `/modelTF/training-engines/{id}/health-check` | 健康检查 |
LLaMA-Factory 引擎声明:
@@ -1042,11 +1042,11 @@ LLaMA-Factory 引擎声明:
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/fine-tune/{id}/checkpoints` | checkpoint 列表 |
| POST | `/api/fine-tune/{id}/retry` | 失败任务重试 |
| POST | `/api/fine-tune/{id}/resume` | 从 checkpoint 恢复训练 |
| DELETE | `/api/fine-tune/{id}/checkpoints/{checkpoint_id}` | 删除 checkpoint可能触发审批 |
| PUT | `/api/fine-tune/{id}/checkpoint-retention` | 设置 checkpoint 保留策略 |
| GET | `/modelTF/fine-tune/{id}/checkpoints` | checkpoint 列表 |
| POST | `/modelTF/fine-tune/{id}/retry` | 失败任务重试 |
| POST | `/modelTF/fine-tune/{id}/resume` | 从 checkpoint 恢复训练 |
| DELETE | `/modelTF/fine-tune/{id}/checkpoints/{checkpoint_id}` | 删除 checkpoint可能触发审批 |
| PUT | `/modelTF/fine-tune/{id}/checkpoint-retention` | 设置 checkpoint 保留策略 |
默认保留策略:最近 3 个、最优 2 个、已发布模型关联 checkpoint 不自动删除、失败任务保留 14 天。
@@ -1054,13 +1054,13 @@ LLaMA-Factory 引擎声明:
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/audit-logs` | 操作审计 |
| GET | `/api/login-logs` | 登录审计 |
| GET | `/api/download-logs` | 下载审计 |
| GET | `/api/retention-policies` | 留存策略 |
| PUT | `/api/retention-policies/{id}` | 更新留存策略 |
| GET | `/api/quotas/usage` | 配额使用 |
| GET | `/api/usage/summary` | GPU 小时、磁盘、推理调用统计 |
| GET | `/modelTF/audit-logs` | 操作审计 |
| GET | `/modelTF/login-logs` | 登录审计 |
| GET | `/modelTF/download-logs` | 下载审计 |
| GET | `/modelTF/retention-policies` | 留存策略 |
| PUT | `/modelTF/retention-policies/{id}` | 更新留存策略 |
| GET | `/modelTF/quotas/usage` | 配额使用 |
| GET | `/modelTF/usage/summary` | GPU 小时、磁盘、推理调用统计 |
第一版只做用量统计,不做账单计费;第二期可扩展成本核算。
@@ -1072,88 +1072,88 @@ LLaMA-Factory 引擎声明:
| 页面模块 | 路由/入口 | 接口 | 说明 |
| --- | --- | --- | --- |
| 登录页 | `/login` | `POST /api/login``GET /api/me``POST /api/logout` | 登录、恢复用户、退出 |
| 用户中心 | `/user-settings` | `GET /api/users` | 用户列表、搜索、状态筛选 |
| 创建用户 | `/user-settings/create` | `POST /api/users` | 创建本地用户 |
| 用户权限 | `/user-settings/:id/permission` | `PUT /api/users/{id}``PUT /api/users/{id}/password` | 用户角色、状态、页面权限、重置密码 |
| 无权限页 | `/permission-denied` | 无专属接口,可调用 `GET /api/me` | 展示当前用户权限和返回入口 |
| 登录页 | `/login` | `POST /modelTF/login``GET /modelTF/me``POST /modelTF/logout` | 登录、恢复用户、退出 |
| 用户中心 | `/user-settings` | `GET /modelTF/users` | 用户列表、搜索、状态筛选 |
| 创建用户 | `/user-settings/create` | `POST /modelTF/users` | 创建本地用户 |
| 用户权限 | `/user-settings/:id/permission` | `PUT /modelTF/users/{id}``PUT /modelTF/users/{id}/password` | 用户角色、状态、页面权限、重置密码 |
| 无权限页 | `/permission-denied` | 无专属接口,可调用 `GET /modelTF/me` | 展示当前用户权限和返回入口 |
### 14.2 租户、项目和资源授权
| 页面模块 | 路由/入口 | 接口 | 说明 |
| --- | --- | --- | --- |
| 租户管理 | `/tenants` | `GET /api/tenants``POST /api/tenants` | 租户列表、创建租户 |
| 租户详情 | `/tenants/:id` | `GET /api/tenants/{id}``PUT /api/tenants/{id}``PUT /api/tenants/{id}/quota``PUT /api/tenants/{id}/retention-policy` | 租户配置、配额、留存 |
| 项目列表 | `/projects` | `GET /api/projects``POST /api/projects` | 项目列表、创建项目 |
| 项目详情 | `/projects/:id` | `GET /api/projects/{id}``PUT /api/projects/{id}``POST /api/projects/{id}/archive` | 项目概览、归档 |
| 项目成员 | `/projects/:id/members` | `GET /api/projects/{id}/members``POST /api/projects/{id}/members``PUT /api/projects/{id}/members/{user_id}``DELETE /api/projects/{id}/members/{user_id}` | 成员和项目角色 |
| 资源授权 | 资源详情弹窗或 `/projects/:id/permissions` | `GET /api/resources/{resource_type}/{resource_id}/acl``PUT /api/resources/{resource_type}/{resource_id}/acl``POST /api/resources/{resource_type}/{resource_id}/share` | 模型/数据集/任务级 ACL |
| 租户管理 | `/tenants` | `GET /modelTF/tenants``POST /modelTF/tenants` | 租户列表、创建租户 |
| 租户详情 | `/tenants/:id` | `GET /modelTF/tenants/{id}``PUT /modelTF/tenants/{id}``PUT /modelTF/tenants/{id}/quota``PUT /modelTF/tenants/{id}/retention-policy` | 租户配置、配额、留存 |
| 项目列表 | `/projects` | `GET /modelTF/projects``POST /modelTF/projects` | 项目列表、创建项目 |
| 项目详情 | `/projects/:id` | `GET /modelTF/projects/{id}``PUT /modelTF/projects/{id}``POST /modelTF/projects/{id}/archive` | 项目概览、归档 |
| 项目成员 | `/projects/:id/members` | `GET /modelTF/projects/{id}/members``POST /modelTF/projects/{id}/members``PUT /modelTF/projects/{id}/members/{user_id}``DELETE /modelTF/projects/{id}/members/{user_id}` | 成员和项目角色 |
| 资源授权 | 资源详情弹窗或 `/projects/:id/permissions` | `GET /modelTF/resources/{resource_type}/{resource_id}/acl``PUT /modelTF/resources/{resource_type}/{resource_id}/acl``POST /modelTF/resources/{resource_type}/{resource_id}/share` | 模型/数据集/任务级 ACL |
### 14.3 看板、监控和日志
| 页面模块 | 路由/入口 | 接口 | 说明 |
| --- | --- | --- | --- |
| 服务看板 | `/dashboard` | `GET /api/dashboard/overview``GET /api/health` | 首页聚合、轻量健康指标 |
| 平台性能 | `/hardware` | `GET /api/system-info``GET /api/compute/gpus` | CPU、内存、磁盘、GPU、任务占用 |
| 系统日志 | `/logs` | `GET /api/log-files``GET /api/log-content` | 系统日志列表和内容 |
| 训练日志页 | `/training-log/:id` | `GET /api/fine-tune/{id}/overview``GET /api/training-log-files``GET /api/training-log-content` | 训练日志、指标、GPU 状态 |
| 服务看板 | `/dashboard` | `GET /modelTF/dashboard/overview``GET /modelTF/health` | 首页聚合、轻量健康指标 |
| 平台性能 | `/hardware` | `GET /modelTF/system-info``GET /modelTF/compute/gpus` | CPU、内存、磁盘、GPU、任务占用 |
| 系统日志 | `/logs` | `GET /modelTF/log-files``GET /modelTF/log-content` | 系统日志列表和内容 |
| 训练日志页 | `/training-log/:id` | `GET /modelTF/fine-tune/{id}/overview``GET /modelTF/training-log-files``GET /modelTF/training-log-content` | 训练日志、指标、GPU 状态 |
### 14.4 模型管理
| 页面模块 | 路由/入口 | 接口 | 说明 |
| --- | --- | --- | --- |
| 模型列表 | `/model-manage` | `GET /api/model-manage``DELETE /api/model-manage/{id}``PUT /api/model-manage/{id}/purpose` | 模型列表、删除审批入口、用途变更 |
| 模型创建/编辑 | `/model-manage/create``/model-manage/:id/edit` | `GET /api/model-manage/{id}``POST /api/model-manage``PUT /api/model-manage/{id}``GET /api/model-manage/local-models` | 本地/API 模型登记 |
| 离线导入模型 | 模型创建页或导入弹窗 | `POST /api/import/local-model` | 从算力节点本地路径导入 |
| 已训练模型 | 模型列表/选择弹窗 | `GET /api/model-manage/trained-models``DELETE /api/model-manage/trained-models/{id}` | 训练产物列表和删除 |
| 权重合并 | `/model-manage/merge` | `POST /api/model-manage/merge` | LoRA 合并任务 |
| 模型导出 | 模型列表/详情 | `GET /api/model-manage/trained-models/{model_name}/export` | 导出下载,必要时触发审批 |
| 模型列表 | `/model-manage` | `GET /modelTF/model-manage``DELETE /modelTF/model-manage/{id}``PUT /modelTF/model-manage/{id}/purpose` | 模型列表、删除审批入口、用途变更 |
| 模型创建/编辑 | `/model-manage/create``/model-manage/:id/edit` | `GET /modelTF/model-manage/{id}``POST /modelTF/model-manage``PUT /modelTF/model-manage/{id}``GET /modelTF/model-manage/local-models` | 本地/API 模型登记 |
| 离线导入模型 | 模型创建页或导入弹窗 | `POST /modelTF/import/local-model` | 从算力节点本地路径导入 |
| 已训练模型 | 模型列表/选择弹窗 | `GET /modelTF/model-manage/trained-models``DELETE /modelTF/model-manage/trained-models/{id}` | 训练产物列表和删除 |
| 权重合并 | `/model-manage/merge` | `POST /modelTF/model-manage/merge` | LoRA 合并任务 |
| 模型导出 | 模型列表/详情 | `GET /modelTF/model-manage/trained-models/{model_name}/export` | 导出下载,必要时触发审批 |
### 14.5 数据集与数据处理
| 页面模块 | 路由/入口 | 接口 | 说明 |
| --- | --- | --- | --- |
| 数据集列表 | `/dataset` | `GET /api/dataset-manage``DELETE /api/dataset-manage/{id}``GET /api/dataset-manage/download/{id}` | 数据集列表、删除、打包下载 |
| 数据集创建/编辑 | `/dataset/create``/dataset/:id/edit` | `POST /api/dataset-manage``PUT /api/dataset-manage/{id}``POST /api/dataset-manage/upload/{dataset_id}` | 数据集元数据和文件上传 |
| 离线导入数据集 | 数据集创建页或导入弹窗 | `POST /api/import/local-dataset` | 从算力节点目录导入 |
| 数据集预览 | `/dataset/:id/preview` | `GET /api/dataset-manage/preview/{file_id}``GET /api/dataset-manage/versions/{file_id}``POST /api/dataset-manage/versions/{file_id}``PUT /api/dataset-manage/versions/{file_id}/active``DELETE /api/dataset-manage/versions/{file_id}/{version_id}` | 文件预览、版本、在线编辑 |
| 数据处理列表 | `/data-process` | `GET /api/data-process``DELETE /api/data-process/{id}` | 处理任务列表 |
| 数据处理创建向导 | `/data-process/create` | `POST /api/data-process``POST /api/data-process/{id}/source-files``POST /api/data-process/{id}/preview/build``POST /api/data-process/{id}/generate``POST /api/data-process/{id}/publish` | 创建、上传、预览、生成、发布 |
| 数据处理详情 | `/data-process/:id` | `GET /api/data-process/{id}``GET /api/data-process/{id}/results``GET /api/data-process/{id}/progress``GET /api/data-process/{id}/events` | 详情、结果、进度 |
| 数据转换 | `/data-convert` | `POST /api/data-convert/jobs``GET /api/data-convert/jobs/{id}``GET /api/data-convert/jobs/{id}/download` | JSON/JSONL 转换 |
| 数据集列表 | `/dataset` | `GET /modelTF/dataset-manage``DELETE /modelTF/dataset-manage/{id}``GET /modelTF/dataset-manage/download/{id}` | 数据集列表、删除、打包下载 |
| 数据集创建/编辑 | `/dataset/create``/dataset/:id/edit` | `POST /modelTF/dataset-manage``PUT /modelTF/dataset-manage/{id}``POST /modelTF/dataset-manage/upload/{dataset_id}` | 数据集元数据和文件上传 |
| 离线导入数据集 | 数据集创建页或导入弹窗 | `POST /modelTF/import/local-dataset` | 从算力节点目录导入 |
| 数据集预览 | `/dataset/:id/preview` | `GET /modelTF/dataset-manage/preview/{file_id}``GET /modelTF/dataset-manage/versions/{file_id}``POST /modelTF/dataset-manage/versions/{file_id}``PUT /modelTF/dataset-manage/versions/{file_id}/active``DELETE /modelTF/dataset-manage/versions/{file_id}/{version_id}` | 文件预览、版本、在线编辑 |
| 数据处理列表 | `/data-process` | `GET /modelTF/data-process``DELETE /modelTF/data-process/{id}` | 处理任务列表 |
| 数据处理创建向导 | `/data-process/create` | `POST /modelTF/data-process``POST /modelTF/data-process/{id}/source-files``POST /modelTF/data-process/{id}/preview/build``POST /modelTF/data-process/{id}/generate``POST /modelTF/data-process/{id}/publish` | 创建、上传、预览、生成、发布 |
| 数据处理详情 | `/data-process/:id` | `GET /modelTF/data-process/{id}``GET /modelTF/data-process/{id}/results``GET /modelTF/data-process/{id}/progress``GET /modelTF/data-process/{id}/events` | 详情、结果、进度 |
| 数据转换 | `/data-convert` | `POST /modelTF/data-convert/jobs``GET /modelTF/data-convert/jobs/{id}``GET /modelTF/data-convert/jobs/{id}/download` | JSON/JSONL 转换 |
### 14.6 微调训练
| 页面模块 | 路由/入口 | 接口 | 说明 |
| --- | --- | --- | --- |
| 微调列表 | `/fine-tune` | `GET /api/fine-tune``POST /api/fine-tune/stop/{id}``DELETE /api/fine-tune/{id}` | 训练任务列表、停止、删除 |
| 微调创建 | `/fine-tune/create` | `GET /api/fine-tune/check-name``POST /api/fine-tune``POST /api/fine-tune/start``GET /api/model-manage``GET /api/dataset-manage``GET /api/compute/gpus` | 参数配置、GPU 选择、启动训练 |
| 训练详情/日志 | `/training-log/:id` | `GET /api/fine-tune/{id}``GET /api/fine-tune/progress/{id}``GET /api/fine-tune/{id}/events``GET /api/fine-tune/{id}/checkpoints` | 日志、进度、checkpoint |
| 恢复/重试训练 | 训练详情页 | `POST /api/fine-tune/{id}/retry``POST /api/fine-tune/{id}/resume` | 从 checkpoint 重试或恢复 |
| Checkpoint 管理 | 训练详情页、存储管理页 | `DELETE /api/fine-tune/{id}/checkpoints/{checkpoint_id}``PUT /api/fine-tune/{id}/checkpoint-retention` | 清理策略和删除 |
| TensorBoard | 训练详情页 | `POST /api/fine-tune/tensorboard/start` | 启动 TensorBoard |
| 微调列表 | `/fine-tune` | `GET /modelTF/fine-tune``POST /modelTF/fine-tune/stop/{id}``DELETE /modelTF/fine-tune/{id}` | 训练任务列表、停止、删除 |
| 微调创建 | `/fine-tune/create` | `GET /modelTF/fine-tune/check-name``POST /modelTF/fine-tune``POST /modelTF/fine-tune/start``GET /modelTF/model-manage``GET /modelTF/dataset-manage``GET /modelTF/compute/gpus` | 参数配置、GPU 选择、启动训练 |
| 训练详情/日志 | `/training-log/:id` | `GET /modelTF/fine-tune/{id}``GET /modelTF/fine-tune/progress/{id}``GET /modelTF/fine-tune/{id}/events``GET /modelTF/fine-tune/{id}/checkpoints` | 日志、进度、checkpoint |
| 恢复/重试训练 | 训练详情页 | `POST /modelTF/fine-tune/{id}/retry``POST /modelTF/fine-tune/{id}/resume` | 从 checkpoint 重试或恢复 |
| Checkpoint 管理 | 训练详情页、存储管理页 | `DELETE /modelTF/fine-tune/{id}/checkpoints/{checkpoint_id}``PUT /modelTF/fine-tune/{id}/checkpoint-retention` | 清理策略和删除 |
| TensorBoard | 训练详情页 | `POST /modelTF/fine-tune/tensorboard/start` | 启动 TensorBoard |
### 14.7 评测、推理、对比和服务发布
| 页面模块 | 路由/入口 | 接口 | 说明 |
| --- | --- | --- | --- |
| 评测列表 | `/model-eval` | `GET /api/model-eval``DELETE /api/model-eval/{id}` | 评测任务列表 |
| 评测创建 | `/model-eval/create` | `POST /api/model-eval/start``GET /api/dimension``GET /api/model-manage/trained-models``GET /api/dataset-manage``GET /api/compute/gpus` | 选择模型、数据集、维度、GPU |
| 评测详情 | `/model-eval/:id` | `GET /api/model-eval/{id}``GET /api/model-eval/{id}/events` | 综合结果、样本评分 |
| 评测维度 | `/model-eval/dimension/:id/edit` | `GET /api/dimension/{id}``POST /api/dimension``PUT /api/dimension/{id}``DELETE /api/dimension/{id}` | 维度和 Prompt 管理 |
| 推理列表 | `/model-inference` | `GET /api/model-compare``POST /api/model-compare/{id}/load``POST /api/model-compare/{id}/unload` | 推理任务和加载状态 |
| 推理创建 | `/model-inference/create` | `POST /api/model-compare``GET /api/model-manage``GET /api/model-manage/trained-models``GET /api/compute/gpus` | 选择模型和 GPU |
| 推理对话 | `/model-inference/chat/:id` | `GET /api/model-compare/{id}``POST /api/model-compare/stream-chat``POST /api/model-compare/chat-with-port` | 单模型对话 |
| 模型对比 | `/model-compare/chat/:id``/model-compare/result` | `POST /api/model-chat/batch``POST /api/model-chat/local/chat``POST /api/model-chat/local/preload``POST /api/model-chat/trained/preload` | 多模型对比和预加载 |
| 模型服务治理 | `/model-services``/model-services/:id` | `POST /api/approvals``GET /api/compute/jobs/{id}``GET /api/usage/summary` | 测试/生产服务发布、调用统计、下线审批 |
| 评测列表 | `/model-eval` | `GET /modelTF/model-eval``DELETE /modelTF/model-eval/{id}` | 评测任务列表 |
| 评测创建 | `/model-eval/create` | `POST /modelTF/model-eval/start``GET /modelTF/dimension``GET /modelTF/model-manage/trained-models``GET /modelTF/dataset-manage``GET /modelTF/compute/gpus` | 选择模型、数据集、维度、GPU |
| 评测详情 | `/model-eval/:id` | `GET /modelTF/model-eval/{id}``GET /modelTF/model-eval/{id}/events` | 综合结果、样本评分 |
| 评测维度 | `/model-eval/dimension/:id/edit` | `GET /modelTF/dimension/{id}``POST /modelTF/dimension``PUT /modelTF/dimension/{id}``DELETE /modelTF/dimension/{id}` | 维度和 Prompt 管理 |
| 推理列表 | `/model-inference` | `GET /modelTF/model-compare``POST /modelTF/model-compare/{id}/load``POST /modelTF/model-compare/{id}/unload` | 推理任务和加载状态 |
| 推理创建 | `/model-inference/create` | `POST /modelTF/model-compare``GET /modelTF/model-manage``GET /modelTF/model-manage/trained-models``GET /modelTF/compute/gpus` | 选择模型和 GPU |
| 推理对话 | `/model-inference/chat/:id` | `GET /modelTF/model-compare/{id}``POST /modelTF/model-compare/stream-chat``POST /modelTF/model-compare/chat-with-port` | 单模型对话 |
| 模型对比 | `/model-compare/chat/:id``/model-compare/result` | `POST /modelTF/model-chat/batch``POST /modelTF/model-chat/local/chat``POST /modelTF/model-chat/local/preload``POST /modelTF/model-chat/trained/preload` | 多模型对比和预加载 |
| 模型服务治理 | `/model-services``/model-services/:id` | `POST /modelTF/approvals``GET /modelTF/compute/jobs/{id}``GET /modelTF/usage/summary` | 测试/生产服务发布、调用统计、下线审批 |
### 14.8 审批、审计、算力和存储运维
| 页面模块 | 路由/入口 | 接口 | 说明 |
| --- | --- | --- | --- |
| 审批中心 | `/approvals``/approvals/pending``/approvals/mine``/approvals/:id` | `GET /api/approvals``POST /api/approvals``GET /api/approvals/{id}``POST /api/approvals/{id}/approve``POST /api/approvals/{id}/reject``POST /api/approvals/{id}/cancel` | 审批列表和审批动作 |
| 审批设置 | `/approval-settings` | `GET /api/approval-templates``PUT /api/approval-templates/{id}` | 审批模板 |
| 算力资源 | `/compute``/compute/gpus``/compute/queue``/compute/nodes` | `GET/POST/PUT /api/compute/nodes``POST /api/compute/nodes/{id}/test-connection``POST /api/compute/nodes/{id}/enable``POST /api/compute/nodes/{id}/disable``POST /api/compute/nodes/{id}/drain``GET /api/compute/gpus``GET /api/compute/queue``POST /api/compute/jobs/{id}/retry``POST /api/compute/jobs/{id}/priority` | GPU、节点、队列、节点权重、标签、维护状态、资源副本 |
| 存储管理 | `/storage` | `GET /api/quotas/usage``GET /api/files/{id}/download-url``GET /api/retention-policies``PUT /api/retention-policies/{id}` | 磁盘占用、下载、留存 |
| 审计中心 | `/audit-logs``/login-logs``/download-logs` | `GET /api/audit-logs``GET /api/login-logs``GET /api/download-logs` | 操作、登录、下载审计 |
| 训练引擎管理 | `/training-engines` | `GET /api/training-engines``GET /api/training-engines/{id}``GET /api/training-engines/{id}/schema``POST /api/training-engines/{id}/health-check` | 引擎能力和健康 |
| 审批中心 | `/approvals``/approvals/pending``/approvals/mine``/approvals/:id` | `GET /modelTF/approvals``POST /modelTF/approvals``GET /modelTF/approvals/{id}``POST /modelTF/approvals/{id}/approve``POST /modelTF/approvals/{id}/reject``POST /modelTF/approvals/{id}/cancel` | 审批列表和审批动作 |
| 审批设置 | `/approval-settings` | `GET /modelTF/approval-templates``PUT /modelTF/approval-templates/{id}` | 审批模板 |
| 算力资源 | `/compute``/compute/gpus``/compute/queue``/compute/nodes` | `GET/POST/PUT /modelTF/compute/nodes``POST /modelTF/compute/nodes/{id}/test-connection``POST /modelTF/compute/nodes/{id}/enable``POST /modelTF/compute/nodes/{id}/disable``POST /modelTF/compute/nodes/{id}/drain``GET /modelTF/compute/gpus``GET /modelTF/compute/queue``POST /modelTF/compute/jobs/{id}/retry``POST /modelTF/compute/jobs/{id}/priority` | GPU、节点、队列、节点权重、标签、维护状态、资源副本 |
| 存储管理 | `/storage` | `GET /modelTF/quotas/usage``GET /modelTF/files/{id}/download-url``GET /modelTF/retention-policies``PUT /modelTF/retention-policies/{id}` | 磁盘占用、下载、留存 |
| 审计中心 | `/audit-logs``/login-logs``/download-logs` | `GET /modelTF/audit-logs``GET /modelTF/login-logs``GET /modelTF/download-logs` | 操作、登录、下载审计 |
| 训练引擎管理 | `/training-engines` | `GET /modelTF/training-engines``GET /modelTF/training-engines/{id}``GET /modelTF/training-engines/{id}/schema``POST /modelTF/training-engines/{id}/health-check` | 引擎能力和健康 |

View File

@@ -43,7 +43,7 @@ LOG_RETENTION_DAYS=10
"@timestamp": "2026-07-16T13:20:10.123",
"level": "INFO",
"logger": "app.access",
"message": "request completed method=GET path=/api/v1/health status_code=200 duration_ms=3.12 client=127.0.0.1",
"message": "request completed method=GET path=/modelTF/health status_code=200 duration_ms=3.12 client=127.0.0.1",
"module": "logging",
"function": "request_logging_middleware",
"file": "D:\\AI\\codex-code\\YG_FT\\backend\\app\\core\\logging.py",

View File

@@ -271,7 +271,7 @@ compute/engines/openrlhf/
```env
APP_ENV=prod
API_PREFIX=/api
MODELTF_ROUTE_PREFIX=/modelTF
DATABASE_URL=postgresql+asyncpg://yg_ft:***@postgres:5432/yg_ft
REDIS_URL=redis://redis:6379/0
LOG_DIR=/opt/yg-ft/logs/backend
@@ -324,7 +324,7 @@ CUDA_VISIBLE_DEVICES=0,1,2,3
- PostgreSQL 已初始化 `docs/postgres-schema.sql`
- Redis 可连通。
- 后端 `GET /api/v1/health` 正常。
- 后端 `GET /modelTF/health` 正常。
- Compute API 健康检查正常。
- Compute Agent 能识别 GPU、显存、CUDA 版本。
- LLaMA-Factory 能在命令行完成最小训练样例。

View File

@@ -68,11 +68,11 @@ compute/
```
已覆盖能力:
- `/health``/api/v1/compute/health` 节点健康检查。
- `/compute/resources/gpus` GPU 状态模拟。
- `/compute/jobs` 创建、查询、停止训练任务。
- `/compute/jobs/{id}/logs` 拉取训练日志与解析指标。
- `/compute/files/upload``/compute/files/{id}/download` 文件网关占位。
- `/modelTF/health``/modelTF/v1/compute/health` 节点健康检查。
- `/modelTF/compute/resources/gpus` GPU 状态模拟。
- `/modelTF/compute/jobs` 创建、查询、停止训练任务。
- `/modelTF/compute/jobs/{id}/logs` 拉取训练日志与解析指标。
- `/modelTF/compute/files/upload``/modelTF/compute/files/{id}/download` 文件网关占位。
- LLaMA-Factory 参数校验、命令生成、日志指标解析。
设计约定:

View File

@@ -86,14 +86,14 @@ flowchart LR
| 方向 | 接口 | 说明 |
| --- | --- | --- |
| 应用 -> 算力 | `POST /compute/jobs` | 创建训练/评测/数据处理/推理任务 |
| 应用 -> 算力 | `POST /compute/jobs/{id}/stop` | 停止任务 |
| 应用 -> 算力 | `GET /compute/jobs/{id}` | 查询任务状态 |
| 应用 -> 算力 | `GET /compute/jobs/{id}/logs` | 拉取日志 |
| 应用 -> 算力 | `GET /compute/resources/gpus` | 查询 GPU 状态 |
| 应用 -> 算力 | `POST /compute/files/upload` | 上传文件到算力本地磁盘 |
| 应用 -> 算力 | `GET /compute/files/{object_id}/download` | 下载文件 |
| 应用 -> 算力 | `GET /compute/jobs?status=running` | 定时轮询任务状态、指标、产物索引 |
| 应用 -> 算力 | `POST /modelTF/compute/jobs` | 创建训练/评测/数据处理/推理任务 |
| 应用 -> 算力 | `POST /modelTF/compute/jobs/{id}/stop` | 停止任务 |
| 应用 -> 算力 | `GET /modelTF/compute/jobs/{id}` | 查询任务状态 |
| 应用 -> 算力 | `GET /modelTF/compute/jobs/{id}/logs` | 拉取日志 |
| 应用 -> 算力 | `GET /modelTF/compute/resources/gpus` | 查询 GPU 状态 |
| 应用 -> 算力 | `POST /modelTF/compute/files/upload` | 上传文件到算力本地磁盘 |
| 应用 -> 算力 | `GET /modelTF/compute/files/{object_id}/download` | 下载文件 |
| 应用 -> 算力 | `GET /modelTF/compute/jobs?status=running` | 定时轮询任务状态、指标、产物索引 |
## 3. 本地磁盘存储设计
@@ -556,54 +556,54 @@ LLaMA-Factory 适配器负责:
租户:
- `GET /api/tenants`
- `POST /api/tenants`
- `GET /api/tenants/{id}`
- `PUT /api/tenants/{id}`
- `PUT /api/tenants/{id}/quota`
- `PUT /api/tenants/{id}/retention-policy`
- `GET /modelTF/tenants`
- `POST /modelTF/tenants`
- `GET /modelTF/tenants/{id}`
- `PUT /modelTF/tenants/{id}`
- `PUT /modelTF/tenants/{id}/quota`
- `PUT /modelTF/tenants/{id}/retention-policy`
项目:
- `GET /api/projects`
- `POST /api/projects`
- `GET /api/projects/{id}`
- `PUT /api/projects/{id}`
- `POST /api/projects/{id}/archive`
- `GET /api/projects/{id}/members`
- `POST /api/projects/{id}/members`
- `PUT /api/projects/{id}/members/{user_id}`
- `DELETE /api/projects/{id}/members/{user_id}`
- `GET /modelTF/projects`
- `POST /modelTF/projects`
- `GET /modelTF/projects/{id}`
- `PUT /modelTF/projects/{id}`
- `POST /modelTF/projects/{id}/archive`
- `GET /modelTF/projects/{id}/members`
- `POST /modelTF/projects/{id}/members`
- `PUT /modelTF/projects/{id}/members/{user_id}`
- `DELETE /modelTF/projects/{id}/members/{user_id}`
资源授权:
- `GET /api/resources/{resource_type}/{resource_id}/acl`
- `PUT /api/resources/{resource_type}/{resource_id}/acl`
- `POST /api/resources/{resource_type}/{resource_id}/share`
- `GET /modelTF/resources/{resource_type}/{resource_id}/acl`
- `PUT /modelTF/resources/{resource_type}/{resource_id}/acl`
- `POST /modelTF/resources/{resource_type}/{resource_id}/share`
审批:
- `GET /api/approvals`
- `POST /api/approvals`
- `GET /api/approvals/{id}`
- `POST /api/approvals/{id}/approve`
- `POST /api/approvals/{id}/reject`
- `POST /api/approvals/{id}/cancel`
- `GET /modelTF/approvals`
- `POST /modelTF/approvals`
- `GET /modelTF/approvals/{id}`
- `POST /modelTF/approvals/{id}/approve`
- `POST /modelTF/approvals/{id}/reject`
- `POST /modelTF/approvals/{id}/cancel`
算力:
- `GET /api/compute/nodes`
- `GET /api/compute/gpus`
- `GET /api/compute/queue`
- `POST /api/compute/jobs/{id}/retry`
- `POST /api/compute/jobs/{id}/priority`
- `GET /modelTF/compute/nodes`
- `GET /modelTF/compute/gpus`
- `GET /modelTF/compute/queue`
- `POST /modelTF/compute/jobs/{id}/retry`
- `POST /modelTF/compute/jobs/{id}/priority`
训练引擎:
- `GET /api/training-engines`
- `GET /api/training-engines/{id}`
- `POST /api/training-engines/{id}/health-check`
- `GET /api/training-engines/{id}/schema`
- `GET /modelTF/training-engines`
- `GET /modelTF/training-engines/{id}`
- `POST /modelTF/training-engines/{id}/health-check`
- `GET /modelTF/training-engines/{id}/schema`
## 10. 端到端业务流程

View File

@@ -412,11 +412,11 @@ YG_FT/
联调接口:
- `GET /api/users`
- `POST /api/users`
- `PUT /api/users/{id}`
- `DELETE /api/users/{id}`
- `PUT /api/users/{id}/password`
- `GET /modelTF/users`
- `POST /modelTF/users`
- `PUT /modelTF/users/{id}`
- `DELETE /modelTF/users/{id}`
- `PUT /modelTF/users/{id}/password`
#### 项目空间
@@ -439,12 +439,12 @@ YG_FT/
联调接口:
- `GET /api/projects`
- `POST /api/projects`
- `GET /api/projects/{id}`
- `PUT /api/projects/{id}`
- `GET /api/projects/{id}/members`
- `POST /api/projects/{id}/members`
- `GET /modelTF/projects`
- `POST /modelTF/projects`
- `GET /modelTF/projects/{id}`
- `PUT /modelTF/projects/{id}`
- `GET /modelTF/projects/{id}/members`
- `POST /modelTF/projects/{id}/members`
#### 审批中心
@@ -466,10 +466,10 @@ YG_FT/
联调接口:
- `GET /api/approvals`
- `POST /api/approvals/{id}/approve`
- `POST /api/approvals/{id}/reject`
- `POST /api/approvals/{id}/cancel`
- `GET /modelTF/approvals`
- `POST /modelTF/approvals/{id}/approve`
- `POST /modelTF/approvals/{id}/reject`
- `POST /modelTF/approvals/{id}/cancel`
#### 算力资源中心
@@ -493,10 +493,10 @@ YG_FT/
联调接口:
- `GET /api/compute/gpus`
- `GET /api/compute/queue`
- `GET /api/compute/nodes`
- `GET /api/quotas/usage`
- `GET /modelTF/compute/gpus`
- `GET /modelTF/compute/queue`
- `GET /modelTF/compute/nodes`
- `GET /modelTF/quotas/usage`
### 5.2 现有页面改造
@@ -532,9 +532,9 @@ YG_FT/
交付接口:
- `POST /api/login`
- `POST /api/logout`
- `GET /api/me`
- `POST /modelTF/login`
- `POST /modelTF/logout`
- `GET /modelTF/me`
#### Tenant / Project 模块
@@ -548,9 +548,9 @@ YG_FT/
交付接口:
- `/api/tenants`
- `/api/projects`
- `/api/projects/{id}/members`
- `/modelTF/tenants`
- `/modelTF/projects`
- `/modelTF/projects/{id}/members`
#### Resource ACL 模块
@@ -562,8 +562,8 @@ YG_FT/
交付接口:
- `GET /api/resources/{resource_type}/{resource_id}/acl`
- `PUT /api/resources/{resource_type}/{resource_id}/acl`
- `GET /modelTF/resources/{resource_type}/{resource_id}/acl`
- `PUT /modelTF/resources/{resource_type}/{resource_id}/acl`
#### Compute Gateway 模块
@@ -581,16 +581,16 @@ YG_FT/
交付接口:
- `GET /api/compute/gpus`
- `GET /api/compute/queue`
- `GET/POST/PUT /api/compute/nodes`
- `POST /api/compute/nodes/{id}/test-connection`
- `POST /api/compute/nodes/{id}/enable`
- `POST /api/compute/nodes/{id}/disable`
- `POST /api/compute/nodes/{id}/drain`
- `GET /api/compute/nodes/{id}/replicas`
- `POST /api/internal/compute-sync/jobs/poll`
- `POST /api/internal/compute-sync/resources`
- `GET /modelTF/compute/gpus`
- `GET /modelTF/compute/queue`
- `GET/POST/PUT /modelTF/compute/nodes`
- `POST /modelTF/compute/nodes/{id}/test-connection`
- `POST /modelTF/compute/nodes/{id}/enable`
- `POST /modelTF/compute/nodes/{id}/disable`
- `POST /modelTF/compute/nodes/{id}/drain`
- `GET /modelTF/compute/nodes/{id}/replicas`
- `POST /modelTF/internal/compute-sync/jobs/poll`
- `POST /modelTF/internal/compute-sync/resources`
#### Fine Tune 模块
@@ -606,7 +606,7 @@ YG_FT/
交付接口:
- 沿用 `docs/backend-api-design.md``/api/fine-tune` 系列。
- 沿用 `docs/backend-api-design.md``/modelTF/fine-tune` 系列。
#### Approval 模块
@@ -619,8 +619,8 @@ YG_FT/
交付接口:
- `/api/approvals`
- `/api/approval-templates`
- `/modelTF/approvals`
- `/modelTF/approval-templates`
#### Audit 模块
@@ -634,8 +634,8 @@ YG_FT/
交付接口:
- `GET /api/audit-logs`
- `GET /api/login-logs`
- `GET /modelTF/audit-logs`
- `GET /modelTF/login-logs`
### 6.2 P1 模块
@@ -660,13 +660,13 @@ YG_FT/
接口:
- `POST /compute/jobs`
- `GET /compute/jobs/{id}`
- `POST /compute/jobs/{id}/stop`
- `GET /compute/jobs/{id}/logs`
- `GET /compute/resources/gpus`
- `POST /compute/files/upload`
- `GET /compute/files/{id}/download`
- `POST /modelTF/compute/jobs`
- `GET /modelTF/compute/jobs/{id}`
- `POST /modelTF/compute/jobs/{id}/stop`
- `GET /modelTF/compute/jobs/{id}/logs`
- `GET /modelTF/compute/resources/gpus`
- `POST /modelTF/compute/files/upload`
- `GET /modelTF/compute/files/{id}/download`
职责:
@@ -1044,66 +1044,66 @@ YG_FT/
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
| --- | --- | --- | --- | --- | --- |
| 登录和会话 | `/login` | 登录表单、错误提示、登录后跳转、会话过期处理 | `POST /api/login``GET /api/me`、JWT 中间件 | `users``login_sessions``v_user_effective_permissions` | 无 |
| 登录和会话 | `/login` | 登录表单、错误提示、登录后跳转、会话过期处理 | `POST /modelTF/login``GET /modelTF/me`、JWT 中间件 | `users``login_sessions``v_user_effective_permissions` | 无 |
| 主布局和权限菜单 | `/` | 菜单按权限过滤、用户信息、项目切换器 | 当前用户权限、当前项目上下文 | `permissions``role_permissions``project_members` | 登录 |
| 用户中心 | `/user-settings``/user-settings/create``/user-settings/:id/permission` | 用户列表、创建、禁用、重置密码、页面权限 | `/api/users` 系列 | `users``user_permissions``tenant_users` | 租户/项目 |
| 用户中心 | `/user-settings``/user-settings/create``/user-settings/:id/permission` | 用户列表、创建、禁用、重置密码、页面权限 | `/modelTF/users` 系列 | `users``user_permissions``tenant_users` | 租户/项目 |
| 无权限页 | `/permission-denied` | 无权限说明、返回入口 | 权限异常返回统一错误码 | 无新增 | 主布局 |
### 16.2 租户和项目空间
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
| --- | --- | --- | --- | --- | --- |
| 租户管理 | `/tenants``/tenants/:id` | 租户列表、创建/禁用、配额、留存策略 | `/api/tenants` 系列 | `tenants``tenant_users``quotas``retention_policies` | 用户中心 |
| 项目列表和详情 | `/projects``/projects/:id` | 项目列表、创建、归档、资源概览 | `/api/projects` 系列 | `projects``quota_usage` | 租户 |
| 项目成员 | `/projects/:id/members` | 成员列表、添加成员、角色选择 | `/api/projects/{id}/members` 系列 | `project_members` | 项目 |
| 资源授权 | `/projects/:id/permissions`、资源详情弹窗 | ACL 表格、用户/角色授权 | `/api/resources/{type}/{id}/acl` | `resource_acl` | 项目、资源表 |
| 租户管理 | `/tenants``/tenants/:id` | 租户列表、创建/禁用、配额、留存策略 | `/modelTF/tenants` 系列 | `tenants``tenant_users``quotas``retention_policies` | 用户中心 |
| 项目列表和详情 | `/projects``/projects/:id` | 项目列表、创建、归档、资源概览 | `/modelTF/projects` 系列 | `projects``quota_usage` | 租户 |
| 项目成员 | `/projects/:id/members` | 成员列表、添加成员、角色选择 | `/modelTF/projects/{id}/members` 系列 | `project_members` | 项目 |
| 资源授权 | `/projects/:id/permissions`、资源详情弹窗 | ACL 表格、用户/角色授权 | `/modelTF/resources/{type}/{id}/acl` | `resource_acl` | 项目、资源表 |
### 16.3 数据集和数据处理
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
| --- | --- | --- | --- | --- | --- |
| 数据集列表 | `/dataset` | 列表、搜索、项目过滤、下载、删除审批入口 | `GET/DELETE /api/dataset-manage` | `datasets``resource_acl``approval_instances` | 项目上下文 |
| 数据集创建/上传 | `/dataset/create``/dataset/:id/edit` | 表单、分片上传、离线导入弹窗 | `POST /api/dataset-manage``POST /api/files/upload-session``POST /api/import/local-dataset` | `datasets``dataset_files``storage_objects``file_upload_sessions``local_import_jobs` | 文件网关 |
| 数据集预览/版本 | `/dataset/:id/preview` | 文件列表、内容预览、版本栏、在线编辑 | `/api/dataset-manage/preview``/versions` 系列 | `dataset_file_versions``dataset_records` | 数据集上传 |
| 数据处理列表 | `/data-process` | 任务列表、状态、输出数据集跳转 | `/api/data-process` 系列 | `data_process_tasks` | 数据集 |
| 数据处理创建向导 | `/data-process/create` | 任务配置、模型选择、源文件、预览切片、生成、结果编辑、发布 | `/api/data-process/{id}/source-files``preview/build``generate``publish` | `data_process_source_files``data_process_preview_items``data_process_results` | 数据集、模型、文件网关 |
| 数据处理详情 | `/data-process/:id` | 运行统计、失败原因、结果表格 | `GET /api/data-process/{id}``results``events` | `data_process_tasks``data_process_results` | 数据处理任务 |
| 数据转换 | `/data-convert` | 文件上传、转换状态、下载 | `/api/data-convert/jobs` 系列 | `data_convert_jobs``storage_objects` | 文件网关 |
| 数据集列表 | `/dataset` | 列表、搜索、项目过滤、下载、删除审批入口 | `GET/DELETE /modelTF/dataset-manage` | `datasets``resource_acl``approval_instances` | 项目上下文 |
| 数据集创建/上传 | `/dataset/create``/dataset/:id/edit` | 表单、分片上传、离线导入弹窗 | `POST /modelTF/dataset-manage``POST /modelTF/files/upload-session``POST /modelTF/import/local-dataset` | `datasets``dataset_files``storage_objects``file_upload_sessions``local_import_jobs` | 文件网关 |
| 数据集预览/版本 | `/dataset/:id/preview` | 文件列表、内容预览、版本栏、在线编辑 | `/modelTF/dataset-manage/preview``/versions` 系列 | `dataset_file_versions``dataset_records` | 数据集上传 |
| 数据处理列表 | `/data-process` | 任务列表、状态、输出数据集跳转 | `/modelTF/data-process` 系列 | `data_process_tasks` | 数据集 |
| 数据处理创建向导 | `/data-process/create` | 任务配置、模型选择、源文件、预览切片、生成、结果编辑、发布 | `/modelTF/data-process/{id}/source-files``preview/build``generate``publish` | `data_process_source_files``data_process_preview_items``data_process_results` | 数据集、模型、文件网关 |
| 数据处理详情 | `/data-process/:id` | 运行统计、失败原因、结果表格 | `GET /modelTF/data-process/{id}``results``events` | `data_process_tasks``data_process_results` | 数据处理任务 |
| 数据转换 | `/data-convert` | 文件上传、转换状态、下载 | `/modelTF/data-convert/jobs` 系列 | `data_convert_jobs``storage_objects` | 文件网关 |
### 16.4 模型管理和训练
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
| --- | --- | --- | --- | --- | --- |
| 模型列表 | `/model-manage` | 列表、用途标签、授权、导出、删除审批 | `/api/model-manage` 系列 | `models``trained_models``resource_acl` | 项目上下文 |
| 模型创建/离线导入 | `/model-manage/create``/model-manage/:id/edit` | 本地/API 模型表单、离线导入 | `POST/PUT /api/model-manage``POST /api/import/local-model` | `models``storage_objects``local_import_jobs` | 文件网关 |
| 权重合并 | `/model-manage/merge` | 选择训练产物、合并状态 | `POST /api/model-manage/merge``GET /api/compute/jobs/{id}` | `trained_models``compute_jobs` | 算力平台 |
| 微调列表 | `/fine-tune` | 任务列表、停止、删除、日志入口 | `/api/fine-tune` 系列 | `fine_tune_tasks` | 模型、数据集 |
| 微调创建 | `/fine-tune/create` | 训练参数、GPU 选择、命令预览、审批提示 | `POST /api/fine-tune``POST /api/fine-tune/start``GET /api/compute/gpus` | `fine_tune_tasks``compute_jobs``gpu_allocations` | 算力平台、审批 |
| 训练日志和 checkpoint | `/training-log/:id` | 日志 tail、指标曲线、checkpoint、恢复/重试 | `GET /api/fine-tune/{id}/overview``checkpoints``resume``retry` | `fine_tune_metrics``fine_tune_checkpoints` | 训练任务 |
| 训练引擎管理 | `/training-engines` | 引擎列表、schema、健康检查 | `/api/training-engines` 系列 | `training_engines` | 算力 Agent |
| 模型列表 | `/model-manage` | 列表、用途标签、授权、导出、删除审批 | `/modelTF/model-manage` 系列 | `models``trained_models``resource_acl` | 项目上下文 |
| 模型创建/离线导入 | `/model-manage/create``/model-manage/:id/edit` | 本地/API 模型表单、离线导入 | `POST/PUT /modelTF/model-manage``POST /modelTF/import/local-model` | `models``storage_objects``local_import_jobs` | 文件网关 |
| 权重合并 | `/model-manage/merge` | 选择训练产物、合并状态 | `POST /modelTF/model-manage/merge``GET /modelTF/compute/jobs/{id}` | `trained_models``compute_jobs` | 算力平台 |
| 微调列表 | `/fine-tune` | 任务列表、停止、删除、日志入口 | `/modelTF/fine-tune` 系列 | `fine_tune_tasks` | 模型、数据集 |
| 微调创建 | `/fine-tune/create` | 训练参数、GPU 选择、命令预览、审批提示 | `POST /modelTF/fine-tune``POST /modelTF/fine-tune/start``GET /modelTF/compute/gpus` | `fine_tune_tasks``compute_jobs``gpu_allocations` | 算力平台、审批 |
| 训练日志和 checkpoint | `/training-log/:id` | 日志 tail、指标曲线、checkpoint、恢复/重试 | `GET /modelTF/fine-tune/{id}/overview``checkpoints``resume``retry` | `fine_tune_metrics``fine_tune_checkpoints` | 训练任务 |
| 训练引擎管理 | `/training-engines` | 引擎列表、schema、健康检查 | `/modelTF/training-engines` 系列 | `training_engines` | 算力 Agent |
### 16.5 评测、推理和发布
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
| --- | --- | --- | --- | --- | --- |
| 评测列表 | `/model-eval` | 列表、分数、状态、删除 | `/api/model-eval` 系列 | `eval_tasks` | 模型、数据集 |
| 评测创建 | `/model-eval/create` | 模型/数据集/维度/GPU 选择、指标配置 | `POST /api/model-eval/start``GET /api/dimension` | `eval_tasks``eval_dimensions``compute_jobs` | 算力平台 |
| 评测详情 | `/model-eval/:id` | 综合评价、维度汇总、样本结果、人工复核预留 | `GET /api/model-eval/{id}``events` | `eval_sample_results``eval_dimension_summaries` | 评测任务 |
| 评测维度 | `/model-eval/dimension/:id/edit` | 维度表单、Prompt 编辑 | `/api/dimension` 系列 | `eval_dimensions` | 模型管理 |
| 推理列表/创建 | `/model-inference``/model-inference/create` | 任务列表、模型选择、GPU 选择、加载状态 | `/api/model-compare``load/unload` | `inference_tasks``inference_task_models` | 算力平台 |
| 评测列表 | `/model-eval` | 列表、分数、状态、删除 | `/modelTF/model-eval` 系列 | `eval_tasks` | 模型、数据集 |
| 评测创建 | `/model-eval/create` | 模型/数据集/维度/GPU 选择、指标配置 | `POST /modelTF/model-eval/start``GET /modelTF/dimension` | `eval_tasks``eval_dimensions``compute_jobs` | 算力平台 |
| 评测详情 | `/model-eval/:id` | 综合评价、维度汇总、样本结果、人工复核预留 | `GET /modelTF/model-eval/{id}``events` | `eval_sample_results``eval_dimension_summaries` | 评测任务 |
| 评测维度 | `/model-eval/dimension/:id/edit` | 维度表单、Prompt 编辑 | `/modelTF/dimension` 系列 | `eval_dimensions` | 模型管理 |
| 推理列表/创建 | `/model-inference``/model-inference/create` | 任务列表、模型选择、GPU 选择、加载状态 | `/modelTF/model-compare``load/unload` | `inference_tasks``inference_task_models` | 算力平台 |
| 推理对话 | `/model-inference/chat/:id` | 单模型流式对话、历史消息 | `stream-chat``chat-with-port` | `chat_sessions``chat_messages` | 推理服务 |
| 模型对比 | `/model-compare/chat/:id``/model-compare/result` | 多模型对话、结果对比 | `/api/model-chat/*` | `chat_sessions``chat_messages` | 推理任务 |
| 模型服务治理 | `/model-services``/model-services/:id` | 测试/生产服务、发布申请、下线、调用统计 | `POST /api/approvals``GET /api/usage/summary` | `model_services``approval_instances` | 审批、算力平台 |
| 模型对比 | `/model-compare/chat/:id``/model-compare/result` | 多模型对话、结果对比 | `/modelTF/model-chat/*` | `chat_sessions``chat_messages` | 推理任务 |
| 模型服务治理 | `/model-services``/model-services/:id` | 测试/生产服务、发布申请、下线、调用统计 | `POST /modelTF/approvals``GET /modelTF/usage/summary` | `model_services``approval_instances` | 审批、算力平台 |
### 16.6 审批、审计、算力和存储运维
| 工作包 | 页面/路由 | 前端开发 | 后端开发 | DB 关联 | 依赖 |
| --- | --- | --- | --- | --- | --- |
| 审批中心 | `/approvals``/approvals/pending``/approvals/mine``/approvals/:id` | 审批列表、详情、通过/驳回/撤回 | `/api/approvals` 系列 | `approval_instances``approval_steps` | 用户、项目 |
| 审批模板 | `/approval-settings` | 动作策略、审批人规则、超时配置 | `/api/approval-templates` 系列 | `approval_templates` | 租户/项目 |
| 算力资源中心 | `/compute``/compute/gpus``/compute/queue``/compute/nodes` | GPU 卡片、节点状态、队列、优先级、节点新增/编辑、连接测试、启用/禁用、维护模式、节点权重/标签、本地资源副本 | `/api/compute/*``/compute/*` 内部接口 | `compute_nodes``compute_node_engines``gpu_devices``compute_jobs``gpu_allocations``resource_replicas``resource_sync_jobs` | Compute API/Agent/File Gateway |
| 存储管理 | `/storage` | 磁盘占用、大文件、临时文件、checkpoint 清理 | `GET /api/quotas/usage``GET/PUT /api/retention-policies` | `storage_nodes``storage_objects``cleanup_jobs``retention_policies` | 文件网关 |
| 审计中心 | `/audit-logs``/login-logs``/download-logs` | 筛选、详情、导出 | `GET /api/audit-logs``GET /api/login-logs``GET /api/download-logs` | `audit_logs``login_sessions` | 审计中间件 |
| 审批中心 | `/approvals``/approvals/pending``/approvals/mine``/approvals/:id` | 审批列表、详情、通过/驳回/撤回 | `/modelTF/approvals` 系列 | `approval_instances``approval_steps` | 用户、项目 |
| 审批模板 | `/approval-settings` | 动作策略、审批人规则、超时配置 | `/modelTF/approval-templates` 系列 | `approval_templates` | 租户/项目 |
| 算力资源中心 | `/compute``/compute/gpus``/compute/queue``/compute/nodes` | GPU 卡片、节点状态、队列、优先级、节点新增/编辑、连接测试、启用/禁用、维护模式、节点权重/标签、本地资源副本 | `/modelTF/compute/*``/modelTF/compute/*` 内部接口 | `compute_nodes``compute_node_engines``gpu_devices``compute_jobs``gpu_allocations``resource_replicas``resource_sync_jobs` | Compute API/Agent/File Gateway |
| 存储管理 | `/storage` | 磁盘占用、大文件、临时文件、checkpoint 清理 | `GET /modelTF/quotas/usage``GET/PUT /modelTF/retention-policies` | `storage_nodes``storage_objects``cleanup_jobs``retention_policies` | 文件网关 |
| 审计中心 | `/audit-logs``/login-logs``/download-logs` | 筛选、详情、导出 | `GET /modelTF/audit-logs``GET /modelTF/login-logs``GET /modelTF/download-logs` | `audit_logs``login_sessions` | 审计中间件 |
### 16.7 页面开发优先级建议

View File

@@ -89,10 +89,10 @@ export const downloadFileUrl = (
fileId: string | number,
versionId?: string,
) => {
const baseUrl = `/api/dataset-manage/download/${datasetId}/${fileId}`
const baseUrl = `/modelTF/dataset-manage/download/${datasetId}/${fileId}`
return versionId ? `${baseUrl}?version_id=${encodeURIComponent(versionId)}` : baseUrl
}
/** 打包下载数据集 URL */
export const downloadDatasetUrl = (datasetId: string | number) =>
`/api/dataset-manage/download/${datasetId}`
`/modelTF/dataset-manage/download/${datasetId}`

View File

@@ -45,4 +45,4 @@ export const mergeModel = (data: {
/** 导出已训练模型权重 */
export const exportModelUrl = (modelName: string) =>
`/api/model-manage/trained-models/${encodeURIComponent(modelName)}/export`
`/modelTF/model-manage/trained-models/${encodeURIComponent(modelName)}/export`

View File

@@ -12,8 +12,8 @@ export interface ApiResult<T = any> {
}
const service: AxiosInstance = axios.create({
// Use a relative path; Vite proxies /api to http://localhost:17861 in local development.
baseURL: '/api',
// Use a relative path; Vite proxies /modelTF to http://localhost:17861 in local development.
baseURL: '/modelTF',
timeout: 30000,
})

View File

@@ -24,8 +24,8 @@ export default defineConfig({
server: {
port: 16801,
proxy: {
// Frontend uses /api and proxies to the local five-digit backend port.
'/api': {
// Frontend uses /modelTF and proxies to the local five-digit backend port.
'/modelTF': {
target: 'http://localhost:17861',
changeOrigin: true,
},