982e71f0933e03b4e7a7c301f24ab34ec8ca7e57
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/*
本地运行
IM_WORKBENCH_CONFIG=configs/workbench.local.json 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)} 校验登录态。
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 中的 SASL/SCRAM-SHA-512 配置。
事件体字段:
{
"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 审核后人工执行。