|
|
bf3452013d
|
feat: 全部160测试通过(22s). 损伤模型RequiredExposure替代硬编码
- IDamageModel.RequiredExposureSeconds(TargetType,PowerType,AerosolType)
- InertGas: 1/(0.15*sensitivity), Piston 1.5→4.44s
- ActiveMaterial: (1-burst)/residual + burst threshold
- ActiveFuel: ∫BaseRate*e^(kT)解析解
- CalcRoundsNeeded/ComputeInterceptProbability/BuildCandidates 全部调用
- 场景缩短: Piston 5km/150km/h, Jet 5km/200km/h, AirBased 10km/150km/h
- 空基 test: Unit(1500,1000), hp=0 Destroyed
|
2026-06-13 19:37:27 +08:00 |
|
|
|
48368e0fe8
|
test: DamageAssessment 5项单元测试验证路径积分正确
- 单云穿心/两云相邻/9云链/两云有间隙/两点跨云
|
2026-06-13 19:09:29 +08:00 |
|
|
|
a3bf6720c6
|
feat: 路径积分毁伤判定(DamageAssessment.PathInSphere)
- 替换离散 ContainsPoint 为连续路径积分
- DroneEntity 新增 PrevX/Y/Z + SavePreviousPosition
- DamageAssessment 独立模块
- Piston WindSpeed=0 验证:暴露4.52s,击毁
|
2026-06-13 19:00:41 +08:00 |
|
|
|
fc469aa125
|
fix: ActiveMaterial阈值对齐InertGas(0.0001); Jet 200km/h避跳步; Piston hp=0.10边际
- Jet: 500→200km/h, 步长22m<54m云直径
- ActiveMaterial: TriggerThreshold 0.0002→0.0001
- 149/150 通过, Piston hp=0.10 结构正确
|
2026-06-13 18:04:31 +08:00 |
|
|
|
47761e5124
|
diagnostic: Jet hit_log确认3/6云命中(56m步跳过3个),TimeScale默认改回1
|
2026-06-13 17:48:47 +08:00 |
|
|
|
3aac0060e7
|
test: 修复 MunitionEntity/MultiLane 测试 + Jet/Piston 打印到桌面
- 删除 GroundBased_ArrivesAtTargetPosition(旧下行逻辑)
- 新增 ArrivesNearTarget_WithInterpolation(真实场景0.4s步长)
- MultiLane 改断言为 ≥27发+多个Z值
- Jet/Piston 测试结果写入桌面txt
|
2026-06-13 17:34:15 +08:00 |
|
|
|
355b430828
|
fix: 抛物线弹道精确求解 + 上行触发云生成 + 空基修复
- Kinematics.CalculateLaunchAngle: 解 tan(θ) 二次方程取平射解
- Kinematics.ParabolicShellTime: 精确飞行时间替代 dist/mv 近似
- MunitionEntity.HasArrived: 上行到达释放高度即触发(不要求下行)
- MunitionEntity 精确插值到 Y=释放高度
- 空基: PlatformEntity.CommandFlyTo 读取 releaseAlt 算 driftDist
- 空基: 投放点位置保留插值不传送到终点
- 单元测试: 13/13 Kinematics 通过(含45°标准公式验证)
|
2026-06-13 17:26:09 +08:00 |
|
|
|
a5fef98858
|
wip: 空基Planner修正——投放点后移抵消载具漂移;云团/发射事件用精确时刻
- 空基 GenerateFireEventsAt 投放点后移 driftX = cruiseSpeed * fallTime
- MunitionEntity 记录 launchTime + flightDuration → ArrivalTime 精确计算
- 云团 Initialization 用 munition.ArrivalTime 非 SimulationTime
- CloudGenerated 事件 OccurredAt 用精确到达时刻
- PlatformEntity 存储 ExactReleaseTime
- 修复缺失 else 导致的空基走地基分支
|
2026-06-13 16:40:27 +08:00 |
|
|
|
09f51939d8
|
fix: spacing=2R消除魔法数字,turbulentRadius贯穿CalcRoundsNeeded
- ComputeEffectiveRadius返回(getEffectiveRadius, expansionTime, turbulentRadius)
- CalcRoundsNeeded/tagger均用turbulentRadius
- spacing=2R(云端直径=中心距),消除1.5f经验系数
- FireEvent.OccurredAt存储fe.FireTime精确发射时刻
|
2026-06-13 16:03:01 +08:00 |
|
|
|
2162a342b7
|
perf: RunSimulation支持自定义TimeScale + 删除诊断dump + 批量commit
- RunSimulation 增加 timeScale 参数(默认8f)
- 删除 fireSchedule 诊断 dump 到桌面
- Commit 批量50帧
|
2026-06-13 15:20:50 +08:00 |
|
|
|
197f8b6e5c
|
perf: Commit批量50帧 + Calc回到+1(11发最优)
- _frameDb.Commit() 从每帧改为每50帧批量提交
- CalcRoundsNeeded 回退到 +1(12发反更差)
- Piston: 10机50m间距8/10击毁
|
2026-06-13 15:17:25 +08:00 |
|
|
|
070167f572
|
fix: 编队偏移持久化到航点 + yLanes=Quantity + 云Z展开
- DroneEntity: 偏移写入克隆航点List而非位置字段
- Planner: 车道数=无人机数, laneSpacingZ=LateralSpacing
- 200m间距: 33发, 2/3击毁, 第三架hp=0.10边缘效应
|
2026-06-13 15:03:44 +08:00 |
|
|
|
0c9cdb7b82
|
fix: stagger=roundInLane*speed 替代 ch*speed——通道展开为1后ch永远为0
- roundInLane = singleNeeded - laneNeeded[currentLane]
- 跨度从 0.125s → 7.39s
- Piston: 2/3 击毁
|
2026-06-13 14:35:29 +08:00 |
|
|
|
c5c1b79946
|
fix: ChannelInterval 降到 0.1s——CloudCoverInterval 不再被硬件卡住
- Kinetics.CloudCoverInterval minInterval 默认 0.1s
- DefaultFireUnits ChannelInterval 1.0→0.1
- 多机横向编队跨度 10s→7.27s
|
2026-06-13 14:24:11 +08:00 |
|
|
|
6a6c03f0fa
|
fix: 每单元固定Y车道 + CloudCoverInterval物理间隔 + 16通道
- Solve: 每单元分配一个Y车道,所有弹打同一高度
- stagger=CloudCoverInterval 替代硬编码 ChannelInterval
- Kinematics.CloudCoverInterval: 云团直径/目标速度,不小于硬件间隔
- DefaultFireUnits: ground-light 改为 16通道
- 报告 F1→F2 精度
- MultiLane_3Drones_3Lanes_ExactOutput 单元测试
|
2026-06-13 14:18:18 +08:00 |
|
|
|
29aa11665b
|
fix: 多单元并行 + 多车道正确弹药计算
- 所有单元以同基准时间并行发射(offset=0)
- 通道内 ch×ChannelInterval 独立错开
- CalcRoundsNeeded 恢复纯单机,yLanes 乘法在 Solve
- Piston: 33发=11×3车道, 2/3击毁
|
2026-06-13 13:57:56 +08:00 |
|
|
|
c7792d1d4a
|
feat: 多机编队Y车道分布 + 8火力单元
- GenerateFireEventsAt: 按 yLane×laneSpacingY 分布云团Y坐标
- Piston 测试: 8 ground-light × 3机横向编队
- 42发弹, 2架击毁, Y车道对齐无人机位置
|
2026-06-13 13:26:43 +08:00 |
|
|
|
a9339c36e3
|
feat: 编队2D模型 — LateralSpacing/LongitudinalSpacing + DroneEntity 纵向偏移
- RoutePlan: FormationSpacing→LateralSpacing, 新增LateralCount/LongitudinalCount/LongitudinalSpacing
- DroneEntity: 2D编队(latIdx/longIdx), 横向Y展开+纵向X落后
- DefaultFormations: 6种编队模板
- DroneEntityTests: 11个(含2D编队/2×2方队/蜂群)
- Planner: yLanes=ceil(formationWidth/cloudDiam), totalNeeded=single×lanes
|
2026-06-13 13:20:18 +08:00 |
|
|
|
4706c4b8c1
|
feat: 编队模型扩展 — LateralSpacing/LongitudinalSpacing/LateralCount/LongitudinalCount
- FormationSpacing → LateralSpacing(正面横向间距)
- 新增 LongitudinalCount/LongitudinalSpacing(纵深串列)
- DefaultFormations: 6种默认编队模板(单机/3机横队/5机横队/3机纵队/2×2方队/10机蜂群)
- Piston 测试设置 LateralCount=3, LongitudinalCount=1
|
2026-06-13 13:16:27 +08:00 |
|
|
|
45387fee73
|
refactor: 删除所有逻辑fallback——缺失配置报错而非静默跳过
- DefaultDefensePlanner: 空catalog抛ArgumentEx, 缺ammo类型抛InvalidOp
- AmmunitionSpec? → AmmunitionSpec(非空), 删除 ==null 静默返回
- 删除 0.8f射程安全系数, 1.5f时间窗口乘数
- AlgorithmFactory 移除IDefensePlanner(null)注册
- SimulationEngine 构造必须传planner,6个调用点全部更新
|
2026-06-13 12:19:21 +08:00 |
|
|
|
fe7eb723a1
|
refactor: 清除 SimEvent alias 遗留——统一使用 using CounterDrone.Core.Simulation
|
2026-06-13 11:50:49 +08:00 |
|
|
|
ced8d4014a
|
refactor: 删除未使用的 Models.SimEvent,消除 SimEvent 重名
- 删除 Models/SimEvent.cs(DB表定义,无人读写)
- 删除 DatabaseManager 中 CreateTable<SimEvent> 和 CreateIndex
- DatabaseManagerTests 表数量 13→12
|
2026-06-13 11:46:31 +08:00 |
|
|
|
f4be469e72
|
fix: 空基巡逻点靠近目标 + 飞行时间优化,141测试全通过
- 空基巡逻点从5000→6000→6500,靠近中点7500
- Piston/Jet/AirBased 全部击毁
- 141测试全通过
|
2026-06-13 11:30:02 +08:00 |
|
|
|
c08d613d5b
|
test: 引擎空基/地基发射类型单元测试 + Planner覆盖全面测试
- SimulationEngineTests: AirBased_LaunchesWithCorrectDescription (空基描述="空基投放")
- SimulationEngineTests: GroundBased_LaunchesWithCorrectDescription (地基描述="计划发射")
- DefensePlannerTests: 23个全覆盖(威胁排序/弹药匹配/地基弹道/空基弹道/分配/边界/多威胁/临界)
- FullPipeline AirBased: 加入事件描述诊断断言
|
2026-06-13 11:27:00 +08:00 |
|
|
|
7fa0268463
|
fix: 空基 FireEvent.MuzzleVelocity=0 + 空基弹道单元测试
- GenerateFireEventsAt: 空基时 MuzzleVelocity=0(而非800)
- 新增 AirBased_FireTime_EarlierThanArrival 验证提前量
- 新增 AirBased_FireTime_EarlierThanGroundBased 验证空基更早
- 新增 AirBased_NoMuzzleVelocityInFireEvent 验证 MuzzleVelocity=0
- 空基弹道计算本身正确(recommendedTiming - flightTime - fallTime)
|
2026-06-13 11:05:34 +08:00 |
|
|
|
c610573e34
|
fix: 物理间隔错开发射 — 云团直径/无人机速度,非硬件间隔
- 跨 FireUnit 按 physicsInterval = max(ChannelInterval, cloudDiameter/droneSpeed) 错开发射时间
- Piston 200km/h 测试通过(被摧毁=1)
- Jet 500km/h 测试通过(被摧毁=1)
|
2026-06-13 10:55:58 +08:00 |
|
|
|
08427e9e08
|
feat: 新增轻型地基火力单元模板(2炮×4通道); Piston测试使用 ground-light×2
|
2026-06-13 10:46:41 +08:00 |
|
|
|
c08edbd2f9
|
feat: 火力单元通道模型 + 默认配置 + 引擎通道展开
- FireUnit: 新增 GunCount/ChannelsPerGun/ChannelInterval/检测设备字段
- EquipmentDeployment: 新增 GunCount/ChannelsPerGun/ChannelInterval
- DefaultFireUnits: 3 种默认火力单元(标准地基/重地基/空基)
- Planner: 逐通道齐射分配,ChannelInterval 错开,Cooldown 轮次
- Engine: PlatformEntity 按 GunCount×ChannelsPerGun 展开
- BuildFireUnits: 与引擎同步展开通道
- FullPipelineTests: 使用 DefaultFireUnits 配置
|
2026-06-13 10:42:08 +08:00 |
|
|
|
9bd1d5a7ee
|
test: 收紧集成测试断言 — 击毁才通过,暴露 Planner 真实场景不足
- 删除 ApplyDefensePlan helper(引擎自治,不再需要外部调Planner)
- Piston 200km/h: 断言 DroneStatus==Destroyed(当前 FAIL)
- Jet 500km/h: 断言 DroneStatus==Destroyed
- AirBased 300km/h: 断言 DroneStatus==Destroyed(当前 FAIL)
- 测试真实暴露 Planner 算法缺陷
|
2026-06-13 10:06:05 +08:00 |
|
|
|
50ec14bb24
|
refactor: 引擎自治 — 不再需要外部传 SetFireSchedule
- SimulationEngine.Initialize 内建 BuildFireUnits/BuildDroneGroups → 自动调 Planner
- 删除 FullPipelineTests 中的 BuildFireSchedule/_lastFireSchedule/手动 SetFireSchedule
- Unity Managers 删除手动 SetFireSchedule 调用
- 引擎是 Planner 的唯一调用者,测试和 UI 不再碰火控逻辑
|
2026-06-13 09:58:11 +08:00 |
|
|
|
4411a452dc
|
fix: Quantity expand + PlatformIndex 映射修正
- ApplyDefensePlan 展开 EquipmentDeployment.Quantity → 多个 FireUnit
- Planner 分配后用 fireUnits.IndexOf 修正 PlatformIndex
- 新增 FullPipeline_Piston_VerifiesRoundAllocation 验证 ≥8 发
- Piston 集成测试加入计划大小断言
|
2026-06-13 09:50:24 +08:00 |
|
|
|
b957a5e2b4
|
feat: Planner 使用真实物理计算 + 完善单元测试 + 规则7
- ComputeEffectiveRadius: 基于 AmmunitionSpec 三阶段扩散模型
- CalcRoundsNeeded: 真实有效半径和弹药参数
- GenerateFireEvents: recommendedTiming = arrivalTime - expansionTime
- 候选概率基于真实覆盖计算
- 24 个单元测试覆盖威胁排序/弹药匹配/候选过滤/弹药数/时机/多威胁/空基
- AGENTS.md 规则7: 只跑相关测试,不跑全量
|
2026-06-13 09:30:04 +08:00 |
|
|
|
317f47280b
|
refactor: DefensePlanner 替代 DefenseAdvisor
- 新增 IDefensePlanner 接口 + DefaultDefensePlanner 实现
- FireUnit 重构为统一平台模型(Type/Position/CruiseSpeed/ReleaseAltitude/MuzzleVelocity)
- DroneGroup 加入威胁指数(类型系数×速度系数)和优先级排序
- 五步流水线:威胁排序→弹药匹配→候选生成→贪心分配→时序生成
- 弹药精确匹配,不降级;临界方案基于50%概率阈值
- 删除 IDefenseAdvisor/DefaultDefenseAdvisor/RecommendMultiGroup
- AlgorithmFactory 注册 IDefensePlanner
- 测试更新:DefensePlannerTests 替代旧测试,FullPipelineTests 适配新 API
- Unity Managers 更新调用
- 125 测试全通过
|
2026-06-12 18:20:25 +08:00 |
|
|
|
0a3c444a4b
|
refactor: 推荐算法统一处理空基/地基平台类型
- ThreatProfile 新增 PreferredPlatformType 字段
- DefaultDefenseAdvisor 根据平台类型正确计算 FireTime/CruiseSpeed/ReleaseAltitude
- 空基:FireTime 提前扣除飞行+下落时间;地基:保持原逻辑
- 删除 SimulationEngine.AdjustFireTimesForAirBased(引擎不再做适配)
- 集成测试直接用 PreferredPlatformType 驱动空基方案
- 实施文档同步
|
2026-06-12 17:52:44 +08:00 |
|
|
|
c4d9ccc4fa
|
feat: 空基平台飞行与投弹功能
- PlatformEntity: 新增状态机 Idle→FlyingToTarget→ReadyToRelease
- EquipmentDeployment: 新增 CruiseSpeed 字段(空基平台巡航速度)
- MunitionEntity: 空投弹药继承载机速度矢量,替代自由落体
- Kinematics: 新增 AirDropPosition/AirDropFallTime/DirectionVelocity 工具方法
- SimulationEngine: 空基平台先飞后投,AdjustFireTimesForAirBased 补偿飞行耗时
- SimulationRunner: 空基平台 3D 可视化(蓝色 Capsule)
- 集成测试 Scenario_AirBased_PlatformFliesAndDrops 通过(8x 加速)
- 实施文档同步进度
|
2026-06-12 17:38:21 +08:00 |
|
|
|
6030b8de07
|
RecommendMultiGroup: 多编队火力分配 + 专一弹药优先 + 130测试通过
|
2026-06-12 15:46:05 +08:00 |
|
|
|
12cb6576fe
|
多批次Phase1: RoutePlan改Id主键+Waypoint加GroupId+ScenarioService/Engine/所有测试适配
|
2026-06-12 15:33:37 +08:00 |
|
|
|
3e12dba143
|
ICloudDispersionModel加Elapsed属性 + 帧数据输出云团存在时间
|
2026-06-12 14:25:23 +08:00 |
|
|
|
c3e1fc797e
|
fix: MockDispersion实现Phase属性
|
2026-06-12 14:22:05 +08:00 |
|
|
|
50b7bd7f69
|
测试任务名改为描述性名称
|
2026-06-12 11:59:12 +08:00 |
|
|
|
2d1243f729
|
报告增强: 环境/目标/时间线/emoji, 129测试通过
|
2026-06-12 11:41:40 +08:00 |
|
|
|
e3486e5bdf
|
FireEvent移入Algorithms, Advisor生成FireSchedule, 引擎/测试零对齐逻辑, 129测试通过
|
2026-06-12 11:36:15 +08:00 |
|
|
|
98e16ea720
|
CloudDispersal加SalvoRounds/Spacing, FireSchedule按间隔展开云团, 拦截成功
|
2026-06-12 11:32:17 +08:00 |
|
|
|
2d14c17d9c
|
默认弹药改为JSON文件导入 + DatabaseManager种子数据 + 测试手动插入, 129测试通过
|
2026-06-12 11:17:59 +08:00 |
|
|
|
6a184d9bf8
|
推荐算法ComputeEffectiveRadius用高斯公式,BuildFireSchedule去掉算法逻辑,129测试通过
|
2026-06-12 11:03:30 +08:00 |
|
|
|
c060030e0a
|
默认弹药参数校准:爆发药1.5kg(发烟罐典型值) + 三阶段扩散模型 + 集成测试流程验证, 129测试通过
|
2026-06-12 10:47:54 +08:00 |
|
|
|
d2b139a08f
|
忽略 test/reports/ coverage_report/ TestResults/
|
2026-06-11 16:49:20 +08:00 |
|
|
|
2697225aff
|
添加 .editorconfig + dotnet format 格式化全部代码
|
2026-06-11 16:48:22 +08:00 |
|
|
|
cde7702b12
|
Phase 7.6: README更新 + 公开API XML文档注释, 128测试
|
2026-06-11 16:45:46 +08:00 |
|
|
|
c28954335c
|
Phase 7: 删EventQueue死代码 + ReadFrames/AirBased/DeleteByTaskId测试, 覆盖率95.4%, 128测试
|
2026-06-11 16:42:41 +08:00 |
|