View on GitHub

WePush

专注批量推送的小而美的工具,目前支持:模板消息-公众号、模板消息-小程序、微信客服消息、微信企业号/企业微信消息、阿里云短信、阿里大于模板短信 、腾讯云短信、云片网短信、E-Mail、HTTP请求、钉钉、华为云短信、百度云短信、又拍云短信、七牛云短信

ADR-0008:Workspace 多租户范围

背景

Standalone 通常只有一个用户,但用户自建的 Server 模式可能出现多个团队、账号、Agent 和权限边界。如果完全按单 Workspace 实现,后续增加团队 Scope 需要修改所有表、唯一索引、Repository、API、Artifact 和 Secret。Workspace 因此是同一部署信任域内的逻辑边界,不是公共 SaaS 租户模型。

决策

Workspace 逻辑隔离进入 WePush Next 正式产品范围,但公共多租户 SaaS 长期不进入产品范围。

Standalone

Server

API 范围

Workspace 业务资源使用显式路径:

/api/v1/workspaces/{workspaceId}/accounts
/api/v1/workspaces/{workspaceId}/messages
/api/v1/workspaces/{workspaceId}/audiences
/api/v1/workspaces/{workspaceId}/jobs
/api/v1/workspaces/{workspaceId}/schedules
/api/v1/workspaces/{workspaceId}/runs
/api/v1/workspaces/{workspaceId}/agents

身份、公开 Provider Catalog、系统 Health 和 Agent Internal API 不使用该业务路径,但仍按自身规则校验 Scope。

Java SDK 创建 WorkspaceClient 后执行资源操作,避免每个方法重复传 Workspace ID:

WorkspaceClient workspace = client.workspace(workspaceId);
workspace.jobs().startRun(jobId, request);

数据隔离

Secret、Artifact 和指标

配额

Server 支持 Workspace 级策略入口,包括最大 Agent、并发 Run、总并发、Artifact 容量和保留期。早期版本可以只实现默认策略,但模型和校验入口必须存在。这些限制用于自建实例的资源治理,不用于计费套餐。

明确不做

结果

Workspace 从第一张表、第一条 API 和第一个 Artifact 开始成为正式边界,可以避免团队资源相互混淆。Standalone 通过 Default Workspace 保持简单体验。代价是每个用例、Repository 和测试都必须验证 Workspace Scope;这一成本只服务于用户自建实例内的权限和资源管理,不为公共 SaaS 铺路。