Files
Hugo/4a-system-design/ai-cicd.md
T

30 KiB
Raw Blame History

AI全流程兜底闭环

1. 核心理念

两个月自研一套对标泰岳的4A系统,不可能靠纯人工完成。AI不是锦上添花,而是项目成功的前提条件。

核心策略:AI最大化替代重复性工作,人工聚焦架构设计、安全审查和关键决策。


2. AI在各个阶段的介入点

2.1 开发阶段

┌─────────────────────────────────────────────────────────────────────┐
│  开发阶段 AI 介入                                                  │
│                                                                     │
│  ┌────────────────────┐  ┌────────────────────┐                     │
│  │  AI代码生成          │  │  AI代码审查          │                  │
│  │                     │  │                     │                   │
│  │  • API层CRUD代码     │  │  • 安全漏洞扫描       │                  │
│  │  • 数据模型→SQL      │  │    (SQL注入/XSS/越权) │                 │
│  │  • Service层业务逻辑   │  │  • 接口规范一致性检查   │                │
│  │  • 前端列表/表单页面   │  │  • 日志埋点完整性检查   │                │
│  │  • 单元测试代码       │  │  • 异常处理覆盖率检查   │                 │
│  │  • 接口文档生成       │  │  • 代码风格统一        │                  │
│  └────────────────────┘  └────────────────────┘                     │
│                                                                     │
│  ┌────────────────────┐  ┌────────────────────┐                     │
│  │  AI数据模型辅助      │  │  AI对接适配器生成    │                  │
│  │                     │  │                     │                   │
│  │  • 从泰岳界面反推     │  │  • 金科人脸API适配器   │                │
│  │    数据模型          │  │  • 消息中心API适配器   │                 │
│  │  • 字段映射脚本生成   │  │  • 现网账号同步适配器   │                │
│  │  • 数据迁移/同步     │  │  • 亚信接口规范适配器   │                 │
│  │    代码生成          │  │  • 泰岳接口模拟器      │                  │
│  └────────────────────┘  └────────────────────┘                     │
└─────────────────────────────────────────────────────────────────────┘

AI代码生成策略:

  1. 模型选型:使用 DeepSeek/Claude 等具有编程能力的模型
  2. Prompt模板化:为每种代码类型(API CRUD、数据模型、单元测试、接口适配层)建立标准 Prompt
  3. 微调/知识注入:将本项目的表结构定义、接口规范作为 System Prompt 上下文
  4. 人机协作:AI生成初稿 → 人工审查 → AI根据Review意见修正 → 循环至满意
  5. 生成量目标:争取 60-70% 的业务代码由AI完成初稿

2.2 测试阶段

┌──────────────────────────────────────────────────────────────────────┐
│  测试阶段 AI 介入                                                    │
│                                                                      │
│  1. 测试用例自动生成                                                   │
│     ┌──────────────────────────────────────────────────────────┐     │
│     │ 输入: API接口定义/数据模型/业务规则描述 → AI生成:       │     │
│     │   - 正常流程测试用例集                                    │     │
│     │   - 异常路径测试用例集(参数错误/越权/并发/超时)          │     │
│     │   - 边界条件测试用例集(空值/超长/特殊字符/数据溢出)      │     │
│     │   - 安全性测试用例(SQL注入/XSS/CSRF/越权枚举)            │     │
│     │   - 压力测试基准脚本                                      │     │
│     └──────────────────────────────────────────────────────────┘     │
│                                                                      │
│  2. 与泰岳版行为比对测试                                              │
│     ┌──────────────────────────────────────────────────────────┐     │
│     │ AI Agent 框架:                                           │     │
│     │                                                           │     │
│     │  ① AI录制泰岳版操作 → 生成操作序列                        │     │
│     │  ② AI将操作序列转为自动化测试脚本                          │     │
│     │  ③ AI同时在泰岳版和自研版执行测试脚本                      │     │
│     │  ④ AI比对两系统的:                                      │     │
│     │     - 接口请求/响应差异                                   │     │
│     │     - 界面元素/流程差异                                   │     │
│     │     - 数据持久化结果差异                                  │     │
│     │  ⑤ AI输出差异报告,标注关键程度                           │     │
│     └──────────────────────────────────────────────────────────┘     │
│                                                                      │
│  3. 回归测试自愈                                                    │
│     - 当代码变更导致测试失败时,AI自动分析失败原因                     │
│     - 测试预期结果过时?AI自动更新测试用例                            │
│     - 产品逻辑改变?AI识别并标记为"预期变化"                          │
│     - 测试环境问题?AI标记为"环境异常"而非"功能失败"                   │
└──────────────────────────────────────────────────────────────────────┘

2.3 部署阶段

┌──────────────────────────────────────────────────────────────────────┐
│  部署阶段 AI 介入                                                    │
│                                                                      │
│  1. 基础设施编排                                                     │
│     ┌───────────────────────────────────────────────────────────┐    │
│     │ AI生成 Ansible Playbook / Terraform 配置:                 │    │
│     │   - 服务器初始化(OS调优、安全基线配置)                    │    │
│     │   - 中间件部署(Nginx/Redis/MySQL/ES/MinIO)               │    │
│     │   - 应用部署(认证中心/资源中心/审计中心各模块)             │    │
│     │   - 网络策略配置(防火墙规则、反向代理、TLS证书)            │    │
│     └───────────────────────────────────────────────────────────┘    │
│                                                                      │
│  2. 配置差异自适应                                                   │
│     ┌───────────────────────────────────────────────────────────┐    │
│     │ 当部署失败时,AI分析错误日志:                               │    │
│     │   - 配置参数与环境不匹配?AI推荐正确值                       │    │
│     │   - 依赖组件版本冲突?AI推荐兼容版本组合                      │    │
│     │   - 权限问题?AI生成正确的权限设置命令                       │    │
│     │   - 网络不可达?AI诊断网络路径 + 推荐修复方案                │    │
│     └───────────────────────────────────────────────────────────┘    │
│                                                                      │
│  3. CI/CD Pipeline                                                  │
│     ┌───────────────────────────────────────────────────────────┐    │
│     │ 流水线步骤(AI辅助维护):                                  │    │
│     │                                                           │    │
│     │  [代码提交] → [AI代码审查] → [AI生成测试] → [自动编译]     │    │
│     │  → [单元测试] → [集成测试] → [AI比对测试] → [安全扫描]     │    │
│     │  → [构建镜像] → [部署到测试环境] → [冒烟测试] → [通知]     │    │
│     └───────────────────────────────────────────────────────────┘    │
└──────────────────────────────────────────────────────────────────────┘

2.4 运维阶段

┌──────────────────────────────────────────────────────────────────────┐
│  运维阶段 AI 介入                                                    │
│                                                                      │
│  1. 智能告警与根因分析                                                │
│     ┌───────────────────────────────────────────────────────────┐    │
│     场景1:用户反馈"登录不上了"                                    │    │
│     AI排查链路:API超时?→ Redis连接失败?→ Redis进程挂了?        │    │
│     → OOM被Killed?→ 内存泄漏?                                   │    │
│     根因定位后AI自动在5分钟内输出根因报告 + 修复方案               │    │
│                                                                     │
│     场景2:SSO跳转后白屏                                           │    │
│     AI排查链路:前端报错→ API返回500 → 后端日志ClassNotFound       │    │
│     → 发版时删了jar包 → 回滚建议                                    │    │
│     └───────────────────────────────────────────────────────────┘    │
│                                                                      │
│  2. 数据一致性巡检                                                   │
│     ┌───────────────────────────────────────────────────────────┐    │
│     AI Agent定时任务(每天凌晨执行):                              │    │
│     ✓ 自研系统账号数与现网账号平台对比 → 偏差 > 0.1% 告警          │    │
│     ✓ 昨日新增的日志量与API调用量匹配度 → 缺漏事件告警              │    │
│     ✓ 授权数据完整性和无循环引用 → 数据损坏告警                     │    │
│     ✓ 密钥轮换成功率检测 → 失败操作通知管理员                       │    │
│     └───────────────────────────────────────────────────────────┘    │
│                                                                      │
│  3. 性能基线追踪                                                     │
│     ┌───────────────────────────────────────────────────────────┐    │
│     持续采集:                                                     │    │
│     - API响应时间 P50/P95/P99(按接口维度)                       │    │
│     - 认证成功率/耗时趋势                                         │    │
│     - ES查询响应时间趋势                                          │    │
│     - 堡垒机并发数/响应延迟趋势                                    │    │
│                                                                     │
│     当性能偏离基线 > 20%时,AI自动生成性能分析报告                   │    │
│     与上一发版/配置变更/流量突增做关联分析                          │    │
│     └───────────────────────────────────────────────────────────┘    │
└──────────────────────────────────────────────────────────────────────┘

3. 与泰岳版的比对验证方案

3.1 验证框架

┌────────────────────────────────────────────────────────────────────────┐
│                        比对验证框架                                     │
│                                                                        │
│  ┌────────────────────┐    ┌────────────────────┐                      │
│  │ 功能覆盖度验证      │    │ 行为一致性验证      │                      │
│  ├────────────────────┤    ├────────────────────┤                      │
│  │ 工具: AI扫描 +     │    │ 工具: AI Agent      │                     │
│  │     功能矩阵表     │    │     录制→回放→比对   │                     │
│  │ 方法:              │    │ 方法:               │                     │
│  │ ① 列出泰岳版所有    │    │ ① 录制泰岳版操作    │                     │
│  │   功能点           │    │ ② 生成测试脚本       │                    │
│  │ ② 逐项标记自研版    │    │ ③ 在两系统执行       │                    │
│  │   覆盖状态         │    │ ④ AI比对行为差异     │                    │
│  │ ③ AI辅助识别遗漏   │    │ ⑤ 输出差异报告       │                    │
│  └────────────────────┘    └────────────────────┘                      │
│                                                                        │
│  ┌────────────────────┐    ┌────────────────────┐                      │
│  │ 性能基准验证        │    │ 安全基准验证        │                      │
│  ├────────────────────┤    ├────────────────────┤                      │
│  │ 工具: JMeter/k6    │    │ 工具: 安全扫描器+AI  │                     │
│  │ 方法:              │    │ 方法:               │                      │
│  │ ① 相同硬件上运行    │    │ ① OWASP Top10扫描   │                     │
│  │ ② 定义核心场景      │    │ ② 认证机制审查      │                     │
│  │   (登录/SSO/授权/   │    │ ③ 敏感数据加密审计   │                    │
│  │    日志查询)        │    │ ④ 越权测试         │                     │
│  │ ③ 逐步增加并发      │    │ ⑤ AI对比差异 +     │                     │
│  │ ④ AI输出对比曲线    │    │   给出安全建议       │                     │
│  └────────────────────┘    └────────────────────┘                      │
└────────────────────────────────────────────────────────────────────────┘

3.2 功能覆盖度矩阵(示例片段)

功能模块 功能点 泰岳版 自研版 完成度 备注
认证 密码认证 ✓ ✓ 100%
认证 短信验证码 ✓ ✓ 100%
认证 人脸识别认证 ✓ ✓ 100% 金科接口
认证 SIM卡无感认证 — ✓ 100% 自研特有
认证 LDAP集成 ✓ ☐ 0% 二期
认证 MFA策略配置 ✓ ✓ 100%
账号 账号新建 ✓ ✓ 100%
账号 账号批量导入 ✓ ✓ 100%
账号 账号同步(多源) ✓ ✓ 100%
账号 密码策略配置 ✓ ✓ 100%
应用SSO OIDC协议 ✓ ✓ 100%
应用SSO SAML协议 ✓ ✓ 80% 部分场景验证中
应用权限 RBAC模型 ✓ ✓ 100%
应用权限 ABAC策略 — ✓ 100% 自研特有
应用权限 临时授权 ✓ ✓ 100%
系统资源 资产纳管 ✓ ✓ 100%
系统资源 批量导入资产 ✓ ✓ 100%
系统资源 命令白名单 ✓ ✓ 100%
系统资源 命令拦截 ✓ ✓ 100%
系统资源 密码轮换 ✓ ✓ 50% 实现中
堡垒机 SSH单点登录 ✓ ✓ 100%
堡垒机 RDP单点登录 ✓ ☐ 0% 二期
堡垒机 会话录制 ✓ ✓ 100%
堡垒机 会话回放 ✓ ✓ 80% 播放器优化中
审计 操作日志 ✓ ✓ 100%
审计 合规规则引擎 — ✓ 100% 自研特有
审计 定时报表 ✓ ✓ 100%
审计 自定义报表 ✓ ✓ 80% 查询条件还在完善

3.3 比对验证AI Agent(核心设计)

验证Agent设计:

  输入:
    - 泰岳版API/界面操作录制
    - 自研版API/界面操作
    - 期望行为描述

  处理流程:
    1. 理解场景: 从录制内容中提取操作步骤和预期结果
    2. 脚本生成: 将操作步骤转换为可执行的测试脚本
    3. 双系统执行: 并行在泰岳版和自研版中执行
    4. 结果采集: 捕获接口请求/响应、页面状态、数据变更
    5. 差异分析: 
       - 返回JSON字段差异
       - 流程状态机步骤差异
       - 数据持久化差异
       - 错误处理差异
    6. 差异分级:
       Critical: 功能缺失/数据丢失
       Major: 行为不符合预期
       Minor: 界面/错误提示文本差异
       Info: 实现方式不同但结果一致
    7. 报告生成: 输出结构化差异报告

  输出:
    - 功能覆盖度百分比
    - 行为一致度评分
    - 差异清单(含分级和截图/调用链)
    - 建议排期(哪些差异需要立即修复)

4. 用户发现问题 → 闭环解决的AI全链路支持

4.1 问题闭环流程

┌──────────────────────────────────────────────────────────────────────┐
│  用户反馈 → AI初步诊断 → 自动修复/路由 → 人工确认 → 知识沉淀       │
│                                                                      │
│  阶段1: 用户反馈                                                     │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │ 用户: "我通过4A跳转到报销系统,显示'无权限',但我昨天还能用"    │   │
│  └──────────────────────────────────────────────────────────────┘   │
│         │                                                           │
│         ▼                                                           │
│  阶段2: AI初步诊断                                                   │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │ AI Agent 自动排查:                                           │   │
│  │  ① 查询该用户的权限分配记录(最近变更)                        │   │
│  │  ② 查询报销系统的应用注册配置是否变更                          │   │
│  │  ③ 查询用户所属组织的角色继承链路                               │   │
│  │  ④ 检查授权有效期是否已过期                                    │   │
│  │  ⑤ 模拟该用户的权限验证请求                                    │   │
│  │                                                               │   │
│  │ 初步结论:用户角色有效期已过期(昨日到期)                      │   │
│  └──────────────────────────────────────────────────────────────┘   │
│         │                                                           │
│         ▼                                                           │
│  阶段3: 自动修复 / 路由                                              │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │ 自动处理:                                                    │   │
│  │  ① 生成角色续期申请单(自动填充用户信息+原有角色)              │   │
│  │  ② 推送给用户的直接上级审批                                    │   │
│  │  ③ 回复用户:"经排查,您对报销系统的访问权限已于昨日到期。      │   │
│  │     已为您生成续期申请,请等待审批人确认,预计5分钟内恢复。"     │   │
│  └──────────────────────────────────────────────────────────────┘   │
│         │                                                           │
│         ▼                                                           │
│  阶段4: 人工确认                                                    │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │ 审批人确认 → 权限生效                                          │   │
│  │ AI自动通知用户:"权限已恢复,请重新登录报销系统"                │   │
│  └──────────────────────────────────────────────────────────────┘   │
│         │                                                           │
│         ▼                                                           │
│  阶段5: 知识沉淀                                                    │
│  ┌──────────────────────────────────────────────────────────────┐   │
│  │ AI将本次问题 + 排查链路 + 修复方案 存入"问题知识库"            │   │
│  │ 同类问题下次出现时,AI可更快定位 + 自动修复                    │   │
│  │ 定期输出"常见问题处理SOP" 给运维团队                           │   │
│  └──────────────────────────────────────────────────────────────┘   │
└──────────────────────────────────────────────────────────────────────┘

4.2 问题知识库设计

CREATE TABLE T_ISSUE_KNOWLEDGE (
    id              BIGINT       PRIMARY KEY AUTO_INCREMENT,
    issue_type      VARCHAR(64)  NOT NULL COMMENT '问题类型',
    symptom         TEXT         NOT NULL COMMENT '用户描述的症状',
    diagnosis_steps JSON         NOT NULL COMMENT '排查步骤(结构化)',
    root_cause      TEXT         COMMENT '根因分析',
    solution        TEXT         COMMENT '解决方案',
    auto_fixable    TINYINT      NOT NULL DEFAULT 0 COMMENT '是否可自动修复',
    auto_fix_script TEXT                  COMMENT '自动修复脚本/指令',
    severity        VARCHAR(16)  COMMENT 'high/medium/low',
    occurrence_count INT         NOT NULL DEFAULT 1,
    last_occurrence DATETIME,
    created_at      DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at      DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    INDEX idx_issue_type (issue_type),
    INDEX idx_symptom (symptom(100))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问题知识库';

4.3 AI闭环成熟度模型

阶段 能力 目标月份
L1: 人工全流程 用户反馈 → 人工排查 → 人工修复 第1个月
L2: AI辅助诊断 AI根据知识库推荐排查路径 + 建议修复方案 第1-2个月
L3: AI半自动修复 AI可处理 >50% 的常见问题(权限过期、配置错误等) 第2个月+
L4: AI全自动闭环 AI自动发现、自动诊断、自动修复、自动通知 后续迭代

5. 技术实现要点

5.1 AI工具链选型

用途 工具/平台 备注
代码生成 Claude / DeepSeek Coder 用于核心逻辑编写
代码审查 DeepSeek + 自定义规则 自动化Review
测试生成 AI Agent(自定义实现) 基于接口定义生成
比对验证 AI Agent 录制→回放→比对
部署编排 Ansible + AI生成Playbook 配置即代码
运维Agent 自建Agent框架 使用LLM API
知识库 向量数据库(Milvus/Chroma) 问题案例语义搜索

5.2 Prompt策略

场景 Prompt策略
代码生成 给出完整的表结构、接口规范、业务规则描述,要求严格遵循
测试生成 给出API定义,要求覆盖正常/异常/边界/安全场景
问题诊断 给出系统日志、用户描述、相关配置,要求结构化输出排查链路
比对验证 给出双系统的操作结果,要求逐字段比对并分级差异

5.3 重要提醒

AI不是银弹。关键约束:

  1. AI生成的代码必须经过人工安全审查——尤其涉及认证和授权的逻辑
  2. AI不擅长系统架构决策——架构师责任不可外包
  3. AI生成的测试用例依赖人类确认预期结果是否正确
  4. 数据一致性场景AI不能100%信任——关键路径需人工复核
  5. 泰岳版接口反推中,AI只能辅助分析,最终结论需人工验证