From 5369c2a6aac67412f8ba0c89967631dc38d32ad2 Mon Sep 17 00:00:00 2001
From: tian <11429339@qq.com>
Date: Fri, 12 Jun 2026 11:53:17 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E5=91=8A=E5=8A=A0=E6=8E=A8=E8=8D=90?=
=?UTF-8?q?=E6=96=B9=E6=A1=88=E6=AE=B5=E8=90=BD=EF=BC=9A=E5=BC=B9=E8=8D=AF?=
=?UTF-8?q?=E6=95=B0/=E9=97=B4=E8=B7=9D/=E6=8B=A6=E6=88=AA=E6=A6=82?=
=?UTF-8?q?=E7=8E=87,=20129=E6=B5=8B=E8=AF=95=E9=80=9A=E8=BF=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Algorithms/DefaultDefenseAdvisor.cs | 3 +++
.../Models/CloudDispersal.cs | 7 +++++
.../Services/ReportGenerator.cs | 26 ++++++++++++++-----
3 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/src/CounterDrone.Core/Algorithms/DefaultDefenseAdvisor.cs b/src/CounterDrone.Core/Algorithms/DefaultDefenseAdvisor.cs
index f876a57..93e5b3b 100644
--- a/src/CounterDrone.Core/Algorithms/DefaultDefenseAdvisor.cs
+++ b/src/CounterDrone.Core/Algorithms/DefaultDefenseAdvisor.cs
@@ -133,6 +133,9 @@ namespace CounterDrone.Core.Algorithms
Source = "Algorithm",
PositionMode = (int)PositionMode.AlgorithmRecommended,
RecommendedTiming = recommendedTiming,
+ SalvoRounds = roundsNeeded,
+ SalvoSpacing = spacing,
+ EstimatedProbability = prob,
};
// 平台部署:假设齐射(同时发射),每门炮打一发后冷却 5s
diff --git a/src/CounterDrone.Core/Models/CloudDispersal.cs b/src/CounterDrone.Core/Models/CloudDispersal.cs
index cf3ccc7..3343cfa 100644
--- a/src/CounterDrone.Core/Models/CloudDispersal.cs
+++ b/src/CounterDrone.Core/Models/CloudDispersal.cs
@@ -45,5 +45,12 @@ namespace CounterDrone.Core.Models
public double? CriticalPosY { get; set; }
public double? CriticalPosZ { get; set; }
public double? CriticalTiming { get; set; }
+
+ /// 推荐弹药数(算法填充)
+ public int SalvoRounds { get; set; }
+ /// 云团展开间距(m)(算法填充)
+ public double SalvoSpacing { get; set; }
+ /// 算法估计拦截概率(算法填充)
+ public double? EstimatedProbability { get; set; }
}
}
diff --git a/src/CounterDrone.Core/Services/ReportGenerator.cs b/src/CounterDrone.Core/Services/ReportGenerator.cs
index a131459..0800fca 100644
--- a/src/CounterDrone.Core/Services/ReportGenerator.cs
+++ b/src/CounterDrone.Core/Services/ReportGenerator.cs
@@ -27,7 +27,6 @@ namespace CounterDrone.Core.Services
sb.AppendLine($"| 任务编号 | {config.Task.TaskNumber} |");
sb.AppendLine($"| 仿真耗时 | {simulationDuration:F1} 秒 |");
sb.AppendLine($"| 气溶胶类型 | {TranslateAerosol((AerosolType)config.Cloud.AerosolType)} |");
- sb.AppendLine($"| 拦截概率(算法估计) | {(config.Cloud.Source == "Algorithm" ? "见推荐方案" : "手动配置")} |");
sb.AppendLine();
// === 一、环境 ===
@@ -54,8 +53,23 @@ namespace CounterDrone.Core.Services
sb.AppendLine($"| 动力 | {TranslatePower((PowerType)(target?.PowerType ?? 0))} |");
sb.AppendLine();
- // === 二、我方部署 ===
- sb.AppendLine("## 三、我方部署");
+ // === 三、推荐方案 ===
+ if (config.Cloud.Source == "Algorithm" && config.Cloud.EstimatedProbability.HasValue)
+ {
+ sb.AppendLine("## 三、推荐方案");
+ sb.AppendLine();
+ sb.AppendLine($"| 参数 | 值 |");
+ sb.AppendLine($"|------|-----|");
+ sb.AppendLine($"| 气溶胶类型 | {TranslateAerosol((AerosolType)config.Cloud.AerosolType)} |");
+ sb.AppendLine($"| 弹药数 | {config.Cloud.SalvoRounds} 发 |");
+ sb.AppendLine($"| 云团间距 | {config.Cloud.SalvoSpacing:F0} m |");
+ sb.AppendLine($"| 拦截概率(算法估计) | {config.Cloud.EstimatedProbability.Value:P0} |");
+ sb.AppendLine($"| 抛撒时机 | {config.Cloud.RecommendedTiming:F0}s |");
+ sb.AppendLine();
+ }
+
+ // === 四、我方部署 ===
+ sb.AppendLine("## 四、我方部署");
sb.AppendLine();
sb.AppendLine($"| 装备 | 数量 |");
sb.AppendLine($"|------|------|");
@@ -66,7 +80,7 @@ namespace CounterDrone.Core.Services
sb.AppendLine();
// === 三、事件时序 ===
- sb.AppendLine("## 四、事件时序");
+ sb.AppendLine("## 五、事件时序");
sb.AppendLine();
sb.AppendLine("| 时间(s) | 事件 | 详情 |");
sb.AppendLine("|---------|------|------|");
@@ -91,7 +105,7 @@ namespace CounterDrone.Core.Services
var launchTime = events.Where(e => e.Type == SimEventType.MunitionLaunched).Select(e => e.OccurredAt).DefaultIfEmpty(0).Min();
var cloudTime = events.Where(e => e.Type == SimEventType.CloudGenerated).Select(e => e.OccurredAt).DefaultIfEmpty(0).Min();
var destroyTime = events.Where(e => e.Type == SimEventType.DroneDestroyed).Select(e => e.OccurredAt).DefaultIfEmpty(0).Min();
- sb.AppendLine("## 五、时间线");
+ sb.AppendLine("## 六、时间线");
sb.AppendLine();
sb.AppendLine($"| 阶段 | 时间 | 耗时 |");
sb.AppendLine($"|------|------|------|");
@@ -109,7 +123,7 @@ namespace CounterDrone.Core.Services
var totalDrones = config.Targets.Sum(t => t.Quantity);
var result = DetermineInterceptResult(destroyed, reached + intruded, totalDrones);
- sb.AppendLine("## 六、结果统计");
+ sb.AppendLine("## 七、结果统计");
sb.AppendLine();
sb.AppendLine($"| 统计项 | 值 |");
sb.AppendLine($"|--------|-----|");