3.5 KiB
im_workbench
工作台服务从 im_server 拆分后的独立 Go 工程。当前阶段只拆服务和接口边界,数据库暂不迁移,继续访问现有租户库中的工作台表。
路由
GET /healthzGET /metricsGET /v1/workbench/v1/workbench/organization/*/v1/workbench/attendance/*/v1/workbench/meetings*/v1/workbench/meeting-notes/v1/workbench/reports/daily*/v1/workbench/reports/monthly*/v1/workbench/executive-mailbox/*/internal/admin/workbench/*,HotGo 后台内部管理接口,使用服务间 HMAC 鉴权
本地运行
IM_WORKBENCH_CONFIG=configs/workbench.local.json \
IM_WORKBENCH_INTERNAL_SECRET=local-workbench-secret \
go run ./cmd/workbench
默认监听 :6061,默认连接本地 tinode 库和本地 Redis。
开发联调可在 configs/workbench.local.json 打开 allow_dev_header_auth,请求头带:
X-User-ID: 1
X-Tenant-ID: 1
X-Tenant-Code: default
正式链路使用:
Authorization: Bearer {token}
X-MeetingIM-APIKey: {apikey}
X-Tenant-Code: default
X-IM-Schema: 1
X-Request-ID: {uuid}
服务从 Redis 读取 im:session:token:{sha256(token)} 校验登录态。
usr... 用户 ID 编解码优先从 IM Manager 内部配置接口读取 UID 加密 key,读不到时回退到
auth.uid_key 或环境变量 IM_WORKBENCH_UID_KEY。测试环境需要配置:
IM_WORKBENCH_MANAGER_BASE_URL=https://admin.118im.com
IM_WORKBENCH_MANAGER_SERVICE_NAME=im-workbench
IM_WORKBENCH_MANAGER_SECRET={IM_CONFIG_API_SECRET}
默认读取 GET /internal/im-config/third-party/im?keys=uid_encryption_key,UID_ENCRYPTION_KEY,uid_key。
如果后台配置使用了其他 group/key,可通过 IM_WORKBENCH_MANAGER_UID_KEY_GROUP 和
IM_WORKBENCH_MANAGER_UID_KEY_KEYS 调整。
HotGo 后台访问 /internal/admin/workbench/* 时需要配置同一组内部鉴权参数:
IM_WORKBENCH_INTERNAL_SERVICE_NAME=hotgo-admin
IM_WORKBENCH_INTERNAL_SECRET={shared-secret}
测试环境也可以复用已有内部服务密钥:HotGo 的 IM_WORKBENCH_API_SECRET 为空时会使用
IM_INTERNAL_API_SECRET,im_workbench 的 IM_WORKBENCH_INTERNAL_SECRET 为空时也会使用
IM_INTERNAL_API_SECRET。
HotGo 后台在测试集群中建议直连工作台服务内网地址:
IM_WORKBENCH_API_BASE_URL=http://im-workbench.workbench-system.svc.cluster.local:6061
测试镜像默认使用 hotgo-workbench-internal 作为工作台内部签名密钥;正式环境建议通过
IM_WORKBENCH_API_SECRET 和 IM_WORKBENCH_INTERNAL_SECRET 覆盖为真实密钥。
Kafka 事件
工作台写操作统一投递到 im.workbench.event。本地配置默认关闭 Kafka:
IM_WORKBENCH_KAFKA_ENABLED=true \
IM_WORKBENCH_KAFKA_BROKERS=127.0.0.1:9092 \
IM_WORKBENCH_CONFIG=configs/workbench.local.json \
go run ./cmd/workbench
测试环境使用 configs/workbench.test.json,Kafka 为明文 PLAINTEXT 直连,不配置 SASL/TLS。
事件体字段:
{
"event_id": "wbe_xxx",
"trace_id": "request-id",
"tenant_id": 1,
"tenant_code": "default",
"actor_user_id": 42,
"module": "meeting",
"action": "meeting.created",
"resource_id": "mtg_xxx",
"target_user_ids": [42, 43],
"title": "会议通知",
"summary": "项目周会",
"occurred_at": "2026-09-13T14:00:00Z",
"data": {}
}
构建
make test
make build
数据库原则
服务启动不自动建库建表,不执行 CREATE TABLE / ALTER TABLE。所有表结构和种子数据继续通过 SQL 审核后人工执行。