ai-native-devops

02 · CloudPilot MVP · PRD

阶段:AI-Native DevOps P1 愿景 → PRD 上游输入01-interview-notes.md 痛点清单 P1~P6 与功能种子 F1~F6 下游消费cloudpilot-mockup.html (UI/UX), 03-ddd-modeling.md (领域建模) 责任人:R-Lead(业务方) · AI 出草稿,三方评审定稿 AI 草稿置信度:高(基于完整访谈记录提取,结构化字段已对齐)


1. 背景与愿景

私有云资源申请目前依赖 OA 工单 + 运维手工配置,平均交付 2~3 天,规格手填易错,财务无法做项目级成本归因。

愿景:用一个轻量的自助平台 CloudPilot,让研发团队 30 分钟内完成”提交 → 批准 → 配置可用” 的闭环,同时给财务提供项目级成本视图。


2. 目标 / 非目标

类型 内容
目标 G1 资源申请到可用的中位数时长 ≤ 30 分钟
目标 G2 申请规格 100% 来自结构化选项,零自由文本
目标 G3 财务可在仪表盘看到项目维度的当月已发生 + 预计费用
目标 G4 申请人可自助释放资源
非目标 N1 跨云调度、跨云迁移
非目标 N2 财务结算清算、发票冲账
非目标 N3 跨 BU 复杂审批流(先用兜底人工,后续迭代)
非目标 N4 真实云 SDK 集成(MVP 仅 Mock,P5 决定切换时机)

3. 用户画像

角色 主要诉求 关键操作
申请人(研发) 自助、快、看价格 提交申请、查看自己的申请、释放资源
审批人(团队负责人) 看到全队申请、判断合理性 批准 / 驳回
财务(FinOps) 项目级成本可见 查看成本中心

4. 核心流程

sequenceDiagram
    participant U as 申请人
    participant S as CloudPilot
    participant A as 审批人
    participant P as Mock Provisioner
    U->>S: 1. 选类型/规格/时长/项目
    S-->>U: 2. 实时报价 (< 500ms)
    U->>S: 3. 提交申请 (PENDING)
    S->>A: 4. 推送待审
    A->>S: 5. 批准 (APPROVED)
    S->>P: 6. 异步触发 ResourceProvisionRequested
    P-->>S: 7. ≤ 30min 后 PROVISIONED
    U->>S: 8. (按需) 释放 → RELEASED

5. 功能需求(FR)

ID 名称 描述 痛点映射 优先级
FR-01 自助下单 结构化表单:类型 / 规格 / 时长 / 项目 / 用途 P1, P2 P0
FR-02 实时报价 提交前根据报价表实时计算总价,< 500ms P3 P0
FR-03 幂等提交 requestId 重复提交仅创建一条 NFR P0
FR-04 审批工作流 审批人对 PENDING 单批准 / 驳回(含原因) P6 P0
FR-05 自动配置 批准后 ≤ 30 min 自动 PROVISIONED(MVP 用 Mock) P1 P0
FR-06 申请视图 申请人查看自己提交的申请及状态 P0
FR-07 资源释放 申请人对 PROVISIONED 资源主动释放 P4 P0
FR-08 项目成本中心 项目维度展示资源数 / 已发生费用 / 预计本月 P5 P0
FR-09 仪表盘 KPI 运行中资源、本月费用、待审批、平均交付时间 P1
FR-10 7 日成本趋势 仪表盘柱状图 P5 P1
FR-11 到期告警 / 自动回收 接近到期推送告警,可配置自动回收 P4 P2(后续迭代)

6. 非功能需求(NFR)

ID 维度 指标
NFR-01 性能 报价响应 < 500ms (P95)
NFR-02 性能 审批后 PROVISIONED 时延 ≤ 30 分钟 (P95)
NFR-03 可靠 同一 requestId 幂等,重复提交不重复创建
NFR-04 安全 申请人只能看到自己的申请;审批人只能审本团队;财务可看全量
NFR-05 审计 每次状态变更入审计日志(who / when / why)
NFR-06 可演进 Mock 实现与真实云 SDK 共享同一接口契约(Provisioner 接口)

7. 数据模型骨架

对象 关键字段
ResourceRequest id, type, spec, days, project, applicant, status, cost, createdAt, approvedAt, provisionedAt, releasedAt, rejectedReason
PricingTable (type, spec) → 单价/天
AuditEvent requestId, action, actor, timestamp, payload

状态机(详细约束见 03-ddd-modeling.md §III 战术 / @ddd-aggregates):

PENDING ──批准──▶ APPROVED ──30min──▶ PROVISIONED ──释放──▶ RELEASED
   │
   └──驳回──▶ REJECTED

8. 验收标准(AC,给 P6 质量门禁)

AC 描述 验证方式
AC-01 FR-01 表单仅允许枚举值,自由文本字段无法影响计费 契约测试 + UI E2E
AC-02 FR-02 报价 P95 < 500ms 性能测试
AC-03 FR-03 同 requestId 二次提交,记录数仍为 1 单测 + 集成测试
AC-04 FR-05 Mock 30s ≈ 真实 30min;状态自动推进 集成测试
AC-05 NFR-04 越权访问返回 403 安全扫描
AC-06 NFR-05 审计日志覆盖所有状态变更 日志审计

9. 上线策略


10. 待澄清

# 问题 待与谁确认
Q1 跨项目共享资源的成本如何分摊?(FR-08) FIN
Q2 审批人不在线超过 4 小时是否升级? R-Lead
Q3 RELEASED 之后的历史费用是否纳入预计本月? FIN

Q1~Q3 在 P3 领域建模阶段二次确认,输出到 03-ddd-modeling.md @ddd-discover 的”热点 / 歧义清单”。