# YG_FT 模型微调平台测试脚本 ## 环境准备 ### 启动顺序 1. **数据库**:远程 PostgreSQL `www.caoxiaozhu.com:5432`(已就绪) 2. **后端**: ```cmd cd /d E:\yg_ft\backend set COMPUTE_STATUS_SYNC_MODE=off .\.venv\Scripts\python.exe -m uvicorn app.main:app --reload --port 17861 ``` 3. **算力服务**(Docker): ```cmd cd /d E:\yg_ft\docker\compute docker compose up -d ``` 4. **前端**: ```cmd cd /d E:\yg_ft\frontend npm run dev ``` ### 验证服务可用性 | 服务 | 验证命令 | 期望结果 | |------|---------|---------| | 后端 | `curl http://localhost:17861/modelTF/health` | `{"code":0,...,"data":{"cpu_percent":x,...}}` | | 算力 | `curl http://localhost:19100/health` | `{"status":"ok","compute_host_id":"gpu-node-01"}` | | 前端 | 浏览器打开 `http://localhost:16801` | 跳转登录页 | --- ## 一、登录与认证 ### 1.1 登录 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 打开 `http://localhost:16801` | 显示登录页,不自动登录 | | 2 | 输入账号 `admin`,密码 `admin123`,点击登录 | 提示"登录成功",跳转看板页 | | 3 | F12 控制台执行 `localStorage.getItem('sessionId')` | 有值(非 null) | | 4 | 浏览器 Network 查看 `/modelTF/login` 响应 | 返回 `token`、`user`、`session_id` | ### 1.2 退出登录 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击侧边栏底部"退出登录"按钮 | 跳转登录页 | | 2 | F12 控制台执行 `localStorage.getItem('currentUser')` | 返回 null | | 3 | 浏览器 Network 查看 `/modelTF/logout` 请求 | 状态 200 | ### 1.3 会话超时 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 登录后切到其他软件,等待 5 分钟以上 | — | | 2 | 切回浏览器 | 提示"登录已过期",跳转登录页 | --- ## 二、看板 ### 2.1 服务状态 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 登录后进入看板页 | 显示 7 个服务:模型训练/模型评测/模型推理/模型管理/数据集管理/数据处理/数据类型转换 | | 2 | 检查每个服务状态 | 全部显示"正常" | | 3 | 检查实例数 | 模型管理有数量、数据集管理有数量等 | ### 2.2 运行中任务 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 查看顶部"运行中任务"数字 | 显示训练+评测+数据处理中 running 状态的任务总数 | | 2 | 无运行任务时 | 显示 0 | ### 2.3 用户操作分布 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 查看饼图 | 4 个分类(数据处理/模型训练/模型评测/模型推理)各一色 | | 2 | 无数据时 | 4 等分(各 25%) | | 3 | 点击侧边栏"模型训练"菜单,回到看板 | 模型训练权重增加 | | 4 | 点击"模型推理"菜单,回到看板 | 模型推理权重增加 | | 5 | 浏览器控制台执行 `sessionStorage.clear()` 后重试 | 去重缓存清除,可再次记录 | ### 2.4 登录时长排行 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 查看柱状图 | 显示当前登录用户,时长 > 0 | | 2 | 条形图上无文字标签 | 只在鼠标悬浮时显示 tooltip | | 3 | Y 轴用户名清晰可读 | 字体颜色 `#1f2937`,非模糊 | ### 2.5 顶部状态栏 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 查看顶部 CPU/内存/磁盘 | 显示真实数值(非 0) | | 2 | 等待 30 秒 | 数值自动刷新 | --- ## 三、租户管理 ### 3.1 列表 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 平台治理 → 租户管理 | 显示列表(名称/用户ID/状态/创建时间) | | 2 | 检查列名 | "编码"已改为"用户ID" | | 3 | 检查操作列 | 有"详情"和"删除"按钮,无"配额"按钮 | ### 3.2 新建租户 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"新建租户" | 弹窗显示:名称、用户ID、GPU数量、存储配额、最大项目数 | | 2 | 填写名称"测试租户",GPU=2,存储=100,项目=5,点击创建 | 提示"租户创建成功",列表新增一行 | ### 3.3 租户详情与配额 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"详情" | 跳转详情页,显示基本信息 + 配额 | | 2 | 配额显示格式 | `GPU 2 | 存储 100GB | 项目 5` | | 3 | 修改配额数字,点击"保存配额" | 提示"配额已保存" | | 4 | 检查详情页无"项目空间"卡片 | 已移除 | ### 3.4 删除租户 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 在列表页点击"删除" | 弹出确认框 | | 2 | 点击"确定删除" | 提示"租户已删除",列表刷新 | --- ## 四、项目空间 ### 4.1 列表 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 项目空间 | 显示列表(项目名/编码ID/状态/描述/创建时间) | | 2 | 检查列名 | "编码"已改为"编码ID" | | 3 | 顶部有租户筛选下拉框 | 可按租户过滤 | ### 4.2 新建项目 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"新建项目" | 弹窗显示:名称、编码ID(下拉)、描述 | | 2 | 编码ID下拉选项 | 显示已有租户的编码 | | 3 | 选择编码ID后提交 | 提示"项目创建成功" | ### 4.3 项目详情 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"详情" | 显示基本信息 | | 2 | 查看成员管理区域 | 显示成员列表 + 添加成员按钮 | | 3 | 点击"资源授权(ACL)" | 弹窗显示 ACL 编辑器 | ### 4.4 ACL 授权 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"添加授权项" | 新增一行 | | 2 | 主体类型选"用户" | 显示用户下拉框(非文本输入) | | 3 | 主体类型选"项目角色" | 显示角色下拉框(member/admin/viewer) | | 4 | 勾选权限后保存 | 提示"ACL 已保存" | ### 4.5 删除项目 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"删除" | 确认弹窗 | | 2 | 确认删除 | 提示"项目已删除" | --- ## 五、算力节点 ### 5.1 节点列表 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 算力节点 | 显示节点列表 | | 2 | 检查 gpu-node-01 | 状态为启用 | ### 5.2 测试连接 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击 gpu-node-01 的"测试"按钮 | 提示"连接成功,发现 X 张 GPU,延迟 Xms" | | 2 | 检查 GPU Tab | 显示 GPU 资源列表 | ### 5.3 节点启停 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"停用" | 节点状态变为停用 | | 2 | 点击"启用" | 节点状态变为启用 | --- ## 六、用户设置 ### 6.1 用户列表 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 系统设置 → 用户设置 | 显示用户列表 | | 2 | admin 用户 | 不可停用、不可删除 | ### 6.2 创建用户 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"创建用户" | 跳转创建页 | | 2 | 填写账号/显示名/密码/角色/权限 | 表单正常 | | 3 | 提交 | 提示创建成功,列表新增 | ### 6.3 权限分配 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击某用户"页面权限" | 弹窗显示 12 个权限 checkbox | | 2 | 取消某权限,保存 | 该用户侧边栏不再显示对应菜单 | ### 6.4 重置密码 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 点击"重置密码" | 弹窗显示默认密码 `Platform@123` | | 2 | 确认 | 提示重置成功 | --- ## 七、审批管理 ### 7.1 审批模板 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 审批模板 | 显示模板列表 | | 2 | 点击新建 | 弹窗显示名称 + 步骤 JSON | | 3 | 填写并提交 | 列表新增 | ### 7.2 审批中心 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 审批中心 | 显示实例列表 | | 2 | 按状态筛选 | 列表过滤正常 | | 3 | 对 pending 实例点"通过/拒绝" | 弹窗填写意见,提交后状态变更 | --- ## 八、审计日志 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 审计日志 | 显示日志列表 | | 2 | 填写筛选条件查询 | 列表过滤 | | 3 | 点击"导出" | 下载 CSV 文件 | --- ## 九、平台性能 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 平台性能 | 显示 CPU/内存/磁盘/GPU 卡片 | | 2 | 数据非 0 | 与本机实际使用率一致 | | 3 | 开启自动刷新(3秒) | 趋势图实时更新 | | 4 | 点击 GPU 卡片 | 弹出详情抽屉 | --- ## 十、查看日志 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 侧边栏 → 查看日志 | 显示系统日志 Tab | | 2 | 选择日期和文件 | 显示日志内容 | | 3 | 输入关键词搜索 | 高亮匹配 | | 4 | 切换到训练日志 Tab | 显示训练日志列表 | --- ## 十一、数据流主链路 ### 11.1 数据集管理 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 进入数据集管理 | 显示列表 | | 2 | 新建数据集 | 创建成功 | | 3 | 上传文件 | 文件上传成功 | | 4 | 预览文件 | 显示内容 | ### 11.2 数据处理 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 进入数据处理 | 显示任务列表 | | 2 | 创建数据处理任务 | 创建成功 | | 3 | 启动任务 | 状态变为 running | | 4 | 回到看板 | "运行中任务"数字 +1 | ### 11.3 模型训练 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 进入模型训练 | 显示训练任务列表 | | 2 | 创建训练任务 | 选择数据集 + 模型 + GPU | | 3 | 启动训练 | 状态变为 running | | 4 | 查看训练日志 | 显示实时日志 | | 5 | 训练完成 | 产出模型 | ### 11.4 模型评测 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 进入模型评测 | 显示评测任务列表 | | 2 | 创建评测任务 | 选择模型 + 数据集 | | 3 | 启动评测 | 状态变为 running | | 4 | 评测完成 | 显示指标结果 | ### 11.5 模型推理 | 步骤 | 操作 | 预期结果 | |------|------|---------| | 1 | 进入模型推理 | 显示推理会话列表 | | 2 | 创建推理任务 | 选择模型 + 加载 | | 3 | 开始对话 | 返回模型回复 | --- ## 十二、异常场景 | 场景 | 操作 | 预期结果 | |------|------|---------| | 数据库断开 | 停止远程数据库连接 | 所有接口返回 500 | | 算力服务停掉 | `docker compose down` | 算力测试返回失败 | | 未登录访问 | 直接访问 `/dashboard` | 跳转登录页 | | 权限不足 | 普通用户访问用户设置 | 跳转 403 页面 | | Token 过期 | 清掉 localStorage 后刷新 | 跳转登录页 |