condition-v2 的 Condition/Engine 迁移到 db-v2 表达式树的改动已经提交 推送,这里同步锁定,不然独立于 go.work 拉取时 condition 的老代码 (还在用 db.Raw)跟已经锁定的新版 db-v2 对不上。
git.fsdpf.net/go/contracts(master)
跨服务共享的契约层:各类服务(HTTP/gRPC/队列/任务调度/定时任务/MQTT/WebSocket/条件流引擎等)
的接口定义,以及资源系统相关的类型别名,供 framework-v2(服务编排/启动)和各业务项目共同
依赖,避免互相直接 import 造成循环依赖。配合 "-v2" 系列项目使用。
这个仓库有什么
DI 辅助(di.go)
对 samber/do/v2 的一层薄封装:Injector/Invoke/MustInvoke/InvokeNamed/
MustInvokeNamed,全仓库统一用这几个函数取 DI 容器里的服务,不直接 import samber/do/v2。
插件与注册(app.go)
App 接口:LoadGoPlugin(file string) error 加载 Go plugin,RegControllers/RegResWatchers/
RegGRpcs/RegJobs/RegCrons/RegMqtts/RegFlowDecisions/RegGoBridges/
RegResVirtualTables 一批 Reg* 方法把插件里定义的各类实现注册进框架,对应的 GetApp*/
Get* 方法按 code 查回来。
资源系统对接
resource.go:GetResource/MustResource是req.GetResource/req.MustResource的类型 别名,GetUser按 uuid 查用户。res_watcher.go:ResEventType(resx.ResEventType别名)+ResWatcher——资源发生变更时 要通知的外部监听方注册信息。res_virtual_table.go:ResVirtualTableSetup(req.ResVirtualTableSetup别名)——framework-v2在sqlite_vtablebuild tag 下注册进容器,负责给 SQLite 注册虚拟表模块。event_stream.go:事件流相关契约。
各类服务契约
http.go/grpc.go/grpcall.go/server.go(HTTP/gRPC)、job.go/cron.go/queue.go
(任务调度/定时任务/消息队列)、mqtt.go/ws.go(MQTT/WebSocket)、jwt_auth.go/captcha.go
(鉴权/验证码)、condflow.go(条件流引擎对接)、gobridge.go(跨语言 bridge)、mcp.go
(Model Context Protocol 对接)、executor.go(通用执行器契约)。
子包
base/:基础类型(用户、角色等业务通用结构)。support/:辅助工具。
分支状态
master 是持续开发中的新架构,跟老仓库 v1-legacy 分支不完全兼容——di.go/app.go/
condflow.go/gobridge.go/mcp.go/res_virtual_table.go/res_watcher.go 都是新增的,
res_event.go/res_type/ 这些老概念已经拆分/移除。还在用老版契约的老项目,参见 v1-legacy
分支。