本文档是平台设计、数据库设计与系统开发的唯一权威依据,配套文档:《接口平台建设方案 V1.1(内部版)》(规划/接口清单/排期)与《平台原型 V1.1(内部版)》(交互与页面) 。所有模块、接口、表结构、错误码、流程均以本文档为准。
明确平台定位、建设目标、范围边界与术语,作为所有设计与开发的前提。
爱云科技内部技术中台:面向电商中台、智能小程序、客服系统、运营活动等业务线,统一供给认证、消息、增长三类接口能力,不对外商业化。
① 消除重复建设与重复采购;② 统一身份(企业微信 SSO)与安全治理;③ 配额与成本透明核算(分摊到业务线);④ 业务线最快小时级接入。
做:API 网关/鉴权/计量/控制台/认证/消息/增长/成本核算。不做:对外售卖、发票、公网开发者注册、多租户商业化定价。
| 术语 | 定义 |
|---|---|
| 业务线 Business Line | 公司内部独立业务组织(如电商中台、客服系统),是资源隔离与成本核算的最小单位,拥有业务线管理员。 |
| 应用 Application | 业务线下创建的内部应用(一个应用可包含多个服务),持有独立 AK/SK 与配额。 |
| AK / SK | Access Key(标识)与 Secret Key(签名密钥)。SK 仅在创建时明文展示一次,库中仅存哈希。 |
| 配额 Quota | 应用在某周期(默认自然月)内对某 API 的调用上限,超额策略:告警 / 拒绝。 |
| 成本分摊 | 按各业务线实际用量 × 内部成本单价折算,月度报表同步财务。 |
| 沙箱 Sandbox | 联调环境,调用真实服务但走 Mock 通道、不产生真实费用、不占用配额。 |
| Webhook / 事件回调 | 平台异步推送(短信回执等)到业务方 URL,带签名、幂等、重试。 |
| 幂等键 Idempotency-Key | 业务方生成的唯一键,平台用于重复请求去重(同一键只生效一次)。 |
| traceId | 一次调用全链路唯一标识,贯穿网关 → 服务 → 通道 → 日志。 |
四层架构 + 统一身份底座;内网部署,外部通道(短信/外呼)经安全网关统一出网。
| 层次 | 组件 | 职责 |
|---|---|---|
| 接入层 | 内部 API 网关(APISIX/Kong)、统一鉴权、限流熔断、沙箱路由 | AK/SK 签名校验、IP 白名单、按业务线授权、配额前置校验、traceId 生成、灰度路由 |
| 业务服务层 | 认证中心、消息中心、触达中心、增长中心、数据服务 | 各能力域微服务,独立仓库独立部署,内部通过网关/内部 RPC 互联 |
| 平台服务层 | 控制台、配额与成本、监控告警、内部运营 | Key/应用/审批/统计/成本报表/告警/工单/文档 |
| 基础设施层 | 统一身份(企微/AD)、MySQL、Redis、MQ、ES、对象存储、私有云 K8s、安全网关 | 数据、缓存、异步、检索、部署、外部通道出网 |
所有 API 必须遵守的统一规范,接入前先完成签名与错误码认知。
| 错误码段 | 含义 | 示例 |
|---|---|---|
0 | 成功 | data 返回业务数据 |
1xxx | 鉴权类 | 10001 签名无效 / 10002 时间戳过期 / 10003 AK 不存在或已禁用 / 10004 IP 不在白名单 |
2xxx | 参数类 | 20001 参数缺失 / 20002 参数格式错误 / 20003 手机号不合法 |
3xxx | 业务类 | 30001 验证码错误 / 30002 验证码过期 / 30003 模板审核中 / 30004 配额不足 |
4xxx | 限流与频率 | 40001 触发限流 / 40002 触发频控(验证码 60s 重发限制) |
5xxx | 系统类 | 50001 内部错误 / 50002 通道异常(业务方应重试) |
| 项 | 约定 |
|---|---|
| 幂等 | 写操作(send/verify/create 类)支持请求头 Idempotency-Key;同键重复请求返回首次结果(缓存 24h)。 |
| 限流 | 默认 1000 QPS/应用(可在配额中心调整);单号码短信频控:验证码 60s/条、同一号码 10 条/天。 |
| Webhook 回调 | 推送头:X-Signature: HMAC-SHA256(secret, body);业务方须验签并响应 2xx;失败重试 1/5/30min 共 3 次;消息体含 eventId 供业务方幂等去重。 |
| 敏感字段 | 响应默认脱敏(手机号 138****1234);全量明文仅授权接口返回。 |
共 6 个域、45 张核心表。公共字段:id BIGINT PK AUTO_INCREMENT、created_at/updated_at DATETIME、deleted_at DATETIME NULL(软删,日志/计量表除外)。金额单位统一为分(BIGINT)。手机号等敏感字段加密存储(AES-256-GCM,密钥由 KMS 管理),索引字段做 hash 索引(如 phone_hash)。下表仅列关键字段,完整 DDL 以数据库设计阶段产出为准。
统一身份 + RBAC + 密钥生命周期 + 数据安全,满足内部最小权限与审计要求。
控制台登录:企微扫码 → 企微 OAuth 授权 → 平台拉取 userid/工号/部门 → 映射本地 platform_user → 下发会话。业务系统接入 SSO 复用同一体系,全平台免登。
platform_admin:全平台管理与审批;biz_admin:本业务线应用/Key/配额审批与查看;developer:创建应用、沙箱联调、申请配额;auditor:只读审计与成本报表。
创建(一次性展示 SK)→ 使用 → 轮换(新旧并存 24h 过渡)→ 吊销(立即生效 + 审计)→ 自动失效(到期/离职)。异常调用自动告警。
内部版替代"商业计费"的核心机制:配额管用量、成本管分摊。
| 项 | 设计 |
|---|---|
| 配额粒度 | 应用 × API × 周期(默认自然月;支持日/小时粒度的保护性限额) |
| 默认值 | 新应用默认按目录默认配额(如短信 300 万条/月);超量需走审批调额 |
| 超额策略 | 告警(默认,超额仅告警不断供)/ 拒绝(返回 30004,需审批解锁) |
| 计量链路 | 网关计量 → MQ 异步 → quota_usage 按日累计 + Redis 实时计数(网关前置检查用) |
页面清单供原型图设计直接引用;每页标注核心数据来源表与关键交互。
| 页面 | 功能点 | 数据来源 |
|---|---|---|
| 登录 | 企微扫码登录、SSO 跳转、角色识别 | platform_user / user_role |
| 工作台 | 今日调用量/成功率/配额余量/告警;业务线 TOP 排行 | api_call_metric_daily / quota_usage / alert_event |
| 能力中心 | API 目录浏览(分类/状态/配额信息)、沙箱调试入口 | api_catalog / app_api_quota |
| 应用管理 | 创建应用(提交审批)、应用列表、成员 | application / approval |
| Key 管理 | 申请/轮换/吊销、IP 白名单、环境切换 | app_apikey / approval / audit_log |
| 调用统计 | 按 API/业务线/时间/状态码多维分析、明细下载 | api_call_metric_daily / api_call_log |
| 配额与成本 | 配额查看/调额申请、超额策略设置、成本月报 | app_api_quota / cost_settlement_monthly |
| 告警中心 | 规则配置、事件列表、恢复记录 | alert_rule / alert_event |
| 审批中心 | 待办/已办、同意/驳回、审批链 | approval |
| 审计日志 | 操作查询(auditor 只读) | audit_log |
| 工单支持 | 提工单、SLA 响应、状态流转 | workorder |
| 开发文档 | 接入指引、签名工具、SDK 下载、错误码 | 静态内容 / sys_config |
技术栈、仓库结构、编码规范,供系统开发阶段直接执行。
| 层 | 选型 |
|---|---|
| 网关 | Apache APISIX(鉴权/限流/配额插件自研)或 Kong |
| 后端 | Java 17 + Spring Cloud / Go(按服务选型,建议 auth/console 用 Java,网关插件与 data 服务用 Go) |
| 前端 | Vue 3 + TypeScript + Vite + Element Plus(控制台),响应式适配 |
| 存储 | MySQL 8.0(主库,读写分离)、Redis 7(缓存/频控/计数)、Elasticsearch(日志检索)、MQ(RocketMQ/Kafka)、对象存储(文件) |
| 部署 | 私有云 K8s + Helm;CI/CD:GitLab CI / Jenkins;可观测:Prometheus + Grafana + SkyWalking |
每新增接口必须:① 在 api_catalog 登记;② 网关插件注册路由与权限;③ 错误码在统一表登记;④ 写 OpenAPI 文档;⑤ 补充 SDK 方法;⑥ 定义成本单价。
全链路 traceId 透传;业务日志含 app_id/api_id/result_code/latency;禁止记录明文手机号/身份证;敏感字段打码后入日志。
配置走 Nacos/K8s ConfigMap;密钥/凭证入 KMS 或 Vault,禁止硬编码与提交仓库。
测试分层、环境管理、CI/CD 与上线检查清单。
| 阶段 | 要求 |
|---|---|
| 单元测试 | 核心服务覆盖率 ≥ 70%;签名、幂等、配额策略必测 |
| 接口/契约测试 | 网关层契约测试(签名/错误码/响应体);Consumer-Driven 契约防服务间破坏 |
| 集成测试 | 沙箱环境全链路:业务方应用 ↔ 网关 ↔ 服务 ↔ Mock 通道 |
| 性能压测 | 目标:单应用 1000 QPS、P95 < 200ms、网关吞吐 ≥ 1 万 TPS;压测报告随发布评审 |
| 安全测试 | 签名绕过/重放、越权(跨业务线)、敏感数据泄露、注入;上线前渗透测试 |
黄金指标、告警建议、日志链路与容量规划。
RED 四件套:请求量、错误率、时延(P50/P95/P99)、饱和度(QPS/连接/磁盘)。按 app_id 与业务线拆分看板。
成功率 <99.9%(5min);P95 >300ms;配额余量 <20%;余额/通道可用性;发送到企微告警群 + Webhook。
api_call_log 按日分表、30 天归档至冷存;MySQL 主从 + 每日备份 + 每月恢复演练;Redis 集群哨兵。
对应建设方案 V1.1 的 5 个里程碑;每个里程碑出口须可演示、可配额、可灰度。
| 里程碑 | 周期 | 交付内容 | 责任人角色 |
|---|---|---|---|
| M1 平台基座 | 第 1–2 周 | 网关+签名+限流;企微 SSO 登录;应用/Key 管理;控制台框架;SDK 骨架 | 网关/后端/前端 |
| M2 认证与消息核心 | 第 3–6 周 | SSO/OAuth2 全链路;短信+验证码+模板审核;Webhook;统计+配额 V1 | auth/msg/网关 |
| M3 消息扩展 | 第 7–9 周 | 邮件;推送聚合;站内信;机器人;告警订阅 | push/notify |
| M4 增长与合规 | 第 10–12 周 | 短链+二维码;内容安全;文件服务;配额与成本 V2(月报) | growth/data/billing |
| M5 智能与全量 | 第 13–16 周 | 外呼;客服机器人;一键登录/实名(按需);灰度 2–3 业务线 → 压测/审计 → 全量 | call/chat/平台 |
| 模块 | 接口 | 说明 | 方法 | 优先级 |
|---|---|---|---|---|
| SSO | /v1/sso/authorize | 发起授权(企微对接) | GET | P0 |
/v1/sso/token | 换令牌 | POST | P0 | |
/v1/sso/userinfo | 用户信息 | GET | P0 | |
/v1/sso/logout | 全局退出 | POST | P0 | |
| 一键登录 | /v1/onepass/preget | 预取号 | POST | P2 |
/v1/onepass/verify | 取号校验 | POST | P2 | |
| OAuth2 | /v1/oauth/authorize | 授权码端点 | GET | P0 |
/v1/oauth/token | 令牌端点 | POST | P0 | |
/v1/oauth/revoke | 令牌撤销 | POST | P0 | |
| 实名 | /v1/realname/verify | 要素核验 | POST | P2 |
/v1/realname/face | 人脸+活体 | POST | P2 | |
| 企业认证 | /v1/enterprise/verify | 四要素核验 | POST | P2 |
/v1/enterprise/ocr | 执照 OCR | POST | P2 | |
| 验证码 | /v1/sms/verify | 验证码校验 | POST | P0 |
| 短信 | /v1/sms/send | 单条发送 | POST | P0 |
/v1/sms/batch | 批量群发 | POST | P0 | |
/v1/sms/status | 状态查询 | GET | P0 | |
/v1/sms/template | 模板管理 | POST | P0 | |
| 邮件 | /v1/email/send | 单发 | POST | P1 |
/v1/email/batch | 群发 | POST | P1 | |
/v1/email/template | 模板管理 | POST | P1 | |
| 推送/站内信 | /v1/push/send /v1/inapp/send | 聚合推送 / 站内信 | POST | P1 |
| Webhook | /v1/webhook/subscribe | 事件订阅 | POST | P0 |
| 机器人 | /v1/bot/dingtalk /v1/bot/wecom /v1/bot/feishu | 群机器人消息 | POST | P1 |
| 短链 | /v1/surl/create | 创建短链 | POST | P1 |
/v1/surl/stats | 访问统计 | GET | P1 | |
/v1/surl/qrcode | 短链转二维码 | GET | P1 | |
| 二维码 | /v1/qrcode/create /v1/qrcode/decode | 生成 / 解析 | POST | P1 |
| 外呼 | /v1/callout/start | 发起外呼 | POST | P2 |
/v1/callout/status | 状态查询 | GET | P2 | |
/v1/callout/record | 录音转写 | GET | P2 | |
| 客服机器人 | /v1/chatbot/message | 对话 | POST | P2 |
/v1/chatbot/kb | 知识库 | POST | P2 | |
/v1/chatbot/handoff | 转人工 | POST | P2 | |
| 内容安全 | /v1/censor/text /v1/censor/image | 文本/图片审核 | POST | P1 |
| 数据服务 | /v1/data/phone-locate /v1/data/ip-locate | 归属地查询 | GET | P2 |
| 文件 | /v1/file/upload | 对象存储上传 | POST | P1 |
| 文档 | 用途 | 下一步产出 |
|---|---|---|
| 本《整体开发手册》 | 开发/数据库/测试/上线统一依据 | — |
| 《建设方案 V1.1》 | 规划、接口清单、排期背景 | PRD 细化 |
| 《平台原型 V1.1》 | 交互与页面参考 | 高保真原型图(Figma) |
| 数据库设计(待产出) | 本手册 §4 扩展为完整 DDL/ER 图 | Flyway 迁移脚本 |
| 接口详情(待产出) | §3 + §12 扩展为 OpenAPI 3.0 | SDK 自动生成 |