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.
222 lines
8.9 KiB
Markdown
222 lines
8.9 KiB
Markdown
# 实施计划与任务跟踪
|
||
|
||
> **项目**:反无人机仿真系统后端
|
||
> **文档版本**: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 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 | 探测设备搜索逻辑 | `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 — 交付就绪 | ✅ |
|
||
|
||
---
|
||
|
||
## 六、状态图例
|
||
|
||
| 符号 | 含义 |
|
||
|------|------|
|
||
| ⬜ | 未开始 |
|
||
| 🔄 | 进行中 |
|
||
| ✅ | 已完成 |
|
||
| ⏸️ | 阻塞 |
|
||
| ❌ | 放弃 |
|