# 5.2.XX管理模块设计说明

## 5.2.1.XX设计说明。

### 5.2.1.1.模块描述。

本模块对应 `1.4.1【操作执行-具备批处理功能】`，用于在多模型场景下按策略进行批量优化执行，覆盖任务创建、任务编排、历史追溯与调度优先级控制。

模块目标：

1. 支持一次选择多个模型并批量执行优化策略。
2. 支持任务创建向导，降低复杂参数配置门槛。
3. 支持批处理任务历史查看与结果回溯。
4. 支持任务调度与优先级，保障关键任务先执行。

### ·5.2.1.2.功能·。

1. 多模型批处理执行：
   - 支持多选模型建立同一批次任务。
   - 支持为批次统一设置优化策略（薄壳化、层级删除、几何优化等）。
   - 支持批次内并行/串行执行模式切换。
2. 任务创建向导：
   - 步骤1：选择模型（可搜索、可多选）。
   - 步骤2：选择策略模板（标准/激进/保守/自定义）。
   - 步骤3：配置参数（阈值、保留规则、输出路径）。
   - 步骤4：设置调度（开始时间、并发数、优先级）。
   - 步骤5：预览与确认创建。
3. 批处理任务历史查看：
   - 支持按时间、状态、策略、创建人检索历史。
   - 支持查看任务详情、子任务明细、执行日志、失败原因。
   - 支持历史任务复用为新任务模板（一键重跑）。
4. 调度与优先级：
   - 支持任务进入队列并统一调度执行。
   - 支持优先级分级（P0/P1/P2/P3）。
   - 支持运行中任务暂停、恢复、取消、重试。
   - 支持资源配额与并发上限控制，避免插件过载。

### 5.2.1.3.性能。

1. 采用批次任务拆分机制（Batch -> Job -> Step），提高长任务可控性。
2. 支持队列调度与并发上限，避免单机资源争抢导致失败率上升。
3. 任务状态采用增量更新（轮询/推送），减少全量刷新开销。
4. 历史查询提供分页与多条件过滤，保证大规模任务场景响应。

### 5.2.1.4.输入输出项·。

#### 1.字段输入输出。

输入字段：

1. `model_paths[]`：批处理模型路径列表。
2. `strategy_type`：策略类型（shell/hierarchy/geometry 等）。
3. `strategy_params`：策略参数集（阈值、保留规则、输出设置）。
4. `schedule_at`：计划执行时间。
5. `priority`：优先级（P0~P3）。
6. `max_concurrency`：批次最大并发数。
7. `created_by`：任务创建人。

输出字段：

1. `batch_id`：批处理任务唯一标识。
2. `status`：任务状态（Pending/Running/Completed/Failed/Cancelled）。
3. `progress`：整体进度与子任务进度。
4. `success_count/failed_count`：执行结果统计。
5. `started_at/completed_at/duration`：时间信息。
6. `error_summary`：失败摘要与可重试建议。

#### 2.界面交互输入输出。

输入交互：

1. 在任务向导中逐步配置批次。
2. 在任务列表中筛选、排序、查看详情。
3. 对任务执行暂停/恢复/取消/重试。

输出交互：

1. 批次创建成功提示与任务编号回显。
2. 实时进度条、状态标签、日志滚动展示。
3. 历史详情页展示每个模型的执行结论与输出文件。

### 5.2.1.5.算法

批处理调度算法：

1. 任务入队后按 `priority` 与 `create_time` 排序。
2. 在可用资源窗口内按 `max_concurrency` 分配执行槽。
3. 执行器按策略路由到对应 CAD 插件处理。
4. 子任务完成后聚合统计并更新批次状态。
5. 对失败子任务按重试策略（次数/间隔）执行补偿。

优先级评分算法（示意）：

1. `score = priority_weight + aging_weight + retry_penalty`
2. `priority_weight` 由 P0~P3 映射固定分值。
3. `aging_weight` 随排队时长递增，防止低优先级饥饿。
4. `retry_penalty` 控制频繁失败任务对队列影响。

### 5.2.1.6.流程逻辑

1. 用户进入任务向导，选择模型并配置策略参数。
2. 系统校验参数完整性并生成批处理任务。
3. 任务进入调度队列，按优先级和资源执行。
4. 批次执行过程中持续反馈进度、日志、异常。
5. 任务完成后写入历史库并生成结果报告。
6. 用户可在历史页追溯详情、导出报告、复用任务。

### ·5.2.1.7.接口。

任务创建接口：

1. `createBatchTask(payload)`：创建批次任务。
2. `validateBatchPayload(payload)`：创建前参数校验。

任务调度接口：

1. `getBatchTaskStatus(batchId)`：查询批次状态。
2. `pauseBatchTask(batchId)`：暂停任务。
3. `resumeBatchTask(batchId)`：恢复任务。
4. `cancelBatchTask(batchId)`：取消任务。
5. `retryBatchTask(batchId, options)`：失败重试。

任务历史接口：

1. `queryBatchHistory(filters, page)`：分页查询历史。
2. `getBatchTaskDetail(batchId)`：获取任务详情。
3. `cloneBatchTask(batchId)`：按历史任务创建新任务。
4. `exportBatchReport(batchId, format)`：导出批处理报告。

插件执行接口（策略路由）：

1. `executeShellStrategy(jobPayload)`
2. `executeHierarchyStrategy(jobPayload)`
3. `executeGeometryStrategy(jobPayload)`

### 5.2.1.8.注释设计

建议注释设计：

1. 调度层注释：明确队列顺序、优先级规则、并发控制点。
2. 执行层注释：明确策略路由与插件调用边界。
3. 失败补偿注释：说明重试次数、回退与告警触发条件。
4. 历史追溯注释：说明任务快照字段与审计字段含义。

### 5.2.1.9.数据结构。

批处理任务结构：

```
{
  "batch_id": "BATCH-20260226-0001",
  "models": [
    "D:\\CAD\\A.asm",
    "D:\\CAD\\B.asm"
  ],
  "strategy": {
    "type": "shell",
    "params": {
      "preserveExternalSurfaces": true,
      "confidenceThreshold": 0.7
    }
  },
  "schedule": {
    "schedule_at": "2026-02-26T14:30:00",
    "priority": "P1",
    "max_concurrency": 2
  },
  "status": "Pending"
}
```

子任务结构：

```
{
  "job_id": "JOB-0001",
  "batch_id": "BATCH-20260226-0001",
  "model_path": "D:\\CAD\\A.asm",
  "status": "Running",
  "progress": 45,
  "started_at": "2026-02-26T14:31:10",
  "result": null
}
```

任务历史结构：

```
{
  "batch_id": "BATCH-20260226-0001",
  "created_by": "admin",
  "created_at": "2026-02-26T14:29:00",
  "completed_at": "2026-02-26T14:52:30",
  "status": "Completed",
  "success_count": 8,
  "failed_count": 1,
  "report_url": "/reports/BATCH-20260226-0001.json"
}
```
