diff --git a/CHANGELOG.md b/CHANGELOG.md index ab6b010..a11b598 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,56 @@ --- +## [0.9.0] - 2026-06-17 + +### Breaking — 运动学前向计算 + 基础数据 CRUD + +- **Kinematics 前向计算**:新增 `ComputeParabolicRange(v₀, θ, Δy)` 和 `ParabolicApex(v₀, θ)`,正问题直接由角度算射程和时间 +- **Math.Max 回退全部移除**:`CalculateLaunchAngle`/`ParabolicShellTime`/`ParabolicTimeOfFlight` 不再静默钳位或 45° 回退,非法输入直接抛异常 +- **GaussianPuffDispersion / CloudExpansionModel / DetectionCalculator**:BurstChargeKg≤0 抛异常,不再用 `Math.Max(0.01, ...)` 掩护;Phase3 `x≤0` 显式跳过 + +### Changed — 空基固定阵位发射 + +- **空基不再「飞向投放点」**:改为固定阵位水平发射(θ=0°),`ComputeParabolicRange` 前向计算飞行时间 +- **DefensePlanner 空基**:`ComputeHorizontal` 使用 `platform.PosY`(非 `ReleaseAltitude`);云团位置 = 炮弹实际到达位置 +- **MunitionEntity 下落修正**:`_arrivesDescending` 区分上升/下落到达;`Math.Max(0.01, ...)` 除零回退移除 +- **死代码删除**:`CommandFlyTo`/`FlyingToTarget`/`ReadyToRelease` 状态 + SimulationEngine "1b. 到达投放点" 块 + +### Added — 实体属性全面暴露 + +- **EntitySnapshot +VelX/Y/Z**:所有实体帧快照带瞬时速度 +- **引擎 Platforms 列表公开**:`SimulationEngine.Platforms` +- **CloudEntity**:Pos/Radius/Density/Phase/Elapsed 便捷属性(不再穿透 Dispersion) +- **MunitionEntity**:LaunchAngle/Azimuth/MuzzleVelocity/FlightDuration/Start/LaunchTime/ElapsedTime/Velocity 全部 public +- **DroneEntity**:TraveledArc/TotalArc/Progress +- **PlatformEntity**:Target/FlightDistance/FlownDistance +- **DetectionEntity**:PosX/Y/Z + +### Added — 基础数据 CRUD(DataService) + +- **7 类规格入库**:FireUnitSpec / DroneSpec / SensorSpec / EnvironmentSpec / FormationTemplate / RouteTemplate / AmmunitionSpec +- **类名规范化**:TargetPreset→DroneSpec, DetectionPreset→SensorSpec, WeatherPreset→EnvironmentSpec, FireUnitTemplate→FireUnitSpec, RoutePreset→RouteTemplate +- **IDataService + DataService**:全 CRUD(GetAll/Save/Delete) +- **Unity Manager 接入**:ScenarioManager.DataService + SimulationRunner.DataService + +### Added — FrameDataStore LiveFrames 内存回放 + +- **Flush 后保留 LiveFrames 副本**:仿真刚结束可内存回放,零磁盘 IO +- **ReplayController 双路径**:`LoadReplay(taskId, frameStore)` 优先内存,回退 SQLite +- **LiveFrames 生命周期**:BeginRecording/Discard 清除 + +### Changed — 3机空基编队测试启用 + +- `Seed3DronesAirBased` 参数对齐单机(风速/航速),平台沿 X 轴间隔 300m +- `Scenario_3DronesAirBased_AllDestroyed` 移除 Skip,全部通过 +- `Scenario_DetectionDriven_PlanningDelayedByDetectionBoundary` 移除 Skip + +### Metrics + +- 测试 **243**(+12),跳过 0,全量通过 11s + +--- + ## [0.8.0] - 2026-06-16 ### Added — 探测实时链路(Phase 10) diff --git a/VERSION b/VERSION index a3df0a6..ac39a10 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.8.0 +0.9.0 diff --git a/docs/implementation/tasks/实施计划与任务跟踪.md b/docs/implementation/tasks/实施计划与任务跟踪.md index 059bab0..ee2937e 100644 --- a/docs/implementation/tasks/实施计划与任务跟踪.md +++ b/docs/implementation/tasks/实施计划与任务跟踪.md @@ -294,6 +294,60 @@ T1(数据层)→ T2(算法层 IsInCoverage) --- +## 六、Phase 11:运动学重构 + 实体暴露 + 基础数据 CRUD ✅ + +**目标**:抛物线前向计算、空基固定阵位发射、全部实体属性公开、DataService 全 CRUD、LiveFrames 内存回放。 + +### 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.PosY;ComputeParabolicRange 前向算时间;云团=到达位置 | +| 11.2.2 | 死代码清理 | CommandFlyTo/FlyingToTarget/ReadyToRelease + "到达投放点" 块删除 | + +### 11.3 实体属性暴露 + +| # | 任务 | 说明 | +|---|------|------| +| 11.3.1 | EntitySnapshot + 速度 | 所有实体帧快照带 VelX/Y/Z;CollectSnapshots 覆盖全部 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/*Template);SQLite 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(taskId, frameStore) 优先内存,回退 SQLite | + +### 11.6 测试启用 + +| # | 任务 | 说明 | +|---|------|------| +| 11.6.1 | Scenario_3DronesAirBased | 参数对齐,平台间隔 300m,移除 Skip | +| 11.6.2 | Scenario_DetectionDriven | 移除 Skip | + +--- + ## 七、里程碑 | 里程碑 | 状态 | @@ -308,6 +362,7 @@ T1(数据层)→ T2(算法层 IsInCoverage) | M8 — 天气/物理模型统一 | ✅ | | M9 — 性能优化 + 文档校准 | ✅ | | M10 — 探测实时链路 | ✅ | +| M11 — 运动学重构 + 实体暴露 + 基础数据 CRUD | ✅ | ---