Skip to content

v0.2 管线扩展 + 多供应商 + 测试 - #4

Merged
Yukk1o merged 8 commits into
masterfrom
dev
May 28, 2026
Merged

v0.2 管线扩展 + 多供应商 + 测试#4
Yukk1o merged 8 commits into
masterfrom
dev

Conversation

@Yukk1o

@Yukk1o Yukk1o commented May 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • 完整插件管道:Guard / PreProcessor / PostProcessor 阶段支持
  • 多供应商路由:多目标 + 优先级/权重策略 + 通配符匹配 + 模型映射
  • prompt-injector:PreProcessor 实现,支持系统提示词注入
  • 启动 banner + 关键/可选插件加载策略
  • Scheduler 单元测试 + Router 单元测试(覆盖通配符、策略选择、端到端路由)
  • 优雅关闭机制、metrics 中间件、云原生部署(Docker + K8s)

Test plan

  • go test ./internal/router/... — 12 个用例全通过
  • go test ./internal/plugin/... — Scheduler 测试通过
  • go vet ./... — 无报错

Yukk1o and others added 8 commits May 28, 2026 23:51
## 变更内容
- Dockerfile: golang:1.25-alpine 多阶段构建,最终镜像 ~10MB
- .dockerignore: 排除 .git/docs/vendor 等无关文件
- docker-compose.yml: 端口映射 8080,configs 目录挂载
- K8s deployment/service/configmap/secret 完整部署配置
- /metrics: Prometheus 指标端点 + HTTP 请求计数

## 测试

- [x] Docker 构建成功
- [x] /health 返回正常
- [x] /ready 返回正常
- [x] /metrics 返回 Prometheus 格式指标
- [x] K8s 部署测试通过"
## Summary

路由增强:多目标路由 + 优先级/权重策略 + 通配符匹配 + 模型映射

## 改动

**路由核心**
- routeYAML 支持 targets 列表和 strategy 字段
- targetYAML 新增 Priority / Weight 字段
- 新增 selectTarget / selectByWeight / matchModel / resolveRoute 方法
- Route() 支持精确匹配 + 通配符两遍扫描
- RouteDecision 新增可选 Model 字段,支持目标模型映射

**管线重构**
- executePipeline 统一处理模型覆盖,返回三值
- 提取 resolveAdapter 消除 ExecuteChat / ExecuteChatStream 重复

**日志**
- 全项目 log → slog 迁移(main.go / watcher.go / router.go)
- 路由选择结构化日志输出

**配置**
- routes.yaml 支持 targets + strategy 新格式
- 旧格式 target(单数)向后兼容
- target 和 targets 同时存在时输出 WARN 日志

**文档**
- roadmap 更新 P4/P7 状态
- built-in.md 更新 router-yaml 配置说明
- deployment.md 补充 Docker / K8s / Metrics 部署指南
- 修正 NewServer 函数调用,新增 met 参数
- 解决服务器初始化时缺少依赖传递的问题
- 确保监控组件正确集成至服务器实例
- 增强服务器稳定性,防止启动异常
- 添加 ExecuteChat 不同场景的测试,包括成功、认证失败、认证成功、无适配器、路由错误和模型覆盖
- 添加 ExecuteChatStream 流式接口的成功测试
- 添加 Scheduler 的 ReloadManager 重新加载管理器后的行为测试
- 添加 router 包的单元测试,包括模型匹配、目标选择策略和路由端到端测试
- 实现 testutil 包中 MockRouter、MockAdapter 和 MockAuthenticator 的模拟实现,便于测试依赖注入
- 确保所有测试用例覆盖主要逻辑分支及异常情况,提高代码质量和稳定性
- 使用http.Server结构体启动HTTP服务
- 监听系统中断信号实现优雅关闭
- 在关闭时设置10秒的超时上下文
- 添加日志记录服务启动、关闭及异常信息
- 启动服务与信号监听在独立协程中运行
- 新增 Guard、PreProcessor、PostProcessor 三个插件接口,拓展插件类型支持
- 定义 PipelineContext 贯穿插件管线各阶段信息传递
- 插件管理器支持守卫、预处理器与后置处理器插件的注册与管理
- 插件加载器新增对 guard、preprocessor、postprocessor 类型插件的加载与日志区分
- 调度器执行流程改为鉴权 → 守卫 → 预处理 → 路由 → 适配 → 后置处理的管线顺序
- 适配器调用前后新增预处理与后置处理钩子,支持插件对请求和响应的修改
- 在启动命令行输出插件加载摘要,显示包括新插件类型的状态信息
- 新增提示注入插件 prompt-injector,支持在请求消息最前面注入系统提示语
- 配置文件示例添加 prompt-injector 插件的定义及默认系统提示配置
- 将插件加载拆分为 loadPlugin 和 registerPlugin 两个函数,将 loadPlugin 的圈复杂度从 16 降到 8
- registerPlugin 根据插件类型注册到管理器中
- 增加类型断言错误处理,确保插件类型正确
- 删除重复或无效的调试日志代码
- 统一插件加载成功时的日志输出格式
@Yukk1o
Yukk1o merged commit be992f6 into master May 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant