JSM Bot v2 正式切换清单

从 TEST FORGE 切换到正式 “Submit a request”,并将正式 Slack Bot、飞书 Bot 流量迁移到 production v2。

目标 AWS 账号:552185537300 区域:us-west-2 文档日期:2026-07-23 状态:切换准备中,尚不可执行正式切流
Request Type 已切到正式 “Submit a request”,字段快照暂未刷新。 当前按明确决策只替换 ST、TCID、TCLID 的 Request Type ID,继续沿用已有字段快照。 JSM 管理员完成正式表单字段迁移后,仍需重新核对并更新字段元数据。

1. 切换范围与已知资源

用途 现正式版 目标 v2 切换动作
Slack Bot Lambda slack-bot slack-bot-v2 换正式凭证,再切 Slack App 三类回调
飞书 Bot Lambda lark-support-bot lark-support-bot-v2 换正式凭证,再切事件和卡片回调
提单 Worker CreatJsmIssueHandler CreateJsmIssueHandler-v2 继续消费独立 v2 队列;更新正式 Bot 发消息凭证
Org 同步 jsm-orgs-lambda(Assets) jsm-orgs-lambda-v2(新 API) 创建 v2 调度;验证后停旧调度
Slack API Gateway 51c5tv1vsk knj0kkq1sh 在 Slack App 控制台切换 URL
飞书 API Gateway rw75r1e3bi abfl58h599 在飞书开放平台切换 URL
已经具备的连续性条件 v2 与正式版共用 DATABASE_URL,并复用 messages、ticket_thread、 user_openid_email_mapping。因此已有工单线程和用户映射可以延续, 不需要迁移这三张表。

2. Request Type 与字段快照

“Submit a request” 的 Request Type ID 已能定位,但由于正式表单字段尚未迁移, 下表中的目标 ID只能作为切换目标候选;字段完成修改后必须重新读取元数据并再次确认。

Project Project / Service Desk 之前 TEST FORGE 当前 Submit a request 正式 Portal
ST Project 10008
Service Desk 9
Issue Type 10003
Request Type 4432 2164 已切换 https://tidb.support.pingcap.com/servicedesk/customer/portal/9/
TCID Project 10005
Service Desk 6
Issue Type 10003
Request Type 4431 30 已切换 https://tidb.support.pingcap.com/servicedesk/customer/portal/6/
TCLID Project 15248
Service Desk 4219
Issue Type 10003
Request Type 4433 4398 已切换 https://tidb.support.pingcap.com/servicedesk/customer/portal/4219/

2.1 表单迁移后必须核对的目标字段

产品 目标字段 预期 ID 必须核对
Cloud(ST / TCID) TiDB Cloud Org customfield_17125 必填;可接受完整 Org snapshot payload
Cloud(ST / TCID) TiDB Cloud Cluster customfield_17124 非必填;不存在或已删除时仍允许提单
Lake(TCLID) TiDB Cloud Lake customfield_17123 必填;可接受完整 Lake snapshot payload
三项目 Environment customfield_10050 必填状态及 production / pre-production / poc / test 的提交格式
三项目 Severity customfield_10090 必填状态以及 S1–S4 object ID
ST / TCID Components components 正式表单完整选项;TEST FORGE 临时新增项是否仍存在
ST / TCID Affects versions versions 必填状态和完整版本列表

2.2 Repo 修改点

3. Channel / Group 配置

当前状态 线上正式版已有的 Slack Channel 和飞书 Group 已在 v2 中设为 enabled: true;退休 Org 保持删除。Org Sync 的 18 个目标与当前 Channel/Group 引用的 18 个有效 Org 完全一致。
配置 当前 v2 值 正式切换前动作
Slack 测试入口 C08S1QZM39V Cloud Premium:1372813089187041280
Lake Enterprise:1372813089194331289
按当前决定暂时保留;正式稳定后再决定删除或继续作为 canary
飞书测试入口 oc_ca98042ab78d27a044d56966df23c3e9 Cloud Enterprise:1372813089194331289
Lake Enterprise:1372813089194331289
按当前决定暂时保留;正式稳定后再决定删除或继续作为 canary
被测试覆盖的正式群 oc_741a848f5e0538f02e4273bbdb1741ef 当前 v2:Cloud Premium,Org 1372813089187041280 正式切流前必须恢复为 Cloud Premium, Org self-managed、1372813089209292464
正式 Lake 群 oc_1192a9156d9b2b06627e74cdb039b289 enabled;Lake Enterprise;Org 1372813089209321686 保留;已确认 snapshot 中存在 active Lake ClinkBI
Support Plan 的实时影响 评论同步每次都读取 Channel/Group 当前配置,并不保存提单时的 Support Plan。 当前代码只有 Premium 开启双向评论同步;Enterprise 创建的工单以及此前 Premium 创建、后来配置改为 Enterprise 的工单都会停止双向同步。

4. 正式应用凭证与 Lambda 环境变量

AWS 只读比对结果显示:v2 当前使用的 Slack/Lark 应用凭证与线上正式应用不同。 正式切换不能只换回调 URL,必须先换 v2 Lambda 中的应用凭证。不得把值写入 repo。

Lambda 变量 目标动作
slack-bot-v2 SLACK_BOT_TOKEN
SLACK_SIGNING_SECRET
复制线上 slack-bot 正式应用对应值
lark-support-bot-v2 LARK_BOT_APP_ID
LARK_BOT_APP_SECRET
LARK_BOT_UNION_ID
复制线上 lark-support-bot 正式应用对应值
CreateJsmIssueHandler-v2 SLACK_BOT_TOKEN
SLACK_SIGNING_SECRET
LARK_BOT_APP_ID
LARK_BOT_APP_SECRET
复制正式 Bot 应用值,以便成功/失败卡片和回复由正式 Bot 发出
CreateJsmIssueHandler-v2 JIRA_EMAIL
JIRA_API_TOKEN
保留当前 v2 服务账号方案,不要盲目复制旧 Lambda;验证该账号可访问 ST、TCID、TCLID,支持 raiseOnBehalfOf、附件和评论

4.1 必须保留的 v2 独立变量

5. Slack / 飞书回调地址

5.1 Slack 正式应用

配置项 当前正式地址 目标 v2 地址
Event Subscriptions → Request URL https://51c5tv1vsk.execute-api.us-west-2.amazonaws.com/default/slack-bot https://knj0kkq1sh.execute-api.us-west-2.amazonaws.com/default/slack-bot-v2
Interactivity & Shortcuts → Request URL
Options Load URL(external_select)

5.2 飞书正式应用

配置项 当前正式地址 目标 v2 地址
事件订阅 Request URL https://rw75r1e3bi.execute-api.us-west-2.amazonaws.com/default/lark-support-bot https://abfl58h599.execute-api.us-west-2.amazonaws.com/default/lark-support-bot-v2
卡片回调 / Card Action Request URL

6. JSM Automation Webhook

JSM → IM 的评论、状态和附件同步由 Jira Automation 的 Send web request 调用 Bot API Gateway。正式切换时必须搜索 ST、TCID、 TCLID 范围内所有指向旧地址的规则,不应只修改一个评论规则。

目标 旧 URL 新 URL
Slack Automation https://51c5tv1vsk.execute-api.us-west-2.amazonaws.com/default/slack-bot https://knj0kkq1sh.execute-api.us-west-2.amazonaws.com/default/slack-bot-v2
飞书 Automation https://rw75r1e3bi.execute-api.us-west-2.amazonaws.com/default/lark-support-bot https://abfl58h599.execute-api.us-west-2.amazonaws.com/default/lark-support-bot-v2

7. SQS 与 Create Handler

项目 正式版 v2 切换处理
队列 SlackJsmQueue JsmBotTicketQueue-v2 保持隔离,不迁移队列 URL
DLQ 旧队列配置 JsmBotTicketQueue-v2-dlq 切换前后检查消息数为 0
Event Source Mapping 45601cbb-0874-40d9-9959-c0e7505d5189,batch 10 6ad3bb0e-3a7d-4a5c-a796-371bbc038c04,batch 1 v2 已 Enabled;旧队列排空后再禁用旧 mapping

8. Org / Cluster / Lake 同步

v2 Org Sync 定时任务已于 2026-07-24 创建并启用。 Scheduler jsm-orgs-v2-daily-sync 每 24 小时调用 jsm-orgs-lambda-v2,使用独立最小权限执行角色,最多重试 3 次。 正式切换前仍需确认至少一次自动执行成功。
配置项 目标值
Scheduler 名称 jsm-orgs-v2-daily-sync
Target jsm-orgs-lambda-v2
Schedule rate(24 hours)
Timezone Asia/Shanghai
Retry 最多 3 次
同步目标 当前 18 个有效 Org;拉取 Org、Clusters、Lakes

9. AWS 运行配置

Lambda Runtime / Handler Memory / Timeout Layer
slack-bot-v2 nodejs24.x
slack-bot/app.handler
128 MB / 303 s jsm-production-v2-dependencies:3
lark-support-bot-v2 nodejs24.x
lark-bot/app.handler
256 MB / 303 s
CreateJsmIssueHandler-v2 nodejs24.x
create-issue-handler/index.handler
128 MB / 63 s
jsm-orgs-lambda-v2 nodejs24.x
org-sync/index.handler
512 MB / 303 s

10. 推荐切换顺序

阶段 A:JSM 表单准备(不切流)

  1. JSM 管理员完成 ST、TCID、TCLID 正式 Submit a request 字段迁移。
  2. 重新读取三份 Request Type metadata,确认 ID、字段、必填状态、选项。
  3. 更新两份 request-fields.json 和必要代码。
  4. 恢复 oc_741... 的正式 Org 映射。
  5. 跑全套测试、build、提交、push,部署四个 v2 包但不改正式回调。

阶段 B:凭证、同步和 canary

  1. 给 v2 三个交互 Lambda 换正式 Slack/Lark 应用凭证。
  2. 验证 Jira 服务账号对三个 Portal 的创建、代提、附件和评论权限。
  3. 手工执行 Org Sync,并确认已启用的 v2 Scheduler 至少自动成功一次。
  4. 在保留的测试 Channel/Group 中创建 ST、TCID、TCLID canary 工单。

阶段 C:逐平台切流

  1. 先切 Slack 三个回调 URL;观察 15–30 分钟。
  2. 更新 Slack 相关 JSM Automation URL;验证双向评论。
  3. 再切飞书事件与卡片回调;观察 15–30 分钟。
  4. 更新飞书相关 JSM Automation URL;验证双向评论。
  5. 整个过程中旧 Lambda、API Gateway、Queue 保留可回滚。

阶段 D:收尾

  1. 确认旧 Queue 排空,禁用旧 Create Handler Event Source Mapping。
  2. 确认 v2 自动同步成功后禁用旧 Org Sync schedule。
  3. 至少观察一个完整业务周期,再决定删除旧资源。
  4. 更新 repo 文档和最终部署状态。

11. 验收清单

11.1 提单

11.2 评论同步

11.3 运行状态

12. 回滚方案

回滚原则:切回入口,不删除数据。 旧 Lambda、API Gateway、SQS Mapping 和 Automation 规则备份必须保留到 v2 稳定观察期结束。
  1. Slack App 三个 URL 恢复为 https://51c5tv1vsk.execute-api.us-west-2.amazonaws.com/default/slack-bot。
  2. 飞书事件和卡片 URL 恢复为 https://rw75r1e3bi.execute-api.us-west-2.amazonaws.com/default/lark-support-bot。
  3. 将 JSM Automation Send web request 恢复到旧 URL。
  4. 如已禁用,重新启用旧 Queue Event Source Mapping 和旧 Org Sync schedule。
  5. 暂停 v2 Bot 回调流量;保留 v2 snapshot 和线程数据用于排查。
  6. 检查两边 Queue,避免回滚期间重复消费或遗漏工单。