# MVP（模块化结构）

本目录是 MVP 的“按功能模块”组织后的最终入口（替代原 `v1.1/`、`v2.0/` 版本目录）。

目录：
- `py/`：Python 代码（`argus.*` 包）
  - `argus.ray`：Ray Jobs SDK submitter core（提交/查询/停止/日志）
  - `argus.service`：API + scheduler + SQLite（服务层队列/重试/状态聚合）
  - `argus.cli`：CLI 工具（用于脚本化提交/调试）
- `configs/`：配置（`ray:` 与 `service:` 两段，纯 YAML 风格）
- `taskspecs/`：TaskSpec（训练任务语义参数）
- `scripts/`：宿主机脚本（docker compose/exec 编排）
- `docker-compose.yaml`：dev 环境容器定义（head+workers）

快速开始：
- CLI 提交流程：`scripts/run_all_cli.sh`
- API 提交流程：`scripts/run_all_api.sh`
- v2.5（Stateless worker + user 隔离 jobs）E2E：`scripts/run_all_v25_api.sh`
- v3.0（WebUI + SFTPGo + user datasets/models + jobs retention）E2E：`scripts/run_all_v30_api.sh`

v3.0 访问入口（dev/h1）：
- WebUI：`http://127.0.0.1:8080/ui`
- Ray Dashboard：`http://127.0.0.1:8265`
- SFTPGo：
  - SFTP：`127.0.0.1:2022`
  - Admin API/UI：`http://127.0.0.1:8081`（容器内 8080，host 映射到 8081 避免与 API server 冲突）

v3.8（Ray Serve LLM / vLLM 模型服务）：
- 推理端口：`8000`（Ray Serve HTTP）
- OpenAI-compatible endpoint：`http://127.0.0.1:8000/v1`
  - 注意：v3.8 推理接口**不做鉴权**
- E2E 脚本：`scripts/run_all_v38_serving.sh`
