pipeline-llm/docs/test-cases.md
yumoqing 660ad21365 feat(pipeline-llm): 模型治理模块v1.0.0 — 供应商/端点目录/账号钱包/模型注册/组织容错策略/限额限流/双维度记账
- 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表(向后兼容零改动)
2026-09-01 17:27:17 +08:00

67 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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=100total_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 有余额 | 调用自动走 BA 不消耗 |
| D4 | 429 轮转 | mock 账号 A 端点返回 429 | 自动切同账号另一端点或账号 B调用成功 |
| D5 | 主备容错 | 主模型全部账号不可用 | 自动降备模型,调用成功,日志记录降级 |
| D6 | must 端点 | 策略 must_domestic仅国际端点可用 | 报错冒泡(绝不跨端点),错误信息明确 |
| D7 | 机构未配置 | 无策略无余额的机构调用 | 冒泡提示「未配置模型/余额」,不静默失败 |
## E. 记账与用量4 例)
| # | 用例 | 步骤 | 预期 |
|---|---|---|---|
| E1 | 双维度流水 | D1 后查 llm_usage | 同行含成本侧 cost + 消费侧 chargeppid 冗余正确 |
| E2 | 账号对账 | 账号余额 = 充值 - Σcost | 数值吻合 |
| E3 | 组织对账 | 组织池余额 = 充值 - Σcharge | 数值吻合 |
| E4 | 用量查询页 | 用量列表按组织/模型/时间筛选 | 筛选结果正确,金额汇总与流水一致 |
## F. 回归3 例)
| # | 用例 | 步骤 | 预期 |
|---|---|---|---|
| F1 | 待办动态表单 | 触发冒泡→待办内提交 | 既有功能不受影响 |
| F2 | 工作空间 | 开发产线打开工作空间 | 仓库树正常(本模块改动不波及) |
| F3 | 驾驶舱对话 | 完整一轮开发产线对话 | 正常,模型解析走新链路 |
**共计 30 例**。执行报告逐条记录:实际命令/截图路径 + 数据库核验结果 + 结论(通过/失败/跳过及原因)。