设计文档: 多批次多编队支持 — RoutePlan改复合PK + 独立拦截方案 + 报告汇总

This commit is contained in:
tian 2026-06-12 15:08:47 +08:00
parent 9ac4a8494c
commit a0d8afb42a

View File

@ -257,7 +257,7 @@ CounterDroneBackend_Data/
TargetConfig — 步骤2目标配置
EquipmentDeployment — 步骤3装备部署搭载平台+探测设备)
CloudDispersal — 步骤4云团抛撒配置
RoutePlan — 步骤5航路规划
RoutePlan — 步骤5航路规划1:N SimTask多编队
Waypoint — 航路点
Group — 编组(独立管理)
SimulationReport — 仿真报告
@ -414,10 +414,12 @@ CounterDroneBackend_Data/
#### RoutePlan — 步骤5航路规划
> **支持多批次**:通过 `TaskId + GroupId` 唯一标识一条航路,一个任务可有多个编队各自独立航路。
| 字段 | 类型 | 约束 | 说明 |
|------|------|------|------|
| TaskId | TEXT | PK, FK | 1:1 SimTask |
| GroupId | TEXT | FK | 关联无人机编队 Group |
| TaskId | TEXT | PK(复合) | |
| GroupId | TEXT | PK(复合), FK → Group | 关联编队:同一任务不同编队可有独立航路 |
| FormationMode | INTEGER | | 0单机 1编队 2蜂群 |
| FormationSpacing | REAL | DEFAULT 50 | m |
| ETA | TEXT | | 预计到达时间 |
@ -1268,8 +1270,8 @@ interface IScenarioService
void SaveRoute(string taskId, RoutePlan route, List<Waypoint> wps);
void UpdateStep(string taskId, int step);
// 算法推荐NEW
DispersalRecommendation GetDispersalRecommendation(string taskId);
// 综合防御推荐NEW — 多编队版
DefenseRecommendation GetDefenseRecommendation(string taskId);
}
// === 仿真引擎 ===
@ -1308,6 +1310,79 @@ interface IReportService
---
## 九-A、多批次多编队设计
### 数据模型
一个仿真任务可包含**多种类型、多批次**的无人机,每批次(编队)有独立的航路:
```
SimTask "城市防御演习"
├── CombatScene共享
├── ControlZone[](共享)
├── CloudDispersal共享云团参数具体拦截方案由算法确定
├── 编队 A活塞×3 ← Group.Id
│ ├── TargetConfig类型=活塞,数量=3
│ ├── RoutePlan航路 A北→南
│ └── Waypoint[]
├── 编队 B喷气×2 ← Group.Id
│ ├── TargetConfig类型=高速,数量=2
│ ├── RoutePlan航路 B西→东
│ └── Waypoint[]
└── 编队 C旋翼×5 ← Group.Id
├── TargetConfig类型=旋翼,数量=5
├── RoutePlan航路 C
└── Waypoint[]
```
**关键变更**`RoutePlan` 主键从 `TaskId` 改为 `(TaskId, GroupId)` 复合键。
### 推荐算法
```csharp
// 多批次:为每个编队独立生成拦截方案
var allSolutions = new List<DefenseSolution>();
foreach (var (target, route) in threat.Groups)
{
var rec = advisor.Recommend(target, route, environment);
allSolutions.Add(rec.Best);
}
// 合并所有发射计划PlatformIndex 去重
var mergedSchedule = MergeFireSchedules(allSolutions);
engine.SetFireSchedule(mergedSchedule);
```
### 数据表变更
| 表 | 变更 |
|------|------|
| `RoutePlan` | PK 改为 (TaskId, GroupId) 复合键 |
| `TargetConfig` | 不变(已有 GroupId FK |
| `Waypoint` | 关联 `(TaskId, GroupId)` 定位航路 |
`IScenarioService` 新增:
```csharp
void SaveRoute(string taskId, string groupId, RoutePlan route, List<Waypoint> wps); // groupId 参数
```
### 报告
报告新增多编队汇总:
```markdown
## 编队汇总
| 编队 | 目标 | 数量 | 拦截方案 | 结果 |
|------|------|------|------|------|
| 编队A | 活塞 | 3 | 惰性气体 12发 | ✅ 全毁 |
| 编队B | 喷气 | 2 | 活性材料 8发 | ⚠️ 1逃脱 |
```
---
## 十、配置向导步骤(整合后)
整合需求 V1.0 和技术要求终版后,配置向导保持 5 步但内容调整: