实施计划与任务跟踪
项目:反无人机仿真系统后端
文档版本:V1.4
更新日期:2026-06-15
一、阶段总览
Phase 1 ✅ 核心基础
Phase 2 ✅ 想定管理
Phase 3 ✅ 算法层
Phase 4 ✅ 仿真引擎
Phase 5 ✅ 报告生成
Phase 6 ✅ Unity 集成(桥接层 + 示例项目)
Phase 7 ✅ 打磨收尾
Phase 8 🔄 待开发(天气/物理模型统一已完成)
────────────────────────
已完成 P1-P7
二、各阶段详情
Phase 1:核心基础 ✅
目标:搭建项目骨架,数据层可读写,单元测试全绿。
测试:27 个
| # |
任务 |
状态 |
| 1.1-1.12 |
项目骨架、枚举、数据模型、Repository、ModelService、单元测试 |
✅ |
Phase 2:想定管理 ✅
目标:仿真任务的完整 CRUD + 5 步配置保存/加载 + 搜索分页。
测试:20 个
| # |
任务 |
状态 |
| 2.1-2.14 |
8 个 Repository、ScenarioService、搜索分页、输入校验、单元测试 |
✅ |
Phase 3:算法层 ✅
目标:高斯烟团扩散模型、三种毁伤模型、防御推荐算法全部实现。
测试:26 个
| # |
任务 |
状态 |
| 3.1-3.12 |
GaussianPuffDispersion、InertGas/ActiveMaterial/ActiveFuel 毁伤模型、DefaultDefenseAdvisor、AlgorithmFactory |
✅ |
关键设计变更:
- 推荐算法由弹药规格驱动,查库选型
- 计算多轮次云团(CloudSalvo)确保覆盖率
- 输入校验:无目标/无航路/弹药缺失时返回失败原因
- Kinematics 工具类:抛物线弹道、风矢量、多边形判定
Phase 4:仿真引擎 ✅
目标:完整仿真引擎 + 集成测试。
测试:11 个
| # |
任务 |
状态 |
| 4.1-4.16 |
6 个实体类、FireSchedule 发射计划、FrameDataStore 分库、Pause/Resume/Stop、集成测试 |
✅ |
关键设计变更:
- 引擎重构为纯执行器:
SetFireSchedule() 接收计划,不包含任何决策
TimeScale 属性支持加速仿真(集成测试 4 倍速)
- 弹道飞行时间用
Kinematics 真实计算
- 集成测试:4 个端到端场景全通过(NoDefense/ZoneIntrusion/Piston/Jet)
Phase 5:报告生成 ✅
目标:仿真结束后自动生成 Markdown 报告并导出文件。
测试:7 个
| # |
任务 |
状态 |
| 5.1-5.8 |
ReportGenerator、ReportService、ExportToFile、搜索分页、单元测试 |
✅ |
注:PDF/Word 导出暂以 Markdown 替代,后续可扩展。
Phase 6:Unity 集成 ✅
目标:将 Core.dll 集成到 Unity,实现完整运行链路。
前置条件:安装 Unity Hub + Editor 22.3.62
位置:src/Unity/(完整 Unity 项目)
| # |
任务 |
预估 |
状态 |
说明 |
| 6.1 |
创建 Unity 项目,导入 Core.dll |
1h |
✅ |
src/Unity/ 项目,16 个 DLL → Assets/Plugins/ |
| 6.2 |
实现 UnityPathProvider |
1h |
✅ |
Application.persistentDataPath 桥接 |
| 6.3 |
实现 ModelManager |
3h |
✅ |
导入/删除/查询,含 Verify |
| 6.4 |
实现 ScenarioManager(5 步配置) |
4h |
✅ |
完整 CRUD + 搜索分页 + 多批次 Route |
| 6.5 |
实现 SimulationRunner(Update 驱动) |
3h |
✅ |
Tick 驱动 + 事件订阅 + 实体位置同步 + 炮弹轨迹可视化 |
| 6.6 |
实现 ReplayController(帧加载) |
3h |
✅ |
从分库加载帧数据,TotalFrames/GetFrame |
| 6.7 |
实现 ReportManager |
2h |
✅ |
生成 + Markdown 导出 |
| 6.8 |
3D 实体可视化 |
4h |
✅ |
Drone/Cube、Cloud/Sphere、Munition/Cylinder,逐帧位置同步 |
| 6.9 |
粒子系统参数传递 |
3h |
✅ |
云团半径缩放 + 颜色/透明度动态更新 |
| 6.10 |
端到端联调 + 一键验证 |
6h |
✅ |
ManagerVerification 7 模块全过,SimulationBootstrap 一键 Demo |
额外交付物:
SimulationBootstrap.cs:一键创建想定 → 推荐方案 → 启动仿真(Scene 直接运行)
simple_simulation.unity:预配置场景文件
ManagerVerification:Inspector 右键 Run Full Verification → Console 7 行 OK
Phase 7:打磨收尾 ✅
| # |
任务 |
状态 |
| 7.1 |
性能优化 |
⬜(非关键,实体少时自然 < 5ms) |
| 7.2 |
TTL 清理(FrameDataStore.CleanupExpired + 测试) |
✅ |
| 7.3 |
边界测试(空部署/强风/超长航路/空基弹药) |
✅ |
| 7.4 |
错误处理加固 |
⬜(基本校验已有) |
| 7.5 |
测试覆盖率 |
✅ 95.4% 行 / 80.5% 分支 |
| 7.6 |
README + API XML 文档 |
✅ |
| — |
死代码清理(DetectionEntity, EventQueue) |
✅ |
| — |
代码格式化(.editorconfig + dotnet format) |
✅ |
三、最终指标
| 指标 |
值 |
| 测试总数 |
191 |
| 行覆盖率 |
95.4%(待重测) |
| 分支覆盖率 |
80.5%(待重测) |
| 执行时间 |
~41 秒 |
| Core 程序集 |
CounterDrone.Core.dll (.NET Standard 2.1) |
| 共享物理工具类 |
Kinematics / RouteGeometry / CloudExpansionModel / DamageAssessment |
| 全局配置 |
data/planner_config.json(planner 策略参数,代码零默认值) |
| Unity 项目 |
src/Unity/(Unity 2022.3.62) |
| Unity Manager |
8 个 MonoBehaviour 桥接 + Bootstrap + SqliteConnectionTracker |
| 零 Unity 依赖 |
✅ Core 可脱离 Unity 独立运行和测试 |
四、Phase 8:待开发功能(后端范围)
UI/视觉/动画属于前端同事范畴,以下仅列后端 Core 需实现的功能。
8.0 天气与物理模型统一(✅ 已完成)
| # |
功能 |
说明 |
| 8.0.1 |
天气纳入扩散模型 |
✅ 修复 GaussianPuffDispersion 写死 Sunny 的 bug,Phase3 用真实 env.WeatherType 推导 Pasquill 稳定度 |
| 8.0.2 |
Planner 风偏补偿 |
✅ 抛撒点逆风预置(cloudGen = 穿越点 − windVec×expansionTime),云团漂移后回到航路 |
| 8.0.3 |
去除无人机风偏叠加 |
✅ DroneEntity 不再叠加风位移(真实无人机有飞控修正),planner 与引擎速度模型一致 |
| 8.0.4 |
PathInSphere 云团参考系修正 |
✅ 毁伤判定改在云团参考系(drone.Pos − cloud.Center),修正移动球导致的每 tick ~2m 系统误差 |
| 8.0.5 |
ComputeEffectiveRadius 云龄 bug |
✅ 从 ArrivalTime×2(无人机飞行时间,概念错误)改为 expansionTime(云团自身膨胀时长) |
| 8.0.6 |
物理模型统一架构 |
✅ 新增 RouteGeometry 静态工具类,planner 与引擎共用航路几何;planner 删除所有本地物理公式 |
| 8.0.7 |
配置外置 |
✅ 新增 PlannerConfig + planner_config.json,策略参数(重叠系数、类型系数、弹药匹配、概率阈值)全部从配置读,代码零默认值 |
| 8.0.8 |
云团重叠布局 |
✅ 间距 2R×(1−重叠比例),默认重叠 20%,消除相切处密度空洞;offset 沿航路切向,支持任意方向/折线航路 |
8.1 仿真增强
| # |
功能 |
说明 |
| 8.1.1 |
探测设备搜索逻辑 |
✅ 事前规划已接入探测能力:DetectionCalculator 算统一信息网络最早探测点,planner 基于探测边界(非上帝视角起点)算到达时间;天气(Visibility)衰减光电探测距离;探测精度影响抛撒散布。实时探测→火控链路留作未来增强 |
| 8.1.2 |
蜂群运动模型 |
FormationMode.Swarm 枚举已定义,需差异化行为(随机扰动、个体差异) |
| 8.1.3 |
空基平台 + DefensePlanner |
✅ 五步规划引擎,通道模型,物理间隔错发,路径积分毁伤判定 |
| 8.1.4 |
预置典型目标库 |
具体无人机型号 JSON 配置(如 DJI Mavic 3、Shahed-136 等),导入 TargetConfig 默认值 |
| 8.1.5 |
毁伤曲线参数校准 |
✅ RequiredExposureSeconds 替代硬编码,密度阈值统一在引擎检查 |
| 8.1.6 |
Fallback/default 清理 |
✅ 删除所有硬编码默认值和静默 fallback,参数缺失即报错 |
8.2 报告与导出
| # |
功能 |
说明 |
| 8.2.1 |
PDF 导出 |
QuestPDF 或其他 .NET Standard 2.1 方案调研,IReportService.ExportReport() 实现 |
| 8.2.2 |
Word 导出 |
调研可行方案 |
8.3 第三方对接
| # |
功能 |
说明 |
| 8.3.1 |
第三方 DLL 接口规范 |
与供应商对齐 ICloudDispersionModel P/Invoke 签名和调用约定 |
| 8.3.2 |
扩散模型替换验证 |
通过 AlgorithmFactory.Register 切换到第三方实现后的集成测试 |
五、里程碑
| 里程碑 |
状态 |
| M1 — 数据层就绪 |
✅ |
| M2 — 想定可配置 |
✅ |
| M3 — 算法可计算 |
✅ |
| M4 — 仿真可运行 |
✅ |
| M5 — 报告可生成 |
✅ |
| M6 — Unity 可演示 |
✅ |
| M7 — 交付就绪 |
✅ |
六、状态图例
| 符号 |
含义 |
| ⬜ |
未开始 |
| 🔄 |
进行中 |
| ✅ |
已完成 |
| ⏸️ |
阻塞 |
| ❌ |
放弃 |