服务适配器

服务适配器

业务代码统一从 src/services 调用外部能力。src/adapters 负责供应商 API、SDK 和 Cloudflare Binding,src/core/services 定义双方遵守的接口。更换供应商时, 业务流程通常无需跟着重写。

支持矩阵

能力适配器运行环境配置
支付creemNodeCREEM_API_KEYCREEM_WEBHOOK_SECRET
支付stripe通用STRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRET
存储s3-compatibleNodeEndpoint、Region、Bucket、Access Key
存储r2-bindingWorkerNEXTDEVTPL_STORAGE R2 Binding
邮件disabled通用无,调用时明确返回未配置
邮件resend通用RESEND_API_KEYEMAIL_FROM
邮件smtpNodeSMTP_HOST、端口和可选账号密码
邮件cloudflare-emailWorkerNEXTDEVTPL_EMAIL Email Binding
AIopenai-compatible通用OpenAI、DeepSeek 或 MiMo Key 与模型
AIanthropic通用ANTHROPIC_API_KEYANTHROPIC_MODEL
AIworkers-aiWorkerAI Binding、WORKERS_AI_MODEL
告警noop通用无,只保存状态,不发送通知
告警email通用ALERT_EMAIL_TOEMAIL_FROM 和已选邮件适配器
告警webhook通用ALERT_WEBHOOK_URL,可选 HMAC 密钥
分析noop通用不产生外部请求
分析logger通用服务端结构化事件
分析posthog通用POSTHOG_API_KEY,可选 Host
分析ga4通用Measurement ID、API Secret,可选浏览器 ID
分析umami通用Website ID、API Key,可选 Host
任务inngest通用INNGEST_EVENT_KEYINNGEST_SIGNING_KEY
任务cloudflare-workflowsWorkerNEXTDEVTPL_WORKFLOW Binding
限流noop通用无,适合本地或可信内网
限流upstash通用Upstash REST URL 与 Token
限流cloudflare-rate-limitWorker七个 Rate Limiting Bindings

生成器只保留选中的实现、依赖和环境变量。Cloudflare 目标会把所需 Binding 写入 wrangler.jsonc;创建远端 R2 bucket 等资源后,还需要把生成的占位配置补完整。

分析适配器负责采集类型化事件,收入和 AI 成本指标仍以本地 operations 读模型为准。告警适配器在生成时固定;供应商配置缺失时会降级到 noop,并在运营指标中保留明确状态。

业务代码怎么调用

从稳定服务入口导入:

import { paymentService } from "@/services/payment";

const checkout = await paymentService.createCheckout({
  productId,
  successUrl,
  metadata: { userId },
});

同理使用 mailServicestorageServiceaiServicejobServicerateLimitService。供应商字段只在适配器目录转换,业务层使用统一类型。

更换适配器

新项目直接通过生成参数选择。已有项目需要生成一份使用目标适配器的临时项目, 再合并对应 src/adapters/<service>src/services/<service>.ts、依赖、环境变量和 部署 Binding。完成后运行对应适配器单测与完整构建。

不要只改 nextdevtpl.generated.json;它是生成记录,不会自动改源码。

本页目录