- 8张llm_前缀表(手写幂等DDL): vendor/account/model/api_profile/org_policy/org_quota/user_quota/usage - gateway.py 门禁链: 限流→限额→策略选模型(主备容错)→账号×端点轮转(偏好过滤+余额加权+冷却避让)→预授权-结算 - api_key AES单层加密(非RC4,盐不对称不可解); 限流Redis分钟窗口(db4) fail-open - 双维度记账: 一次调用同行记cost(账号侧)+charge(组织池侧); 充值=recharge行 - CRUD+index.ui 8卡片导航+总览; appcodes字典5组; 设计规范+30测试用例 - 策略即开关: 机构无策略→__LEGACY__走旧llm表(向后兼容零改动)
67 lines
3.9 KiB
Markdown
67 lines
3.9 KiB
Markdown
# pipeline-llm 测试用例(部署到测试环境后全部执行)
|
||
|
||
> 测试环境:pipeline@pipeline.opencomputing.cn /d/pipeline/pipeline-app
|
||
> 验收标准:浏览器真实执行(curl 不算通过)+ 数据库事实核验
|
||
|
||
## A. 部署与集成(5 例)
|
||
|
||
| # | 用例 | 步骤 | 预期 |
|
||
|---|---|---|---|
|
||
| A1 | 服务启动 | 重启 pipeline_app | 9090 返回 200,日志有 `[pipeline_llm] loaded` |
|
||
| A2 | 建表完整 | SHOW TABLES LIKE 'llm\_%' | 8 张表齐全 |
|
||
| A3 | 菜单入口 | 浏览器登录→主菜单 | 「模型管理」项存在,点击打开 /llm 页面(非空白) |
|
||
| A4 | RBAC | 未登录访问 /llm/index.ui | 401/跳转登录;登录后 200 |
|
||
| A5 | 兼容回退 | 现有驾驶舱对话(走旧 llm 表模型) | 正常回复,不因新模块中断 |
|
||
|
||
## B. 供给侧配置(6 例)
|
||
|
||
| # | 用例 | 步骤 | 预期 |
|
||
|---|---|---|---|
|
||
| B1 | 供应商+端点目录 | 建供应商,endpoints 配国内+国外两端点 | 保存成功,列表可见两端点 |
|
||
| B2 | 账号+充值 | 建账号绑定 B1 供应商,选国内端点,充值 100 | balance=100,total_recharge=100,流水有 recharge 行 |
|
||
| B3 | api_key 加密 | 查库 B2 账号 api_key | 密文(非明文),调用时能解密使用 |
|
||
| B4 | 模型注册+挂定价 | 建模型挂 vendor+ppid+capability=t2t | 保存成功,ppid 关联可见 |
|
||
| B5 | 适配模板 | 内置 openai-chat profile 存在 | request/response 模板非空,参数 schema 合法 |
|
||
| B6 | 端点探测 | 账号选用不存在的端点下标 | 保存时校验拒绝(防死配置) |
|
||
|
||
## C. 需求侧治理(5 例)
|
||
|
||
| # | 用例 | 步骤 | 预期 |
|
||
|---|---|---|---|
|
||
| C1 | 组织策略 | 建组织策略:主模型=B4,备模型空,端点 any | 保存成功 |
|
||
| C2 | 组织充值 | 组织池充值 50 | balance=50,流水有记录 |
|
||
| C3 | 个人限额 | 建个人配额:额度 10、QPM 5 | 保存成功 |
|
||
| C4 | 组织限流 | 同组织 1 分钟内发起 >QPM 次调用 | 超限请求返回「组织限流」明确错误 |
|
||
| C5 | 个人限额耗尽 | 个人连续调用至额度用完 | 后续请求返回「个人额度不足」,不影响同组织他人 |
|
||
|
||
## D. 调用门禁链(7 例)
|
||
|
||
| # | 用例 | 步骤 | 预期 |
|
||
|---|---|---|---|
|
||
| D1 | 正常调用 | 配置齐全后发起一次对话调用 | 成功返回,usage 流水 1 条(双维度金额>0) |
|
||
| D2 | 预授权结算 | D1 调用前后查组织池余额 | 冻结→释放,最终扣减=实际 charge |
|
||
| D3 | 账号余额不足跳过 | 账号 A 余额 0、账号 B 有余额 | 调用自动走 B,A 不消耗 |
|
||
| D4 | 429 轮转 | mock 账号 A 端点返回 429 | 自动切同账号另一端点或账号 B,调用成功 |
|
||
| D5 | 主备容错 | 主模型全部账号不可用 | 自动降备模型,调用成功,日志记录降级 |
|
||
| D6 | must 端点 | 策略 must_domestic,仅国际端点可用 | 报错冒泡(绝不跨端点),错误信息明确 |
|
||
| D7 | 机构未配置 | 无策略无余额的机构调用 | 冒泡提示「未配置模型/余额」,不静默失败 |
|
||
|
||
## E. 记账与用量(4 例)
|
||
|
||
| # | 用例 | 步骤 | 预期 |
|
||
|---|---|---|---|
|
||
| E1 | 双维度流水 | D1 后查 llm_usage | 同行含成本侧 cost + 消费侧 charge,ppid 冗余正确 |
|
||
| E2 | 账号对账 | 账号余额 = 充值 - Σcost | 数值吻合 |
|
||
| E3 | 组织对账 | 组织池余额 = 充值 - Σcharge | 数值吻合 |
|
||
| E4 | 用量查询页 | 用量列表按组织/模型/时间筛选 | 筛选结果正确,金额汇总与流水一致 |
|
||
|
||
## F. 回归(3 例)
|
||
|
||
| # | 用例 | 步骤 | 预期 |
|
||
|---|---|---|---|
|
||
| F1 | 待办动态表单 | 触发冒泡→待办内提交 | 既有功能不受影响 |
|
||
| F2 | 工作空间 | 开发产线打开工作空间 | 仓库树正常(本模块改动不波及) |
|
||
| F3 | 驾驶舱对话 | 完整一轮开发产线对话 | 正常,模型解析走新链路 |
|
||
|
||
**共计 30 例**。执行报告逐条记录:实际命令/截图路径 + 数据库核验结果 + 结论(通过/失败/跳过及原因)。
|