REVISION_TASK_FLOWCHART.md 15 KB

改图任务系统 - 可视化流程图

📊 一、表单填写决策树

用户点击"创建改图任务"
          ↓
    显示弹窗
          ↓
   选择任务类型
          ↓
     ┌─────┴─────┐
     │           │
  小修改      大修改
     │           │
     │         勾选空间
     │           │
     │         选择时间
     │       ┌───┴───┐
     │    2-3天    自定义
     │       │        │
     │       │     输入天数
     │       └───┬───┘
     │           │
     └─────┬─────┘
           │
      填写描述
           ↓
      ┌────┴────┐
      │ 验证    │
      └────┬────┘
           │
     ┌─────┴─────┐
    否           是
     │            │
  按钮禁用    按钮可点击
                  ↓
              点击"提交"
                  ↓
            ┌─────┴─────┐
         小修改        大修改
            │            │
     保存到minorRevisions  保存到revisionTasks
            │            │
      "小修改已记录"   "工单已创建,等待审批"
            │            │
            └──────┬─────┘
                   ↓
             刷新工单数量
                   ↓
               关闭弹窗

🔄 二、完整状态流转图

小修改流程

创建小修改
     ↓
  记录到数据库
     ↓
   ✅ 完成
(无需审批、报价、确认)

大修改流程

创建工单
     ↓
pending_approval (待审批)
     ↓
   组长审批
     ↓
  ┌───┴───┐
  │       │
批准    驳回
  │       │
  │    rejected
  │    (已驳回)
  │       ↓
  │     ❌ 结束
  │
approved (已批准)
  ↓
客服报价
  ↓
quoted (已报价)
  ↓
客户确认 (TODO)
  ↓
confirmed (执行中)
  ↓
设计师完成
  ↓
completed (已完成)
  ↓
✅ 结束

注:任何阶段都可以取消 → cancelled

👥 三、角色操作权限图

┌─────────────────────────────────────────────┐
│                   工单状态                   │
├───────────┬──────────┬──────────┬──────────┤
│ 操作/角色  │ 设计师   │ 组长     │ 客服     │
├───────────┼──────────┼──────────┼──────────┤
│ 创建工单   │   ✅     │   ✅     │   ❌     │
├───────────┼──────────┼──────────┼──────────┤
│ 审批工单   │   ❌     │   ✅     │   ❌     │
│(待审批→批准)│          │          │          │
├───────────┼──────────┼──────────┼──────────┤
│ 驳回工单   │   ❌     │   ✅     │   ❌     │
│(待审批→驳回)│          │          │          │
├───────────┼──────────┼──────────┼──────────┤
│ 报价工单   │   ❌     │   ❌     │   ✅     │
│(已批准→报价)│          │          │          │
├───────────┼──────────┼──────────┼──────────┤
│ 完成工单   │   ✅     │   ✅     │   ❌     │
│(执行中→完成)│          │          │          │
├───────────┼──────────┼──────────┼──────────┤
│ 取消工单   │   ❌     │   ✅     │   ✅     │
│(任意→取消)  │          │          │          │
└───────────┴──────────┴──────────┴──────────┘

💾 四、数据存储结构图

Parse Server
    │
    └─ Project 表
          │
          ├─ id (项目ID)
          ├─ name (项目名称)
          ├─ currentStage (当前阶段)
          │
          └─ data (JSON字段)
                │
                ├─ minorRevisions[] ← 小修改记录
                │     │
                │     ├─ [0]
                │     │   ├─ id: "MR_xxx"
                │     │   ├─ description: "修改描述"
                │     │   ├─ createdBy: "设计师ID"
                │     │   └─ createdAt: Date
                │     │
                │     └─ [1] ...
                │
                ├─ revisionTasks[] ← 大修改工单
                │     │
                │     ├─ [0]
                │     │   ├─ id: "RT_xxx"
                │     │   ├─ type: "major"
                │     │   ├─ spaceIds: ["空间1", "空间2"]
                │     │   ├─ estimatedDays: "2-3天"
                │     │   ├─ description: "修改描述"
                │     │   ├─ status: "pending_approval"
                │     │   ├─ createdBy: "设计师ID"
                │     │   ├─ approvedBy?: "组长ID"
                │     │   ├─ quotedBy?: "客服ID"
                │     │   ├─ quotedPrice?: 500
                │     │   └─ completedBy?: "设计师ID"
                │     │
                │     └─ [1] ...
                │
                ├─ deliveryMessages[] ← 交付消息
                │
                └─ quotation{} ← 报价信息

🎨 五、UI 组件关系图

stage-delivery-new.component
    │
    ├─ 创建改图任务按钮
    │     ↓ (click)
    │  showRevisionTaskModal = true
    │     ↓
    │  <app-revision-task-modal>
    │     │
    │     ├─ @Input() visible
    │     ├─ @Input() projectId
    │     ├─ @Input() availableSpaces ← cachedRevisionSpaces
    │     ├─ @Input() currentUser
    │     │
    │     ├─ @Output() close
    │     └─ @Output() created
    │           ↓
    │      onRevisionTaskCreated(taskId)
    │           ↓
    │      loadRevisionTaskCount()
    │
    └─ 改图工单按钮 (带徽章)
          ↓ (click)
       showRevisionTaskList = true
          ↓
       <app-revision-task-list>
          │
          ├─ @Input() projectId
          ├─ @Input() currentUser
          ├─ @Input() isTeamLeader
          ├─ @Input() isCustomerService
          │
          ├─ @Output() close
          └─ @Output() refresh
                ↓
           loadRevisionTaskCount()

🔔 六、通知流程图(TODO)

工单状态变更
     ↓
  触发事件
     ↓
┌────┴────┐
│         │
│  事件类型 │
│         │
└────┬────┘
     │
     ├─ 创建工单 → 通知组长
     │              ↓
     │         企业微信消息
     │         "【待审批】设计师XXX提交了改图工单"
     │
     ├─ 审批通过 → 通知客服
     │              ↓
     │         企业微信消息
     │         "【待报价】改图工单已审批通过"
     │
     ├─ 报价完成 → 通知客户
     │              ↓
     │         短信/微信
     │         "您的改图工单报价已完成,请确认"
     │
     ├─ 客户确认 → 通知设计师
     │              ↓
     │         企业微信消息
     │         "【开始执行】客户已确认改图工单"
     │
     ├─ 工单完成 → 通知所有人
     │              ↓
     │         企业微信消息
     │         "【已完成】改图工单已完成"
     │
     └─ 驳回工单 → 通知创建人
                    ↓
               企业微信消息
               "【已驳回】工单被驳回:驳回原因"

📱 七、消息同步机制(待实现)

事件源
  ├─ 创建工单
  ├─ 更新状态
  └─ 完成工单
       ↓
  Parse Cloud Code
       ↓
  ┌────┴────┐
  │         │
实时推送  消息队列
  │         │
  │    企业微信API
  │         │
  ├─────────┘
  ↓
WebSocket
  ↓
前端接收
  ↓
┌─────┴─────┐
│           │
更新UI    通知提示
│           │
└─────┬─────┘
      ↓
  用户看到更新

🧪 八、测试流程图

开始测试
    ↓
┌───┴───┐
│       │
│ 测试类型│
│       │
└───┬───┘
    │
    ├─ 单元测试
    │     ↓
    │  表单验证测试
    │     ├─ 描述必填
    │     ├─ 空间必选(大修改)
    │     └─ 自定义天数≥1
    │     ↓
    │  提交逻辑测试
    │     ├─ 小修改不创建工单
    │     └─ 大修改创建工单
    │     ↓
    │  ✅ 单元测试通过
    │
    ├─ 集成测试
    │     ↓
    │  完整流程测试
    │     ├─ 创建 → 审批 → 报价 → 完成
    │     ├─ 创建 → 驳回
    │     └─ 小修改流程
    │     ↓
    │  权限测试
    │     ├─ 设计师不能审批
    │     └─ 客服不能审批
    │     ↓
    │  数据同步测试
    │     ├─ 工单数量更新
    │     └─ 列表刷新
    │     ↓
    │  ✅ 集成测试通过
    │
    └─ E2E测试
          ↓
       模拟用户操作
          ├─ 点击按钮
          ├─ 填写表单
          ├─ 提交工单
          └─ 查看列表
          ↓
       验证结果
          ├─ UI正确显示
          ├─ 数据正确保存
          └─ 通知正确发送
          ↓
       ✅ E2E测试通过
          ↓
       测试完成

🐛 九、问题排查流程图

发现问题
    ↓
问题类型?
    ↓
┌───┴───┐
│       │
│       │
│       │
└───┬───┘
    │
    ├─ 页面卡顿
    │     ↓
    │  检查控制台
    │     ↓
    │  ngOnChanges频繁调用?
    │     ├─ 是 → 检查模板绑定
    │     │       ├─ 使用方法?→ 改为属性
    │     │       └─ 刷新浏览器
    │     └─ 否 → 检查其他性能问题
    │
    ├─ 按钮无响应
    │     ↓
    │  检查按钮状态
    │     ├─ disabled?→ 检查验证逻辑
    │     ├─ submitting?→ 等待提交完成
    │     └─ z-index被遮挡?→ 检查CSS
    │
    ├─ 数据不显示
    │     ↓
    │  检查网络请求
    │     ├─ 失败?→ 检查Parse连接
    │     └─ 成功?→ 检查数据处理逻辑
    │
    └─ 工单数量不更新
          ↓
       检查刷新逻辑
          ├─ loadRevisionTaskCount调用?
          └─ 刷新页面
          ↓
       问题解决?
          ├─ 是 → ✅ 完成
          └─ 否 → 查看详细日志

📊 十、性能监控流程

用户操作
    ↓
记录时间戳
    ↓
┌───┴───┐
│       │
│  操作类型│
│       │
└───┬───┘
    │
    ├─ 创建工单
    │     ├─ 开始时间
    │     ├─ 表单验证时间
    │     ├─ API调用时间
    │     └─ 结束时间
    │     ↓
    │  计算总耗时
    │     ↓
    │  ✅ <1秒 正常
    │  ⚠️ 1-3秒 可接受
    │  ❌ >3秒 需优化
    │
    ├─ 加载列表
    │     ├─ 开始时间
    │     ├─ 数据加载时间
    │     ├─ 渲染时间
    │     └─ 结束时间
    │     ↓
    │  计算总耗时
    │     ↓
    │  ✅ <500ms 正常
    │  ⚠️ 500ms-1s 可接受
    │  ❌ >1s 需优化
    │
    └─ 状态更新
          ├─ 开始时间
          ├─ API调用时间
          ├─ UI更新时间
          └─ 结束时间
          ↓
       计算总耗时
          ↓
       记录到监控系统
          ↓
       生成性能报告

🚀 十一、发布流程图

开发完成
    ↓
代码审查
    ↓
单元测试
    ↓
集成测试
    ↓
E2E测试
    ↓
所有测试通过?
    ├─ 否 → 修复问题 → 重新测试
    └─ 是
        ↓
    预发布环境
        ↓
    冒烟测试
        ↓
    性能测试
        ↓
    安全扫描
        ↓
    文档更新
        ↓
    准备发布
        ↓
    ┌───┴───┐
    │       │
 灰度发布  全量发布
    │       │
 10%用户  全部用户
    │       │
    └───┬───┘
        ↓
    监控指标
      ├─ 错误率
      ├─ 响应时间
      ├─ 用户反馈
      └─ 使用量
        ↓
    问题?
      ├─ 是 → 回滚 → 修复
      └─ 否
          ↓
      ✅ 发布完成
          ↓
      发布公告

📝 使用场景示例

场景1:设计师发现小问题

设计师发现问题
"客厅沙发颜色需要调整"
    ↓
点击"创建改图任务"
    ↓
选择"小修改"
    ↓
填写描述
    ↓
点击"提交"
    ↓
✅ 立即记录
无需等待审批
    ↓
继续工作

场景2:重大设计变更

客户要求大改动
"主卧背景墙更换+厨房增加吊柜"
    ↓
点击"创建改图任务"
    ↓
选择"大修改"(默认)
    ↓
勾选空间
  ✓ 主卧
  ✓ 厨房
    ↓
选择时间:"3-5天"
    ↓
填写详细描述
    ↓
点击"提交"
    ↓
✅ 工单已创建
等待组长审批
    ↓
(第二天)
组长审批通过
    ↓
客服报价:¥500
    ↓
客户确认
    ↓
开始执行
    ↓
(3天后)
设计师完成
    ↓
✅ 工单完成

场景3:工单被驳回

设计师创建工单
"增加豪华装修"
    ↓
提交工单
    ↓
组长审查发现问题
"超出预算,需求不明确"
    ↓
点击"驳回"
    ↓
填写原因
"请提供详细预算和具体方案"
    ↓
提交驳回
    ↓
❌ 工单被驳回
    ↓
设计师收到通知
    ↓
修改方案后重新提交

文档版本:v1.0
创建时间:2025-11-19 00:55
用途:可视化理解改图任务系统