CounterDroneBackend/docs/implementation/tasks/实施计划与任务跟踪.md
tian 8bcf4cf675 VERSION 0.12.0 — PDF 导出 + 报告模板架构 + 对接文档 V2.0
- PdfSharpCore 1.3.64 引入(纯托管,Unity IL2CPP 兼容,+9 DLL)
- ReportData 结构化模型 + MarkdownRenderer + StandardPdfTemplate
- IReportService.ExportReport(id, format) 按需导出 PDF/MD
- 仿真后自动生成 MD 到 reports 目录,PDF 按需调用
- CJK 字体嵌入(SimHei),IPathProvider + GetFontPath
- ReportGenerator 重构为构建 ReportData,去掉 emoji
- check_unity_build.ps1 修复 -quit 参数缺失导致超时
- 对接文档 V2.0:坐标系/3D 可视化/完整枚举/Manager 签名/模型字段
- 262 测试全部通过
2026-06-20 11:57:38 +08:00

476 lines
22 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 实施计划与任务跟踪
> **项目**:反无人机仿真系统后端
> **文档版本**V1.7
> **更新日期**2026-06-20
---
## 一、阶段总览
```
Phase 1 ✅ 核心基础
Phase 2 ✅ 想定管理
Phase 3 ✅ 算法层
Phase 4 ✅ 仿真引擎
Phase 5 ✅ 报告生成
Phase 6 ✅ Unity 集成(桥接层 + 示例项目)
Phase 7 ✅ 打磨收尾
Phase 8 ✅ 天气/物理模型统一
Phase 9 ✅ 性能优化 + 架构文档校准
Phase 10 ✅ 探测实时链路(已完成)
Phase 11 ✅ 运动学重构 + 实体暴露 + 基础数据 CRUD
Phase 12 ✅ 空基/地基统一规划 + 编队轴 + LaneDivider
Phase 13 ✅ 模型重构:分层架构 + 代码审查 + 探测分离
────────────────────────
已完成 P1-P13
```
---
## 二、各阶段详情
### 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 导出已实现(见 8.2.1),仿真后自动生成 MDPDF 按需调用 `ExportReport(id, "pdf")`
---
### 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 | 实现 `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 | 性能优化 | ✅ Tick 热路径优化Unity 满载帧率 <20200+ FPS详见总体架构设计第十三章 |
| 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 | |
---
## 三、最终指标
| 指标 | |
|------|------|
| 测试总数 | **262**全部通过 |
| 行覆盖率 | **95%+** |
| 分支覆盖率 | **80%+** |
| 执行时间 | ~15 |
| 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天气/物理统一与功能增强
> 8.0(天气/物理统一已完成8.1/8.2/8.3 为后续增强功能,部分待开发。
> 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 | 探测设备搜索逻辑 | 事前规划`DetectionCalculator` 算统一信息网络最早探测点planner 基于探测边界算到达时间天气衰减光电精度影响散布。**实时探测设计完成**总体架构设计第十四章 Phase 10 开发 |
| 8.1.2 | 蜂群运动模型 | `FormationMode.Swarm` 枚举已定义需差异化行为随机扰动个体差异 |
| 8.1.3 | 空基平台 + DefensePlanner | 五步规划引擎通道模型物理间隔错发路径积分毁伤判定 |
| 8.1.4 | 预置典型目标库 | 具体无人机型号 JSON 配置 DJI Mavic 3Shahed-136 导入 `ScenarioDrone` 默认值 |
| 8.1.5 | 毁伤曲线参数校准 | RequiredExposureSeconds 替代硬编码密度阈值统一在引擎检查 |
| 8.1.6 | Fallback/default 清理 | 删除所有硬编码默认值和静默 fallback参数缺失即报错 |
### 8.2 报告与导出
| # | 功能 | 说明 |
|---|------|------|
| 8.2.1 | PDF 导出 | PdfSharpCorenetstandard2.0纯托管 Unity 兼容+ ReportData 结构化模型 + StandardPdfTemplate 内置标准模板 + CJK 字体嵌入。`IReportService.ExportReport(id, "pdf")` 按需导出仿真后自动生成 MD 到报告目录 |
| 8.2.2 | Word 导出 | 调研可行方案 |
### 8.3 第三方对接
| # | 功能 | 说明 |
|---|------|------|
| 8.3.1 | 第三方 DLL 接口规范 | 与供应商对齐 `ICloudDispersionModel` P/Invoke 签名和调用约定 |
| 8.3.2 | 扩散模型替换验证 | 通过 `AlgorithmFactory.Register` 切换到第三方实现后的集成测试 |
---
## 五、Phase 9性能优化 + 架构文档校准 ✅
**目标**Tick 热路径性能优化Unity 满载 <20200+ FPS+ 总体架构设计文档与实现对齐
### 9.1 性能优化(✅ 已完成)
| # | 任务 | 状态 | 说明 |
|---|------|------|------|
| 9.1.1 | DroneEntity 航路几何缓存 | | 构造时预算 `_totalArc`/`_segLen[]`/`_cumArc[]`Update O(1) 定位段消除每帧重复几何运算 |
| 9.1.2 | 仿真期零字符串分配 | | EntitySnapshot 强类型字段流转JSON 推迟到 FlushUnity 端移除 JsonDocument.Parse最大收益项 |
| 9.1.3 | ControlZoneEntity 顶点 2D 缓存 | | 构造时缓存 `_vertices2D`ContainsPoint 零分配 |
| 9.1.4 | 帧数据内存缓存+批量落库 | | List\<FrameRecord\> struct 缓冲Flush 单事务 InsertAll |
| 9.1.5 | 毁伤判定快速排斥 | | 浓度阈值 + 2R 距离两层裁剪 |
> 详见《总体架构设计》第十三章。优化前后实测Unity 满载渲染帧率 <20 FPS卡顿→ 200+ FPS。
### 9.2 架构文档校准(✅ 已完成)
| # | 任务 | 状态 | 说明 |
|---|------|------|------|
| 9.2.1 | 修正文档与实现不符 | | AlgorithmFactory(Func 工厂)、IDefensePlanner.Plan(4参数)、IDamageModel(RequiredExposureSeconds)、FrameDataStore(类非接口)、删除 IRecordServiceDroneEntity 弧长运动Tick 流程顺序StateData 双轨 |
| 9.2.2 | 新增性能设计章节 | | 总体架构设计 第十三章 |
| 9.2.3 | 探测设备行为设计 | | 总体架构设计 第十四章双链路 + 3D 球冠 + 5 项决策 + 数据模型清单|
---
## 六、Phase 10探测实时链路开发 ✅(已完成)
**目标**实现仿真运行时实时探测链路 B产生 `TargetDetected` 事件 + 可视化数据并将 planner 探测判定升级到 3D 球冠
**前置设计**:《总体架构设计第十四章V135 项行为决策已确认 14.6)。
**关键约束**
- 实时探测是**纯只读观测层**决策 3/4不影响 FireSchedule不驱动拦截
- **planner 与实时探测必须共用 3D 球冠判定**`IsInCoverage`)——正确性硬要求否则会出现"未探测却拦截"的物理错误详见 T3)。
> 任务依赖关系见 10.5。建议按 T1→T2→T3→T4 顺序T5/T6 可并行。
### 10.1 数据层T1
| # | 任务 | 预估 | 状态 | 说明 |
|---|------|------|------|------|
| T1.1 | ScenarioUnit 4 | 0.5h | | `MinElevation`/`MaxElevation`/`MinDetectAlt`/`MaxDetectAlt` NULLABLE |
| T1.2 | DetectionSource 类扩展 | 0.5h | | 同步加 4 个三维几何属性float.MaxValue=无限制,退化 2D |
| T1.3 | BuildDetectionSources 读取新字段 | 0.5h | | 缺失时退化球冠float.MaxValue保证存量数据平滑过渡 |
### 10.2 算法层T2
| # | 任务 | 预估 | 状态 | 说明 |
|---|------|------|------|------|
| T2.1 | DetectionCalculator.IsInCoverage | 1h | | 3D 球冠判定水平距离 + 俯仰角 [Min,Max]Elevation + 高度 [Min,Max]DetectAltfloat.MaxValue=无限制(退化 2D |
| T2.2 | IsInCoverage 单元测试 | 0.5h | | 7 个边界用例球冠内/正顶俯仰越界高度越界无限制等价 2D |
### 10.3 planner 3D 适配T3🔒 正确性硬要求
| # | 任务 | 预估 | 状态 | 说明 |
|---|------|------|------|------|
| T3.1 | EarliestDetection 改采样法 | 2h | | "线段-圆解析求交"改为"沿航路采样点步长50m IsInCoverage"。删除旧 EarliestEntryArc/IsInside |
| T3.2 | DefensePlannerTests 回归验证 | 1h | | 30 个测试全通过无回归 |
> 🔒 **T3 不可砍、不可降级为 2D**。这是正确性硬约束,不是精度优化:
> - 仿真是按 planner 规划执行的,**planner 的探测判定 = 仿真的事实依据**。
> - 若 planner 保留 2D 圆判定,会出现"目标高度超出探测设备真实 3D 球冠范围(探测不到),但 planner 按 2D 判定能发现并规划拦截、仿真照此摧毁"的**物理错误结局**——防空系统不可能拦截它没发现的目标。
> - 因此 planner 必须与实时探测共用 `IsInCoverage`(详见总体架构设计 14.2.1)。
>
> **关于采样误差(已澄清,可放心)**:采样法 vs 解析法的弧长误差 ≤ 一个步长50m换算到推荐抛撒时机 ≤ ~1.5s120km/h远小于云团膨胀窗口~30s和云团重叠冗余**不影响火力计划结果**。所以 T3 的重点是用 3D 几何保证"该探测的能探测、不该探测的探测不到",而非追求采样精度。
### 10.4 引擎层T4
| # | 任务 | 预估 | 状态 | 说明 |
|---|------|------|------|------|
| T4.1 | DetectionEntity 运行时实体 | 1h | | 持有 DetectionSource + 每无人机探测状态机Undetected Detected)。`UpdateState` 返回首次进入/离开信号 |
| T4.2 | SimulationEngine _detectionEntities | 0.5h | | Initialize 时从 BuildDetectionSources 构建Tick 5 步遍历 |
| T4.3 | Tick 5 步实时扫描 | 2h | | 决策 1离开回退= Undetected决策 2融合取最早/同刻取精度高触发 TargetDetected OnTargetDetected 事件 |
| T4.4 | SimulationEngineTests 验证 | 1h | | 4 个测试进入探测范围触发事件多设备融合取最早无探测设备无事件离开后再次进入重新触发 |
### 10.5 前端 / 报告T5可并行
| # | 任务 | 预估 | 状态 | 说明 |
|---|------|------|------|------|
| T5.1 | Unity 探测范围可视化 | | | 前端范畴3D 球冠 wireframe / 发现标记决策 4 仅可视化 |
| T5.2 | 时序图/报告纳入 TargetDetected | 0.5h | | ReportGenerator 时序表增加发现事件(👁 目标发现统计增加目标发现计数 |
### 10.6 任务依赖与顺序
```
T1数据层→ T2算法层 IsInCoverage
T3planner 3D 适配 ⚠️耦合点)→ T4引擎实时扫描
T5前端/报告,可并行)
```
**总预估** 11hT1 1.5h + T2 1.5h + T3 3h + T4 4.5h + T5.2 0.5h前端 T5.1 不计入后端)。
---
## 六、Phase 11运动学重构 + 实体暴露 + 基础数据 CRUD ✅
**目标**抛物线前向计算空基固定阵位发射全部实体属性公开DataService CRUDLiveFrames 内存回放
### 11.1 运动学重构
| # | 任务 | 说明 |
|---|------|------|
| 11.1.1 | ComputeParabolicRange / ParabolicApex | 正问题给定 v₀+θ (射程, 飞行时间) + 顶点参数 |
| 11.1.2 | Math.Max 回退全部移除 | CalculateLaunchAngle/ParabolicShellTime/ParabolicTimeOfFlight 非法输入抛异常GaussianPuffDispersion/CloudExpansionModel Pow 输入验证 |
| 11.1.3 | MunitionEntity 前向到达 | launchAngle 必须由方案提供_arrivesDescending 区分上升/下落Math.Max 除零移除 |
### 11.2 空基固定阵位
| # | 任务 | 说明 |
|---|------|------|
| 11.2.1 | DefensePlanner 空基 | ComputeHorizontal platform.PosYComputeParabolicRange 前向算时间云团=到达位置 |
| 11.2.2 | 死代码清理 | CommandFlyTo/FlyingToTarget/ReadyToRelease + "到达投放点" 块删除 |
### 11.3 实体属性暴露
| # | 任务 | 说明 |
|---|------|------|
| 11.3.1 | EntitySnapshot + 速度 | 所有实体帧快照带 VelX/Y/ZCollectSnapshots 覆盖全部 5 类实体 |
| 11.3.2 | CloudEntity | Pos/Radius/Density/Phase/Elapsed 直接属性 |
| 11.3.3 | MunitionEntity | LaunchAngle/Azimuth/MuzzleVelocity/FlightDuration/Start/LaunchTime/ElapsedTime/Velocity 全部 public |
| 11.3.4 | DroneEntity/PlatformEntity/DetectionEntity | TraveledArc/Progress; Target/FlightDistance; PosX/Y/Z |
### 11.4 基础数据 CRUD
| # | 任务 | 说明 |
|---|------|------|
| 11.4.1 | 类名规范化 | 7 类模板统一命名*Spec/*TemplateSQLite Table+PrimaryKey |
| 11.4.2 | 6 Repository | SpecRepositories.cs |
| 11.4.3 | IDataService + DataService | CRUD构造注入 |
| 11.4.4 | DatabaseManager 建表+种子 | 自动建表 + InsertOrReplace 种子 |
| 11.4.5 | Unity 接入 | ScenarioManager.DataService + SimulationRunner.DataService |
### 11.5 回放LiveFrames
| # | 任务 | 说明 |
|---|------|------|
| 11.5.1 | FrameDataStore.LiveFrames | Flush 后保留副本BeginRecording/Discard 清除 |
| 11.5.2 | ReplayController 双路径 | LoadReplay(scenarioId, frameStore) 优先内存回退 SQLite |
### 11.6 测试启用
| # | 任务 | 说明 |
|---|------|------|
| 11.6.1 | Scenario_3DronesAirBased | 参数对齐平台间隔 300m移除 Skip |
| 11.6.2 | Scenario_DetectionDriven | 移除 Skip |
---
## 十二、Phase 12空基/地基统一规划 + 编队轴 + LaneDivider ✅
**目标**碰撞点后统一流程编队支持 XYZ 任意轴展开lane 划分策略可替换
### 12.1 运动学修复
| # | 任务 | 说明 |
|---|------|------|
| 12.1.1 | ComputeParabolicRange 重写 | tanθ 二次改为垂直运动直接算时间消除与 CalculateLaunchAngle 的不互逆 |
| 12.1.2 | 风偏纳入角度 | cloudGen 先于 launchAngle 计算消除风偏导致的 rangetargetDist |
| 12.1.3 | 弹道可达验证 | 每发 PlanUnitLane 验证 ComputeParabolicRange 不抛异常 |
### 12.2 空基/地基统一
| # | 任务 | 说明 |
|---|------|------|
| 12.2.1 | 碰撞点后无分支 | cloudGen/deliveryTime/fireTime 统一公式mv launchAngle 按类型取不同值 |
| 12.2.2 | 每发独立角度 | launchAngle 对每个目标点重新计算不共用 InterceptCalculator 的统一值 |
| 12.2.3 | 3机空基全灭 | 修复后三机编队全部击毁 |
### 12.3 编队轴 + LaneDivider
| # | 任务 | 说明 |
|---|------|------|
| 12.3.1 | LateralAxis/LongitudinalAxis | RoutePlan + FormationTemplate + DroneEntity 支持 0=X/1=Y/2=Z |
| 12.3.2 | ILaneDivider 接口 | 车道划分策略抽象 |
| 12.3.3 | DefaultLaneDivider | +深双维度判断任一超云团半径则拆分 |
| 12.3.4 | PlanUnitLane 读轴 | LateralAxis 决定 X/Y/Z 偏移方向 |
### 12.4 探测门控
| # | 任务 | 说明 |
|---|------|------|
| 12.4.1 | _anyThreatDetected | 引擎等首次探测后才执行发射 |
| 12.4.2 | _detectionTime | 发射时间 = fe.FireTime(偏移) + 探测时刻 |
### 12.5 测试
| # | 任务 | 说明 |
|---|------|------|
| 12.5.1 | Kinematics 俯射往返 | CalculateLaunchAngleComputeParabolicRange 往返一致 |
| 12.5.2 | 3机空基 | 平台 X 轴分布无人机 Z 轴分布交叉维度全覆盖 |
---
## 十三、Phase 13模型重构 ✅
### 13.1 数据分层架构
| # | 任务 | 说明 |
|---|------|------|
| 13.1.1 | ScenarioDrone/ScenarioUnit 精简 | 删冗余基础字段改为 FK 引用 |
| 13.1.2 | DroneSpec/FireUnitSpec 独立文件 | DefaultData.cs 拆出命名空间修正 |
| 13.1.3 | Model/Description 字段 | DroneSpec/FireUnitSpec/SensorSpec 加业务属性 |
| 13.1.4 | ModelId 3D 引用 | 仿真实体 + EntitySnapshot +ModelId |
### 13.2 发射平台与探测设备分离
| # | 任务 | 说明 |
|---|------|------|
| 13.2.1 | LaunchPlatformSpec | 纯发射参数无探测字段 |
| 13.2.2 | SensorSpec 统一探测 | 发射平台自带探测 + 独立探测设备统一 SensorySpecId 引用 |
| 13.2.3 | BuildDetectionSources 简化 | 只查 SensorSpec |
| 13.2.4 | FireUnitSpec 保留不用 | 旧类型保留代码不删 |
### 13.3 代码审查
| # | 任务 | 说明 |
|---|------|------|
| 13.3.1 | Spec 类拆分 | SpecRepositories 6 个独立文件 |
| 13.3.2 | PagedResult/EnumMetadata 独立 | ScenarioConfig/IScenarioService 拆出 |
| 13.3.3 | Vector3/DetectionSource 独立 | AlgorithmTypes 拆出 |
| 13.3.4 | 死代码清除 | _hasExceededReleaseAltitude |
| 13.3.5 | FormationTemplate PrimaryKey | 追加缺失的 SQLite 属性 |
### 13.4 API 增强
| # | 任务 | 说明 |
|---|------|------|
| 13.4.1 | GetEnums 中英文对照 | EnumItem{Name,ChineseName,Value} |
| 13.4.2 | DataServiceTests | 12 覆盖 7 类基础数据 CRUD |
| 13.4.3 | 全模型 CRUD 补齐 | ScenarioDrone/ScenarioUnit/Route/Waypoint |
---
## 七、里程碑
| 里程碑 | 状态 |
|------|------|
| M1 数据层就绪 | |
| M2 想定可配置 | |
| M3 算法可计算 | |
| M4 仿真可运行 | |
| M5 报告可生成 | |
| M6 Unity 可演示 | |
| M7 交付就绪 | |
| M8 天气/物理模型统一 | |
| M9 性能优化 + 文档校准 | |
| M10 探测实时链路 | |
| M11 运动学重构 + 实体暴露 + 基础数据 CRUD | |
| M12 空基/地基统一规划 + 编队轴 + LaneDivider | |
| M13 PDF 导出 + 报告模板架构 | |
---
## 九、待解决问题
| # | 问题 | 说明 | 状态 |
|---|------|------|------|
| 1 | **高弹道支持** | 当前只支持低弹道喷气式ground-standard, 18000m 航线需要高弹道才能命中低弹道取上升段时间 t1弹在 6.5s/5199m 就触发了到达判定实际应 15.5s/12318m 在下行段命中需要修改 MunitionEntity 的到达判定逻辑 | 🔴 待解决 |
---
## 八、状态图例
| 符号 | 含义 |
|------|------|
| | 未开始 |
| 🔄 | 进行中 |
| | 已完成 |
| | 阻塞 |
| | 放弃 |