2026年1月6日 · 阅读 —

**《2026_IT 项目上线发版流程规范(详细版)》**

Agent 与 Skills

《2026_IT 项目上线发版流程规范(详细版)》

重新梳理了下项目上线,发版相关流程规范,包括了角色,职责,审批流,业务端等,为后续平台化提供依据

0. 术语与统一口径(平台化必备)

  • 上线单:一次上线的唯一主记录(ID),包含范围、版本、审批、执行、验证、巡检、回滚与复盘。
  • 冻结版本:测试负责人确认“可上线”的唯一版本标识(必须包含:分支+CommitID/Tag + 构建号/制品ID)。
  • 制品(Artifact):可部署的构建产物(后端包/镜像、前端构建产物、App 安装包、小程序产物)。
  • 门禁(Gate):平台化强校验规则,不满足则不可进入下一环节/不可发版。
  • 变更类型:后端 / Web / App / 小程序 / 配置变更 / 数据变更(SQL、数据清洗)/ 资源变更。

1. 文档目的

为规范 IT 项目迭代上线流程,提高代码质量与上线成功率,防止:

  • 发错版本/发漏版本
  • 合并冲突或误合并导致缺陷
  • 上线代码 ≠ 测试代码
  • SQL 不健壮导致性能/数据风险
  • 责任不清、缺乏留痕与可追溯

2. 适用范围

适用于:

  • 后端服务
  • Web 前端
  • App(Android/iOS)
  • 小程序(微信/支付宝/其他)

3. 总体治理目标与硬规则(“红线条款”)

3.1 红线(违反即禁止上线)

  1. 未冻结版本禁止上线(无分支+Commit/Tag+制品ID)
  2. 测试未出“可上线结论”禁止上线
  3. SQL/数据变更未审批禁止上线
  4. 无回滚方案禁止上线
  5. 生产发布不允许手工拷贝代码/包(必须来自流水线制品或受控打包)
  6. 敏感数据/日志泄露风险未确认禁止上线

3.2 统一分支来源原则

  • 所有需求/迭代必须从 master 拉取新分支开发

    禁止:

  • 从正在开发分支拉新分支

  • 从测试分支拉新分支

  • 从未完成需求分支拉紧急需求

3.3 测试版本即上线版本

  • 测试环境部署产物/测试包 与 正式上线产物必须:

    • 同一分支
    • 同一 Commit/Tag
    • 同一构建号/制品ID(或可严格映射)

4. 角色、权限与量化职责(平台化字段)

建议平台上每个角色都有“必须勾选/上传”的清单项,未完成不可流转。

4.1 角色与否决权

角色权限/否决关键责任
开发人员无否决开发、自测、提交材料、修复缺陷
开发负责人可否决合并正确性、技术风险与冲突处置
测试负责人最终否决/最终发版测试验收、版本冻结、发版执行或发版确认
开发经理/技术经理可否决上线窗口、业务影响、风险分级、并行上线协调
DBA(涉及SQL/数据)可否决SQL性能与安全、回滚、执行方案
运维/平台(如有)建议无否决(可阻断不合规操作)资源与发布通道保障、监控、容量

4.2 各角色“量化任务清单”(建议平台做成勾选项)

A) 开发人员(必须完成)

  • 代码提交至功能分支,关联需求/缺陷ID

  • 自测通过(至少:核心链路/接口冒烟)

  • 提交上线单并填写字段:

    • 变更类型(后端/Web/App/小程序/配置/SQL/数据清洗/资源)
    • 版本信息(分支、CommitID、Tag、构建号/制品ID)
    • 影响范围(模块/接口/页面/业务线)
    • 风险说明(含数据/性能/安全/兼容)
    • 回滚方案(代码回滚/配置回滚/SQL回滚/数据回滚)
    • 上线验证点(3~10条可执行检查项)
  • 若涉及配置:提供配置差异清单(key 级别)与回滚配置

  • 若涉及数据清洗:提供影响评估与验证SQL

B) 开发负责人(必须完成)

  • Code Review 结论:通过/拒绝(拒绝必须填原因)
  • 合并正确性确认:本次上线分支清单(明确列出)
  • 冲突处理复核:冲突文件/模块清单 + 关键功能自测结果
  • 技术风险分级(低/中/高)并给出措施(灰度/限流/降级/开关)
  • 资源影响评估(CPU/内存/连接数/缓存/队列等)是否需要扩容

C) 测试负责人(必须完成,重点)

  • 测试计划:覆盖范围(功能/回归/兼容/安全/性能选项)
  • 版本冻结:记录分支+Commit/Tag+构建号/制品ID(必填)
  • 一致性校验:测试部署产物与冻结版本一致(必勾)
  • 测试结论:可上线/不可上线(不可上线需列阻断缺陷)
  • 上线前复核:上线单字段完整性(SQL/回滚/验证点/窗口)
  • 发版执行/确认:仅允许冻结制品发版
  • 上线后验证:按验证点执行并记录结果
  • 上线后巡检:按巡检机制完成并归档

D) DBA(触发时必须完成)

  • SQL 变更分类:DDL/DML/清洗/索引/大表
  • 执行影响:行数预估、锁表风险、执行时间预估
  • 性能风险:执行计划、索引命中、全表扫描确认
  • 执行策略:分批/限速/低峰窗口/灰度
  • 回滚方案:可逆性说明 + 回滚脚本 + 回滚窗口
  • 生产执行确认:执行顺序、负责人、验证SQL

E) 开发经理/技术经理(必须完成)

  • 上线窗口审批:是否允许工作时间上线(默认不允许)
  • 风险等级确认:低/中/高(高风险需灰度或拆分)
  • 并行上线协调:多项目同窗上线的顺序与互斥策略
  • 资源与容量确认:是否需要扩容/限流/降级预案
  • 回滚可行性确认:回滚耗时是否可接受(分钟级/小时级)
  • 上线时长与验证时长审批(防止拉长影响业务)

F) 运维/平台(如纳入流程)

  • 发布通道可用性确认(Jenkins/GitLab/发布系统)
  • 服务器资源/容器资源检查(CPU/内存/磁盘/连接数)
  • 监控告警就绪(关键指标已配置/阈值合理)
  • 发布权限控制:仅允许测试负责人执行生产发布动作

5. 上线窗口与时长规范(强制建议,可按公司调整)

5.1 默认上线窗口(建议)

  • 常规上线窗口:工作日 18:00–23:00(按具体实际情况)
  • 禁止窗口:工作日 10:00–18:00(业务高峰默认禁止)
  • 紧急上线:需走“紧急变更流程”(见 5.3)

平台字段:上线开始时间、预计时长、验证时长、巡检结束时间。

5.2 时长基线(建议可配置)

  • 部署时长:15–30 分钟(后端/前端),App/小程序按渠道/审核不同
  • 线上验证时长:至少 20–30 分钟
  • 线上巡检观察:至少 60 分钟(高风险 2–4 小时)

5.3 紧急变更(可选章节)

满足任一即“紧急”:

  • 生产故障/严重业务损失

  • 安全漏洞修复

  • 法规合规要求

    紧急变更要求:

  • 审批人:开发负责人 + 测试负责人 + 技术经理(至少三方)

  • 可简化测试范围,但必须补做回归与复盘


6. 变更分类与对应门禁(平台化规则)

变更类型必须审批/门禁必须产出物
纯代码(无SQL/无配置)开发负责人 + 测试负责人 + 经理冻结版本、验证点、回滚方案
配置变更增加配置差异清单门禁配置diff、回滚配置
SQL/数据变更强制 DBA 审核执行脚本+回滚脚本+验证SQL+执行策略
数据清洗/修复经理风险确认 + DBA(如SQL)影响评估、抽样校验、回滚或补偿
资源/容量变更运维/平台确认资源评估、扩容/回退方案
高风险(性能/核心链路)增加性能/压测门禁压测报告/基线对比(可抽样)

7. 各类型项目详细流程(含可平台化节点)

7.1 后端发版流程(master + uat + tag)

  • 开发阶段*
  1. master 拉分支(例:20260115_dicdai)
  2. 分支开发、自测、提交 MR/PR
  3. 开发负责人审核与合并策略确认
  • 测试阶段(必须走 uat)*

1)(如有)执行 SQL(测试环境)

2)(如有)配置变更(测试环境)

  1. 功能分支合并到 uat
  2. Jenkins 构建部署 uat
  3. 测试负责人测试并冻结版本(Commit/Tag/构建号)
  • 回归主干(上线准备)*
  1. master 打 tag(例:t20260115)
  2. 将本次上线分支清单合并到 master
  3. Jenkins 构建 master 制品(制品ID必须记录)
  • 生产上线*

1)(如有)SQL 执行(生产)+ DBA确认

2)(如有)配置变更(生产)

  1. 测试负责人使用冻结制品发版
  2. 线上验证 + 巡检 + 归档

7.2 Web 前端发版流程(Test 分支测试、master 发布)

  • 开发阶段*
  • master 拉分支 → 开发自测 → 提交上线单
  • 测试阶段*
  1. 功能分支合并到 Test 分支
  2. 前端部署工具自动部署测试环境
  3. 测试负责人验收并冻结版本(Commit/构建号)
  • 上线阶段*
  1. 功能分支合并到 master(合并冲突由开发负责人参与复核)
  2. 填写上线单:原因/迭代/PMO/内容/验证点
  3. 使用部署工具自动发布生产
  4. 线上页面冒烟 + 核心链路验证 + 巡检
  • 前端并行分支风险门禁(强制)*
  • 合并 master 前必须填写:上线分支清单
  • 冲突解决后必须勾选:关键页面自测已完成

7.3 App 发版流程(测试包二维码、多渠道打包)

  • 测试阶段*
  1. 在当前分支使用自动打包工具生成测试包
  2. 生成二维码并发群
  3. 测试负责人验收并冻结:分支+构建号+包hash(或包文件ID)
  • 上线阶段*
  1. 功能分支合并到 master
  2. 上线单复核(每项目独立上线单)
  3. master 执行多渠道打包生成渠道包并发布
  4. 上线后监控与巡检(崩溃率/启动耗时/核心功能)
  • 硬规则*
  • 测试通过后若重新打包:必须重新冻结与复测、重新审批

7.4 小程序发版流程(本地编译 + 环境一致性)

  • 测试阶段*
  1. 当前分支本地编译
  2. 发布预览版提供测试
  3. 测试负责人冻结:Commit + 编译环境信息(Node版本/工具版本/机器标识)
  • 上线阶段*
  1. 合并到 master
  2. 编译生成各平台产物
  3. 各平台工具打包、提交审核、发布
  • 环境控制(强制门禁)*
  • 必须使用“指定编译机器/容器环境”
  • Node 版本、构建工具版本必须匹配基线
  • 不满足则禁止正式打包发布

8. 安全、性能、业务验证要求(量化)

8.1 安全(脱敏/权限/日志)

  • 开发/测试必须确认:*
  • 日志中不输出敏感字段(手机号、身份证、token、密码、密钥等)
  • 数据展示/导出是否脱敏(按业务规则)
  • 权限校验未被绕过(至少覆盖关键接口/页面)
  • 配置中密钥不落库/不明文提交(若存在必须整改)
  • 平台字段建议:*
  • “是否涉及敏感数据”:是/否
  • “脱敏策略确认”:选择项(手机号/证件号/地址/其他)
  • “安全自检结果”:通过/不通过 + 备注

8.2 性能(压测/容量/慢SQL)

触发条件(任一满足需补充性能项):

  • 核心接口/核心链路改动
  • SQL大表/批量更新/新增索引
  • 新增定时任务/消息消费逻辑
  • 预估流量上涨/营销活动

要求(可按层级简化):

  • 与历史基线对比(响应时间/吞吐/错误率)
  • 慢SQL风险评估(DBA或开发负责人)
  • 容量评估(CPU/内存/连接池/线程池)

平台字段建议:

  • “性能风险等级”:低/中/高
  • “是否完成压测”:是/否(附报告或链接)
  • “容量评估结论”:可承载/需扩容/需限流

8.3 业务验证(上线后必须执行)

至少包含:

  • 核心下单/支付/登录/查询等关键路径(按系统定义)
  • 核心报表/对账(如适用)
  • 关键告警指标无异常(错误率/超时/队列堆积)

平台字段建议:上传“验证截图/日志链接/监控截图”。


9. SQL / 数据变更 / 数据清洗规范(重点)

9.1 SQL/数据变更上线包必须包含

  • 执行脚本(按顺序编号)
  • 回滚脚本(或不可逆说明 + 补偿方案)
  • 验证SQL(执行前/后对比)
  • 执行窗口与预计时长
  • 影响范围(表、行数预估、锁风险)

9.2 数据清洗(额外要求)

  • 影响评估(影响多少行/多少用户/多少订单)
  • 抽样校验方案(抽样规则、样本量)
  • 风险说明(不可逆/对账影响/报表影响)
  • 回滚/补偿方案(必须)

10. 并行上线管理(多项目同窗)

10.1 并行上线的限制(建议)

  • 同一上线窗口最多允许 N 个项目(可配置)
  • 核心系统与核心链路变更不得与其他高风险变更同窗上线

10.2 并行上线协调规则

  • 由技术经理给出:

    • 上线顺序(A→B→C)
    • 互斥关系(某些系统不可同时)
    • 验证负责人分配
  • 平台需要支持:

    • “上线波次/批次号”
    • “依赖关系/阻塞关系”

11. 回滚方案规范(上线前必须“可执行”)

11.1 回滚类型

  • 代码回滚:回滚到上一个 Tag/制品
  • 配置回滚:回滚配置差异项
  • SQL回滚:回滚脚本/补偿脚本
  • 数据回滚/补偿:不可逆清洗必须有补偿路径

11.2 回滚触发条件(示例,可配置)

  • 错误率超过阈值(如 1% 持续 5 分钟)
  • 核心链路失败(登录/支付/下单)
  • 性能显著恶化(P95 延迟上升超过 X%)
  • 数据异常(对账差异、关键表数据异常)

11.3 回滚时限要求(建议)

  • 代码回滚:15 分钟内可启动
  • 回滚完成验证:30 分钟内完成
  • 数据类回滚:明确预计时长与影响(可能>小时)

12. 上线后线上巡检机制

目的:把“上线完成”从“部署结束”升级为“运行稳定确认”。

12.1 巡检时间段(建议)

  • T+0 ~ T+30 分钟:强制冒烟与核心指标观察
  • T+30 ~ T+90 分钟:巡检期(常规)
  • 高风险变更:延长至 T+4 小时(或次日早晨复检)

12.2 巡检项(平台化清单)

  • 基础巡检(所有项目必做)*
  • 错误率/异常量(应用错误、接口5xx、前端JS错误)
  • 延迟(P95/P99 或关键接口耗时)
  • 资源(CPU/内存/磁盘/连接数)
  • 日志关键字(error/exception/timeout/oom)
  • 业务核心指标(订单量、支付成功率、登录成功率等)
  • SQL/数据变更巡检(触发时必做)*
  • 慢SQL数与耗时趋势
  • 锁等待/阻塞
  • 关键表行数变化符合预期
  • 对账/报表抽样校验
  • 巡检结论*
  • 正常(归档)
  • 异常但可观察(记录+设观察阈值)
  • 触发回滚(进入回滚流程+复盘)

13. 服务器资源与部署保障

上线前必须确认:

  • 生产环境资源水位正常(CPU/内存/磁盘/连接数)
  • 发布节点健康(可用实例数满足要求)
  • 若需扩容:扩容已完成且验证通过
  • 若使用灰度:灰度比例、回切策略明确

平台字段建议:

  • “是否需要扩容”:是/否
  • “扩容单/记录”:链接或编号
  • “灰度策略”:无/按比例/按用户/按机房

14. 上线单字段模板(用于平台化)

  • 必填字段*
  • 上线单ID、项目、负责人
  • 上线类型:后端/Web/App/小程序/配置/SQL/数据清洗/资源
  • 分支、CommitID、Tag、构建号/制品ID(冻结版本)
  • 上线内容摘要(可结构化:模块/接口/页面)
  • 影响范围与风险等级
  • 上线窗口:开始时间/预计上线时长/预计验证时长
  • 回滚方案(类型+步骤+预计时长)
  • 验证点清单(3~10条)
  • SQL/数据:脚本、回滚脚本、验证SQL(如涉及)
  • 巡检结论记录(上线后补填)

15. 事故责任划分(建议,保持但更可执行)

问题类型第一责任复核责任
发错版本/版本不一致测试负责人(发版者)开发负责人(版本材料)
合并错误/误合并开发负责人开发人员
SQL性能问题DBA/SQL审批人开发负责人
测试不足导致线上缺陷测试负责人开发负责人
脱敏/安全问题开发负责人测试负责人(验收项)

16. 附则

  • 本规范为 V2.1
  • 自发布之日起执行
  • 若与紧急故障处理冲突,以故障处理优先,但必须补齐记录与复盘。

17. 流程图

1) 总览:统一审批与发版总流程(带门禁/窗口/巡检/回滚)

flowchart TD
  A[创建上线单<br/>填写: 变更类型/范围/风险/版本信息/验证点/回滚方案] --> B[开发完成 & 自测<br/>提交MR/PR+材料齐全]
  B --> C{门禁1: 材料是否齐全?<br/>版本信息/回滚/验证点/影响范围}
  C -- 否 --> B1[退回补齐材料<br/>上线单字段补全] --> A
  C -- 是 --> D{开发负责人审批<br/>代码审查/合并正确性/冲突风险/技术风险分级}
  D -- 拒绝 --> B2[退回修改代码/修复风险] --> B
  D -- 通过 --> E[进入测试阶段部署<br/>按项目类型: uat/Test/测试包/预览版]

  E --> F[测试负责人测试验收<br/>版本冻结: 分支+Commit/Tag+构建号/制品ID]
  F --> G{门禁2: 测试结论=可上线?}
  G -- 否 --> F1[退回开发修复<br/>列阻断缺陷+复测点] --> B
  G -- 是 --> H{是否涉及SQL/数据变更?}
  H -- 是 --> I{DBA/SQL审批门禁<br/>执行计划/索引/锁表风险/分批/回滚脚本}
  I -- 拒绝 --> I1[退回调整SQL/方案<br/>补齐回滚&验证SQL] --> B
  I -- 通过 --> J{是否触发性能/容量门禁?<br/>核心链路/大表/任务/流量提升}
  H -- 否 --> J

  J -- 是 --> J1[补齐压测/容量评估<br/>基线对比/限流降级/扩容方案] --> K
  J -- 否 --> K[测试负责人上线前复核<br/>冻结版本一致性/上线单完整性/巡检项]
  K --> L{经理审批<br/>上线窗口/并行上线协调/风险等级/回滚可行性}
  L -- 拒绝/延期 --> L1[调整窗口/拆分/灰度<br/>重新提交审批] --> K
  L -- 通过 --> M[执行发版 生产<br/>仅允许冻结制品/禁止手工发布]
  M --> N[上线后线上验证 20-30min <br/>按验证点执行并记录]
  N --> O[线上巡检期 60-90min <br/>错误率/延迟/资源/日志/业务指标]
  O --> P{是否触发回滚阈值?<br/>错误率/核心链路/性能/数据异常}
  P -- 是 --> Q[按回滚预案回滚<br/>代码/配置/SQL/补偿] --> R[复盘闭环<br/>原因/改进/门禁优化]
  P -- 否 --> S[上线完成归档<br/>记录: 版本/结论/巡检结果]

2) 后端:分支/测试/回归主干/生产部署流程(含现有步骤 + V2.1 门禁)

flowchart TD
  A[master checkout 功能分支<br/>例: 20260115_dicdai] --> B[分支开发/自测<br/>提交MR/PR]
  B --> C[提交上线单<br/>含: commit/tag/制品、SQL、配置diff、验证点、回滚]
  C --> D{开发负责人审批<br/>CR/合并正确性/冲突复核/风险分级/资源评估}
  D -- 拒绝 --> B
  D -- 通过 --> E[合并 功能分支 -> uat]
  E --> F[部署测试环境 Jenkins <br/>分支: uat]
  F --> G[测试负责人测试验收<br/>冻结版本: uat+Commit/Tag+构建号]
  G --> H{测试结论=可上线?}
  H -- 否 --> B

  H -- 是 --> I{涉及SQL/数据变更?}
  I -- 是 --> J{DBA审批<br/>计划/索引/锁风险/分批/回滚脚本/验证SQL}
  J -- 拒绝 --> B
  J -- 通过 --> K[master 打Tag备份<br/>例: t20260115]
  I -- 否 --> K

  K --> L[合并上线分支清单 -> master<br/> 只允许清单内分支]
  L --> M[生产制品构建 Jenkins <br/>分支: master<br/>记录制品ID]
  M --> N{门禁: 资源/容量/性能触发?}
  N -- 是 --> N1[扩容/限流/降级/压测基线确认] --> O
  N -- 否 --> O{经理审批<br/>窗口/并行上线/回滚时限}
  O -- 拒绝/延期 --> O1[调整上线窗口或拆分] --> O
  O -- 通过 --> P[生产发布 测试负责人执行 <br/>仅允许冻结制品]
  P --> Q[上线后验证 20-30min <br/>核心接口/链路/数据校验]
  Q --> R[巡检 60-90min <br/>错误率/延迟/资源/日志/慢SQL]
  R --> S{触发回滚阈值?}
  S -- 是 --> T[执行回滚<br/>代码 Tag/制品/配置/SQL回滚或补偿] --> U[复盘闭环]
  S -- 否 --> V[归档上线单<br/>记录版本与巡检结论]

3) Web 前端:Test 分支部署测试、master 自动化发布(含并行分支冲突门禁)

flowchart TD
  A[master checkout 前端分支<br/>命名不固定] --> B[分支开发/自测]
  B --> C[提交上线单<br/>迭代/PMO/内容/验证点/回滚 版本回退]
  C --> D{开发负责人审批<br/>CR/冲突风险/关键页面检查}
  D -- 拒绝 --> B
  D -- 通过 --> E[合并 分支 -> Test]
  E --> F[前端部署工具部署测试环境<br/> 依赖GitLab]
  F --> G[测试负责人验收<br/>冻结: Test+Commit+构建号/制品ID]
  G --> H{测试结论=可上线?}
  H -- 否 --> B

  H -- 是 --> I{门禁: 是否多分支并行/冲突高风险?}
  I -- 是 --> I1[合并master前冲突预演<br/>开发负责人参与<br/>关键页面自测记录] --> J
  I -- 否 --> J[合并 分支 -> master<br/> 仅清单内分支]
  J --> K{经理审批<br/>上线窗口/并行上线协调/风险等级}
  K -- 拒绝/延期 --> K1[调整窗口/拆分/灰度策略] --> K
  K -- 通过 --> L[正式发布 自动化部署 <br/>仅允许冻结版本]
  L --> M[上线后页面冒烟 20-30min <br/>核心链路/埋点/静态资源]
  M --> N[巡检 60-90min <br/>JS错误/接口错误/延迟/资源/业务指标]
  N --> O{触发回滚阈值?}
  O -- 是 --> P[回滚到上一版本/Tag/制品<br/>复盘] --> Q[归档+改进]
  O -- 否 --> R[归档上线单]

4) App:测试包二维码、master 多渠道打包发布(含重新打包门禁)

flowchart TD
  A[master checkout 功能分支] --> B[开发/自测]
  B --> C[自动打包工具打测试包<br/>生成二维码发群]
  C --> D[测试负责人验收<br/>冻结: 分支+构建号+包hash/包ID]
  D --> E{测试结论=可上线?}
  E -- 否 --> B

  E -- 是 --> F{是否需要重新打包?}
  F -- 是 --> C1[重新打包=重新测试+重新冻结<br/>重新走审批] --> C
  F -- 否 --> G[合并 分支 -> master]
  G --> H[上线单复核 测试负责人 <br/>版本一致性/验证点/回滚/巡检项]
  H --> I{经理审批<br/>窗口/并行上线/风险}
  I -- 拒绝/延期 --> I1[调整窗口/拆分/灰度] --> I
  I -- 通过 --> J[master 多渠道打包<br/>生成渠道包并发布]
  J --> K[上线后验证 20-30min<br/>启动/登录/核心功能]
  K --> L[巡检 60-90min <br/>崩溃率/卡顿/接口错误/业务指标]
  L --> M{触发回滚阈值?} 
  M -- 是 --> N[回滚/下架/热修复流程<br/>复盘] --> O[归档]
  M -- 否 --> O[归档上线单]

5) 小程序:本地编译预览测试 + 环境一致性控制(强制门禁)

flowchart TD
  A[master checkout 功能分支] --> B[开发/自测]
  B --> C[本地编译并发布预览版<br/>提供测试]
  C --> D[测试负责人验收<br/>冻结: Commit+编译环境信息 Node/工具/机器]
  D --> E{门禁: 是否使用指定编译环境?}
  E -- 否 --> F[切换指定编译机/容器环境<br/>锁定Node与构建工具版本] --> C
  E -- 是 --> G{测试结论=可上线?}
  G -- 否 --> B

  G -- 是 --> H[合并 分支 -> master]
  H --> I[编译生成多平台产物]
  I --> J[各平台工具打包/提交审核/发布]
  J --> K[上线后验证 20-30min <br/>核心功能/授权/支付等]
  K --> L[巡检 60-90min <br/>崩溃/错误日志/业务指标]
  L --> M{触发回滚/撤回条件?}
  M -- 是 --> N[撤回版本/紧急修复/回滚策略<br/>复盘] --> O[归档]
  M -- 否 --> O[归档上线单]

6) 补充:SQL/数据清洗专项流程

flowchart TD
  A[上线单标记: SQL/数据变更] --> B[开发提交SQL包<br/>执行脚本+回滚脚本+验证SQL+行数预估]
  B --> C{DBA审批<br/>执行计划/索引/锁风险/分批/窗口}
  C -- 拒绝 --> D[退回修改SQL/方案<br/>补齐回滚与验证] --> B
  C -- 通过 --> E[测试环境演练<br/>记录耗时/影响/验证结果]
  E --> F{是否为不可逆数据清洗?}
  F -- 是 --> G[补充补偿方案/抽样校验规则<br/>经理确认风险等级]
  F -- 否 --> H[纳入生产执行计划<br/>顺序/负责人/预计时长]
  G --> H
  H --> I[生产执行 SQL <br/>DBA确认执行与结果]
  I --> J[上线后数据巡检<br/>慢SQL/锁等待/关键表校验]
  J --> K{异常?}
  K -- 是 --> L[按回滚/补偿方案处理<br/>复盘] --> M[归档]
  K -- 否 --> M[归档]

7) 补充:并行上线(批次/互斥/顺序)协调流程

flowchart TD
  A[多项目计划同一窗口上线] --> B[技术经理建立上线批次/波次号]
  B --> C[定义上线顺序 A->B->C<br/>定义互斥关系 不可同窗 ]
  C --> D[资源与监控就绪确认<br/>运维/平台 如纳入 ]
  D --> E[逐项目进入发版<br/>每个项目需完成: 冻结+审批通过]
  E --> F{当前项目上线验证通过?}
  F -- 否 --> G[暂停后续项目<br/>回滚/修复/复盘] --> H[重新评估窗口]
  F -- 是 --> I[进入下一项目上线]
  I --> J[批次完成后统一巡检总结<br/>记录问题与改进]

8) 审批流泳道图(按角色:开发/开发负责人/测试负责人/经理/DBA)

flowchart TD

%% 泳道:开发
subgraph DEV[开发]
direction TB
DEV1[创建/填写上线单<br/>变更类型/范围/风险/版本/验证点/回滚] --> DEV2[开发完成&自测<br/>提交MR/PR]
DEV2 --> DEV3[按意见修复/补齐材料]
end

%% 泳道:开发负责人
subgraph LEAD[开发负责人]
direction TB
LEAD1{审批: 代码审查/合并正确性<br/>冲突复核/技术风险分级/资源评估} -->|拒绝| LEAD2[退回修改代码/材料补充]
LEAD1 -->|通过| LEAD3[确认合并策略<br/>后端->uat / Web->Test]
LEAD3 --> LEAD4[并行分支冲突预演 如需 <br/>关键功能自测记录]
end

%% 泳道:测试负责人
subgraph QA[测试负责人]
direction TB
QA1[组织测试/回归] --> QA2[版本冻结<br/>分支+Commit/Tag+构建号/制品ID]
QA2 --> QA3{测试结论=可上线?}
QA3 -->|不可上线| QA4[退回开发修复<br/>列阻断缺陷+复测点]
QA3 -->|可上线| QA5[上线前复核<br/>一致性/回滚/巡检项/窗口]
QA5 --> QA6[执行生产发版<br/>仅允许冻结制品]
QA6 --> QA7[线上验证 20-30min <br/>按验证点记录]
QA7 --> QA8[巡检 60-90min <br/>错误率/延迟/资源/日志/业务]
QA8 --> QA9{触发回滚阈值?}
QA9 -->|是| QA10[执行回滚/补偿<br/>记录&复盘]
QA9 -->|否| QA11[归档上线单<br/>记录巡检结论]
end

%% 泳道:DBA
subgraph DBA[DBA]
direction TB
DBA1{是否涉及SQL/数据变更?}
DBA2{审批: 执行计划/索引/锁风险<br/>分批策略/回滚脚本/验证SQL} -->|拒绝| DBA3[退回修改SQL/方案]
DBA2 -->|通过| DBA4[确认生产执行计划<br/>顺序/窗口/预计时长]
DBA4 --> DBA5[生产执行确认&结果验证]
end

%% 泳道:经理
subgraph MGR[开发经理/技术经理]
direction TB
MGR1{审批: 上线窗口/并行上线协调<br/>风险等级/回滚时限} -->|拒绝/延期| MGR2[调整窗口/拆分/灰度策略]
MGR1 -->|通过| MGR3[批准上线<br/>确认批次/顺序 如并行]
end

%% 跨泳道连线
DEV2 --> LEAD1
LEAD2 --> DEV3
DEV3 --> DEV1

LEAD3 --> QA1

QA2 --> DBA1
DBA1 -->|否| MGR1
DBA1 -->|是| DBA2
DBA3 --> DEV3
DBA2 --> MGR1
MGR2 --> QA5
MGR3 --> QA6

QA4 --> DEV3
DBA4 --> QA6
DBA5 --> QA8