diff --git a/docs/design/architecture/总体架构设计.md b/docs/design/architecture/总体架构设计.md index 902ae76..ee590da 100644 --- a/docs/design/architecture/总体架构设计.md +++ b/docs/design/architecture/总体架构设计.md @@ -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 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(); +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 wps); // groupId 参数 +``` + +### 报告 + +报告新增多编队汇总: + +```markdown +## 编队汇总 +| 编队 | 目标 | 数量 | 拦截方案 | 结果 | +|------|------|------|------|------| +| 编队A | 活塞 | 3 | 惰性气体 12发 | ✅ 全毁 | +| 编队B | 喷气 | 2 | 活性材料 8发 | ⚠️ 1逃脱 | +``` + +--- + ## 十、配置向导步骤(整合后) 整合需求 V1.0 和技术要求终版后,配置向导保持 5 步但内容调整: