From bccd3bf448692d17b122bae7fba0906f6d358f5c Mon Sep 17 00:00:00 2001 From: wuyongtao Date: Tue, 21 Jul 2026 10:09:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E3=80=81Docker=E9=83=A8=E7=BD=B2=E3=80=81API?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=8F=8A=E5=A4=9A=E9=A1=B9=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新后端 main.py、config.py 核心配置 - 更新 compute API 模块 - 更新 Docker 部署配置(app/compute docker-compose、nginx、环境变量) - 更新前端 API 模块(dataset、model、request)及 vite 配置 - 更新多项项目文档(架构、部署、开发计划、日志等) Co-Authored-By: Claude --- README.md | 16 +- backend/README.md | 4 +- backend/app/core/config.py | 2 +- backend/app/main.py | 2 +- compute/api/main.py | 25 +- docker/README.md | 6 +- docker/app/.env.example | 4 +- docker/app/docker-compose.yml | 6 +- docker/compute/.env.example | 1 + docker/compute/docker-compose.yml | 3 +- docker/nginx.conf.template | 6 +- docs/backend-api-design.md | 484 ++++++++++----------- docs/backend-logging.md | 2 +- docs/deployment-plan.md | 4 +- docs/first-version-development-plan.md | 10 +- docs/platform-architecture-requirements.md | 82 ++-- docs/system-development-plan.md | 162 +++---- frontend/src/api/modules/dataset.ts | 4 +- frontend/src/api/modules/model.ts | 2 +- frontend/src/api/request.ts | 4 +- frontend/vite.config.ts | 4 +- 21 files changed, 418 insertions(+), 415 deletions(-) diff --git a/README.md b/README.md index 498e0e1..5e49720 100644 --- a/README.md +++ b/README.md @@ -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`。 ## 算力服务启动 diff --git a/backend/README.md b/backend/README.md index 0b10132..a328320 100644 --- a/backend/README.md +++ b/backend/README.md @@ -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 ``` ## 日志 diff --git a/backend/app/core/config.py b/backend/app/core/config.py index c6f6703..9472ce8 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -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") diff --git a/backend/app/main.py b/backend/app/main.py index a9978cf..5680303 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -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 diff --git a/compute/api/main.py b/compute/api/main.py index 60e286a..9370b6b 100644 --- a/compute/api/main.py +++ b/compute/api/main.py @@ -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 diff --git a/docker/README.md b/docker/README.md index 6362267..672a856 100644 --- a/docker/README.md +++ b/docker/README.md @@ -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://:19100/health -GET http://:19100/api/v1/compute/health +GET http://:19100/modelTF/health +GET http://:19100/modelTF/v1/compute/health ``` 算力侧代码和数据外挂: diff --git a/docker/app/.env.example b/docker/app/.env.example index df3a898..bea8bd3 100644 --- a/docker/app/.env.example +++ b/docker/app/.env.example @@ -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 diff --git a/docker/app/docker-compose.yml b/docker/app/docker-compose.yml index c6b29d0..ff853cd 100644 --- a/docker/app/docker-compose.yml +++ b/docker/app/docker-compose.yml @@ -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 diff --git a/docker/compute/.env.example b/docker/compute/.env.example index 866b3c8..b5b6d36 100644 --- a/docker/compute/.env.example +++ b/docker/compute/.env.example @@ -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 diff --git a/docker/compute/docker-compose.yml b/docker/compute/docker-compose.yml index 90dc3a5..e2fe8b1 100644 --- a/docker/compute/docker-compose.yml +++ b/docker/compute/docker-compose.yml @@ -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 diff --git a/docker/nginx.conf.template b/docker/nginx.conf.template index 5a4dc65..1137000 100644 --- a/docker/nginx.conf.template +++ b/docker/nginx.conf.template @@ -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; @@ -27,4 +27,4 @@ server { expires 30d; add_header Cache-Control "public, immutable"; } -} \ No newline at end of file +} diff --git a/docs/backend-api-design.md b/docs/backend-api-design.md index 4ac2155..0aa86b8 100644 --- a/docs/backend-api-design.md +++ b/docs/backend-api-design.md @@ -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` | 引擎能力和健康 | diff --git a/docs/backend-logging.md b/docs/backend-logging.md index babc044..809a64b 100644 --- a/docs/backend-logging.md +++ b/docs/backend-logging.md @@ -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", diff --git a/docs/deployment-plan.md b/docs/deployment-plan.md index 38c1cf9..3370fa2 100644 --- a/docs/deployment-plan.md +++ b/docs/deployment-plan.md @@ -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 能在命令行完成最小训练样例。 diff --git a/docs/first-version-development-plan.md b/docs/first-version-development-plan.md index 98054b1..490f034 100644 --- a/docs/first-version-development-plan.md +++ b/docs/first-version-development-plan.md @@ -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 参数校验、命令生成、日志指标解析。 设计约定: diff --git a/docs/platform-architecture-requirements.md b/docs/platform-architecture-requirements.md index 176dbf0..ec756bc 100644 --- a/docs/platform-architecture-requirements.md +++ b/docs/platform-architecture-requirements.md @@ -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. 端到端业务流程 diff --git a/docs/system-development-plan.md b/docs/system-development-plan.md index a25f91e..a033b66 100644 --- a/docs/system-development-plan.md +++ b/docs/system-development-plan.md @@ -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 页面开发优先级建议 diff --git a/frontend/src/api/modules/dataset.ts b/frontend/src/api/modules/dataset.ts index e15c30b..546a4cf 100644 --- a/frontend/src/api/modules/dataset.ts +++ b/frontend/src/api/modules/dataset.ts @@ -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}` diff --git a/frontend/src/api/modules/model.ts b/frontend/src/api/modules/model.ts index 68aa240..6006b94 100644 --- a/frontend/src/api/modules/model.ts +++ b/frontend/src/api/modules/model.ts @@ -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` diff --git a/frontend/src/api/request.ts b/frontend/src/api/request.ts index 9bd26c0..412a4cb 100644 --- a/frontend/src/api/request.ts +++ b/frontend/src/api/request.ts @@ -12,8 +12,8 @@ export interface ApiResult { } 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, }) diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 98143be..0dc2a57 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -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, },