Breaking: Group表/枚举/Service/Repository移除; GroupId->WaveId; DroneGroup->DroneWave; DroneGroupId->DroneWaveId; GroupManager删除 Docs: CHANGELOG 0.7.0; 总体架构 V10; DefensePlanner V4; 实施计划 V1.4; 对接文档 V1.2 Tests: 204/204 pass
222 lines
9.0 KiB
Markdown
222 lines
9.0 KiB
Markdown
# 实施计划与任务跟踪
|
||
|
||
> **项目**:反无人机仿真系统后端
|
||
> **文档版本**: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 — 交付就绪 | ✅ |
|
||
|
||
---
|
||
|
||
## 六、状态图例
|
||
|
||
| 符号 | 含义 |
|
||
|------|------|
|
||
| ⬜ | 未开始 |
|
||
| 🔄 | 进行中 |
|
||
| ✅ | 已完成 |
|
||
| ⏸️ | 阻塞 |
|
||
| ❌ | 放弃 |
|