feat(ops): 新增手动操作枚举与模型定义

引入统一手动动作基础设施:
- ManualActionTypeEnum: 手动动作类型(创建/派单/取消/完单/升级)
- OrderActionSourceEnum: 动作来源(管理后台/开放接口)
- OrderAuditPayloadKeys: 审计 payload 标准化 key
- OrderEventTypeEnum: 事件类型枚举值对齐状态机(DISPATCHED/QUEUED/CONFIRMED)
- OperatorContext: 统一操作人上下文
- *Command: 手动动作命令模型(Dispatch/Cancel/Complete/UpgradePriority)
- OrderBusinessStrategy: 条线策略接口

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
lzh
2026-03-27 15:53:20 +08:00
parent 4dffd21751
commit e1d967a65e
21 changed files with 1176 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
package com.viewsh.module.ops.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 手动动作类型枚举
* <p>
* 标识管理员手动执行的工单操作类型,用于审计日志的 actionType 字段。
*
* @author lzh
*/
@Getter
@AllArgsConstructor
public enum ManualActionTypeEnum {
MANUAL_CREATE("MANUAL_CREATE", "手动创建"),
MANUAL_DISPATCH("MANUAL_DISPATCH", "手动派单"),
MANUAL_UPGRADE_PRIORITY("MANUAL_UPGRADE_PRIORITY", "手动升级优先级"),
MANUAL_CANCEL("MANUAL_CANCEL", "手动取消"),
MANUAL_COMPLETE("MANUAL_COMPLETE", "手动完单"),
;
private final String type;
private final String name;
}

View File

@@ -0,0 +1,24 @@
package com.viewsh.module.ops.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 工单动作来源枚举
* <p>
* 标识手动动作的发起来源渠道。
*
* @author lzh
*/
@Getter
@AllArgsConstructor
public enum OrderActionSourceEnum {
ADMIN_CONSOLE("ADMIN_CONSOLE", "管理后台"),
OPEN_API("OPEN_API", "开放接口"),
SYSTEM_TASK("SYSTEM_TASK", "系统定时任务"),
;
private final String source;
private final String name;
}

View File

@@ -0,0 +1,32 @@
package com.viewsh.module.ops.enums;
/**
* 工单审计 payload 键名常量
* <p>
* 统一 ops_business_event_log.event_payload 中的稳定键名,
* 确保保洁/安保/工程/客服各条线写入一致的 payload 结构。
*
* @author lzh
*/
public final class OrderAuditPayloadKeys {
private OrderAuditPayloadKeys() {}
// ===== 通用字段 =====
public static final String BUSINESS_TYPE = "businessType";
public static final String ACTION_TYPE = "actionType";
public static final String MANUAL = "manual";
public static final String SOURCE = "source";
public static final String REASON = "reason";
// ===== 派单相关 =====
public static final String ASSIGNEE_ID = "assigneeId";
public static final String ASSIGNEE_NAME = "assigneeName";
// ===== 优先级相关 =====
public static final String OLD_PRIORITY = "oldPriority";
public static final String NEW_PRIORITY = "newPriority";
// ===== 完单相关 =====
public static final String RESULT = "result";
}

View File

@@ -0,0 +1,34 @@
package com.viewsh.module.ops.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 工单事件类型枚举
* <p>
* 标准化 ops_order_event.event_type 字段的值,
* 禁止在 controller/service/listener 中散落使用裸字符串。
*
* @author lzh
*/
@Getter
@AllArgsConstructor
public enum OrderEventTypeEnum {
CREATE("CREATE", "工单创建"),
ASSIGN("ASSIGN", "工单分配"),
ENQUEUE("QUEUED", "任务入队"),
DISPATCH("DISPATCHED", "任务派发"),
ACCEPT("ACCEPT", "接单确认"),
CONFIRM("CONFIRMED", "工单确认"),
ARRIVE("ARRIVE", "到岗确认"),
PAUSE("PAUSE", "工单暂停"),
RESUME("RESUME", "恢复作业"),
COMPLETE("COMPLETE", "工单完成"),
CANCEL("CANCEL", "工单取消"),
UPGRADE_PRIORITY("UPGRADE_PRIORITY", "优先级升级"),
;
private final String type;
private final String name;
}