CounterDroneBackend/docs/implementation/tasks/实施计划与任务跟踪.md
tian 8515f7821a feat(v0.5.0): weather into planner + unified physics model
Planner no longer writes local physics formulas. All kinematics/geometry/damage go through shared utility classes (Kinematics/RouteGeometry/CloudExpansionModel/DamageAssessment).

Core: RouteGeometry (route geometry), PlannerConfig + planner_config.json (config externalization). Planner route-aware layout (offset along tangent), cloud overlap 20pct. DroneEntity arc-length driven.

Fixes: PathInSphere cloud-frame correction (root cause), GaussianPuffDispersion hardcoded Sunny, ComputeEffectiveRadius cloud age, planner wind offset, remove drone wind bias.

Tests 167 to 191, 41s. Windy scenarios pass.
2026-06-14 14:49:53 +08:00

8.9 KiB
Raw Blame History

实施计划与任务跟踪

项目:反无人机仿真系统后端
文档版本V1.3
更新日期2026-06-14


一、阶段总览

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/GroupService、单元测试

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 6Unity 集成

目标:将 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 实现 ScenarioManager5 步配置) 4h 完整 CRUD + 搜索分页 + 多编队 Route
6.5 实现 SimulationRunnerUpdate 驱动) 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:预配置场景文件
  • ManagerVerificationInspector 右键 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.jsonplanner 策略参数,代码零默认值)
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 的 bugPhase3 用真实 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 探测设备搜索逻辑 DetectionEntity 类已存在,需接入 SimulationEngine 实现探测→火控链路闭环。天气(能见度/日夜)对光电/红外探测距离的衰减在此实现
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 — 交付就绪

六、状态图例

符号 含义
未开始
🔄 进行中
已完成
⏸️ 阻塞
放弃