Commit Graph

270 Commits

Author SHA1 Message Date
36ab4fad7b 配置运行时重载 IConfigService + 防御推荐 + 文档更新
新增:
- IConfigService / ConfigService:读写 defaults.json / planner_config.json
- SavePlannerConfig / SaveDefaults / Reload,无需重启 Unity
- PlannerConfigReloaded 事件 → ScenarioManager 自动重建 planner
- SimulationEngine.UpdatePlanner / ScenarioService.UpdatePlanner
- SimulationRunner.ReloadPlanner 桥接
- DefenseRecommendation / RecommendOption 返回类型
- IScenarioService.GetDefenseRecommendation(配置阶段生成最佳抛撒参数)
- ConfigServiceTests 5 个测试 + DefenseRecommendationTests 3 个测试

修复:
- 云团间距半径基准不一致(间距用 R30、穿越用 R27 → 统一用 effectiveRadius)
- 消除硬编码 30f(DefensePlanner + GaussianPuffDispersion 读 Phase2Duration)
- TryGenerateFireEvents 复用 ComputeEffectiveRadius,消除重复计算
- 概率计算间距加重叠系数
- DatabaseManager 不再 DROP SimulationReport(保留历史报告)
- 清理迁移代码(MetaEntry / 旧表 DROP / 版本检查)

文档:
- 对接文档 V2.1:加 IConfigService API + 配置重载用法 + 修正 DLL 更新说明
- 实施跟踪 V1.8:8.2.1 更新 + 新增 8.2.3/8.2.4 + M14 里程碑
- 270 测试通过,Unity 编译通过
2026-06-25 22:10:22 +08:00
a3ceae5c14 清理数据库迁移代码 + 保留历史报告
- 删除 DROP TABLE IF EXISTS SimulationReport(不再每次启动清空报告)
- 删除 4 个旧表 DROP 语句(SimTask/TargetConfig/DroneProfile/EquipmentDeployment)
- 删除 MetaEntry 版本追踪表和模型文件(开发阶段不需要)
- SeedDefaultData 改为简单判断:有数据就跳过,无数据就插入
- SeedDefaultScenarios 改为简单判断:有想定就跳过,无就种子
- 265 测试通过,Unity 编译通过
2026-06-25 21:58:05 +08:00
dc62ba8c82 修复云团间距半径基准不一致 + 消除硬编码 30f
逻辑层修复(前端反馈的云团缝隙问题):
- ComputeEffectiveRadius 应用 ExpansionFactor,返回穿越时刻半径
- 间距/车道/弹药数统一用 effectiveRadius(原用 turbulentRadius=R30)
- TryGenerateFireEvents 复用 ComputeEffectiveRadius,消除重复计算
- 概率计算间距也加重叠系数
- GaussianPuffDispersion 消除硬编码 30f,读 _ammo.Phase2Duration
- DefensePlanner 消除硬编码 30f,读 model.Phase2Duration
- 265 测试通过,Unity 编译通过
2026-06-25 21:53:34 +08:00
9d81ba0b28 新增 GetDefenseRecommendation 防御推荐方案 + 去掉 Critical
- IScenarioService 新增 GetDefenseRecommendation(scenarioId)
- ScenarioService 构造函数加可选 IPathProvider + IDefensePlanner
- DefenseRecommendation / RecommendOption 返回类型
- 前端调用获取最佳抛撒参数 → 用户一键应用写入 CloudDispersal
- 去掉 Critical(省弹药到 50% 概率,无决策价值)
- Unity ScenarioManager 桥接 + 构造注入 planner
- 对接文档加推荐用法示例
- 265 测试通过(+3 推荐),Unity 编译通过
2026-06-22 08:05:09 +08:00
0002e7efbe SensorSpec +HasRadar/HasEO/HasIR 显式类型字段
- SensorSpec 新增三个 bool 字段,前端直接读取探测设备类型,无需推断
- DefaultData.Load 后由 Range 字段派生填充
- 支持复合传感器(如光电+红外 eo-station)
- 对接文档同步更新
- 262 测试通过,Unity 编译通过
2026-06-21 10:39:14 +08:00
a6ad8a348e GetEnums() +SensorType 枚举(雷达/光电/红外)
- 新增 SensorType 枚举(Radar=0, EO=1, IR=2)供前端探测设备 UI 分类
- EnumMetadata + GetEnums() 加入 SensorType(含中文翻译)
- 对接文档同步更新
- 262 测试通过,Unity 编译通过
2026-06-21 10:33:57 +08:00
fb3c6fd2eb EnumMetadata +EntityType + ScenarioUnit +AmmunitionSpecId
- GetEnums() 新增 EntityType 枚举(模型管理 UI 区分 Drone/Platform/DetectionEquip)
- ScenarioUnit 新增 AmmunitionSpecId 字段(FK → AmmunitionSpec,前端弹药配置用)
- 对接文档同步更新
- 262 测试通过,Unity 编译通过
2026-06-20 22:33:12 +08:00
6f83cfb105 对接文档:GetEnums +EntityType(12 个枚举) 2026-06-20 12:10:36 +08:00
e9c10bfe7d GetEnums +EntityType 枚举(Drone/Platform/DetectionEquip/Cloud/Munition) 2026-06-20 12:04:51 +08:00
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
f77fb88487 Unity 脚本适配:FireUnitSpecId→LaunchPlatformSpecId + DLL 更新 2026-06-19 21:56:41 +08:00
3dc56e4a6e 实施文档 +Phase 13:模型重构/LaunchPlatformSpec/代码审查 2026-06-19 21:55:28 +08:00
1db632676d 架构设计文档:核心作战概念更新(发射平台/探测设备分离) 2026-06-19 21:54:26 +08:00
bebc03ee43 对接文档更新:LaunchPlatformSpec 替换 FireUnitSpec 2026-06-19 21:53:02 +08:00
dabf367b21 VERSION 0.11.0 — LaunchPlatformSpec 分离 + 代码审查 + 250 测试
- LaunchPlatformSpec:纯发射参数,SensorSpec 统一探测
- 代码审查:拆分 DefaultData/AlgorithmTypes/SpecRepositories
- GetEnums 中英文对照 / ModelId 3D 引用
- DataServiceTests +12 / 死代码清除
- 250/250 全过
2026-06-19 21:50:10 +08:00
b23b19e4e9 LaunchPlatformSpec 适配完成:预设场景+测试加 SensorSpecId,250 全过
- DefaultScenarios 每个部署加 AddDetection
- TestData.CreateScenarioUnit 默认带 radar-sr
- FullPipelineTests 探测测试加 SensorSpec 引用
- 发射平台与探测设备完全分离
2026-06-19 21:46:54 +08:00
8a198a27a0 新增 LaunchPlatformSpec:发射平台与探测设备分离
- LaunchPlatformSpec(纯发射参数,无探测字段)
- ScenarioUnit.FireUnitSpecId → LaunchPlatformSpecId
- PlatformEntity/BuildFireUnits/BuildDetectionSources 适配
- ReportGenerator/ReportService 适配
- FireUnitSpec 保留但不使用
- 243/250 通过,7 个待修
2026-06-19 21:43:06 +08:00
8abaf0bf87 对接文档:GetEnums 返回 List<EnumItem> 中英文对照 2026-06-19 21:28:40 +08:00
4b2677e224 GetEnums 返回中英文对照:EnumItem{Name,ChineseName,Value} 替代 Dictionary<string,int>
- EnumMetadata 每个枚举从 Dictionary 改为 List<EnumItem>
- ScenarioService 内置中文翻译(与 ReportGenerator 统一)
- 250 测试全过
2026-06-19 21:24:51 +08:00
2a062c07bd +DataServiceTests (12 个) / 修复 FormationTemplate 缺 PrimaryKey / 删除死代码 2026-06-19 10:35:42 +08:00
d3248d80a3 删除死代码:MunitionEntity._hasExceededReleaseAltitude 2026-06-19 10:32:33 +08:00
2adacffe85 拆分 AlgorithmTypes: Vector3/DetectionSource 独立文件;SpecRepositories 拆分为独立文件;命名空间修正 2026-06-19 10:30:34 +08:00
62b718fa1e AGENTS.md: 提交前必须编译和复制 DLL 2026-06-19 10:28:17 +08:00
fc0a6b0397 Spec 类命名空间修正:CounterDrone.Core → CounterDrone.Core.Models
- DroneSpec/FireUnitSpec/SensorSpec/EnvironmentSpec/FormationTemplate/RouteTemplate
- EnumMetadata 移到 Services 目录
- 238 测试全过
2026-06-19 10:26:48 +08:00
f6d3f1bdb4 拆分 DefaultData.cs:Spec 类各自独立文件
- FireUnitSpec → Models/FireUnitSpec.cs
- DroneSpec → Models/DroneSpec.cs
- SensorSpec → Models/SensorSpec.cs
- EnvironmentSpec → Models/EnvironmentSpec.cs
- FormationTemplate → Models/FormationTemplate.cs
- RouteTemplate → Models/RouteTemplate.cs
- DefaultData.cs 仅保留 DefaultData 加载类
- 238 测试全过
2026-06-19 10:21:41 +08:00
dbe6808df7 更新 Unity DLL 2026-06-19 10:08:05 +08:00
7383b67fca 对接文档:ModelId/EntityType/FilePath 补充 + Model 注释说明 2026-06-19 10:07:01 +08:00
43e70a7482 对接文档 + DroneSpec.Model 注释:区分型号名称与 3D 模型引用 2026-06-19 10:06:37 +08:00
846d79a8d7 ModelInfo: ModelType→EntityType(枚举) + Description;ImportModel 支持传参 2026-06-19 10:02:09 +08:00
c8e066be64 仿真实体 +ModelId:DroneSpec/FireUnitSpec/SensorSpec → EntitySnapshot
- DroneSpec/FireUnitSpec/SensorSpec 加 ModelId (FK→ModelInfo)
- DroneEntity/PlatformEntity/DetectionEntity 内部带 ModelId
- DetectionSource +ModelId
- EntitySnapshot +ModelId,每帧推送给 Unity
- CollectSnapshots 传播所有实体 ModelId
2026-06-19 09:59:55 +08:00
7415d07d9f 更新 Unity DLL 2026-06-18 19:52:51 +08:00
d8f8ebd336 ModelManager.Update→UpdateModel(避免与 MonoBehaviour.Update 冲突) 2026-06-18 19:50:39 +08:00
ce11e0eb1f 修复 Unity 编译:EnumMetadata using + nullable 警告 2026-06-18 19:49:38 +08:00
efdd5ec94f 对接文档 V1.8:GetEnums API + Manager 完整方法列表 2026-06-18 19:46:53 +08:00
1fdffd2a41 GetEnums API:返回所有枚举定义供前端下拉框使用 2026-06-18 19:46:34 +08:00
178923c007 对接文档同步:完整 CRUD API 列表 2026-06-18 19:44:53 +08:00
5e7fd2fb16 IScenarioService +DeleteCloudDispersal 2026-06-18 19:44:29 +08:00
225590ac19 补全所有模型的完整 CRUD 接口
- ModelService: +AddModel/UpdateModel
- IScenarioService: +UpdateScenario +GetScene +Get/DeleteControlZone
  +Add/Update/Delete/GetScenarioDrones +Add/Update/Delete/GetDeploymentUnits
  +GetCloudDispersal +GetRoutes/DeleteRoute +GetWaypoints/GetWaypointsByWave/DeleteWaypoint
- ScenarioManager 全面暴露新增接口
- 238 测试全过
2026-06-18 19:42:48 +08:00
d73b586982 更新 Unity DLL(ScenarioDrone/ScenarioUnit 新表结构) 2026-06-18 17:50:42 +08:00
e30f173312 修复 Unity Manager 脚本:适配 ScenarioDrone/ScenarioUnit 新 schema 2026-06-18 17:50:15 +08:00
d2d0ae1414 air-standard 探测参数调整:雷达4km/光电3km/红外2km 2026-06-18 17:35:59 +08:00
bba7d2e505 air-standard 补 RadarRange=8000m 2026-06-18 17:34:33 +08:00
473890ed37 defaults.json: 补全 DroneSpec/FireUnitSpec 的 Model/Description 字段 2026-06-18 17:31:56 +08:00
184213b3c5 对接文档 V1.7:数据分层架构 + ScenarioDrone/ScenarioUnit 外键引用 2026-06-18 17:28:29 +08:00
1aa927e471 修复 ScenarioServiceTests 编译告警(CS8602/CS8625 空引用) 2026-06-18 17:26:58 +08:00
f0f5f76b8b SimulationReport: TargetCount→DroneCount, EquipmentCount→UnitCount 2026-06-18 17:25:02 +08:00
843141a7a8 修复测试断言:适配新 schema 的业务语义
- SaveDeployment: 显式 Guid 避免同纳秒冲突,验证 2 个部署正确保存
- DeleteDetection: 用 CreateDetectionUnit 创建传感器,verifying PositionX
- TargetDetected: 验证发射平台自带雷达可触发探测事件
2026-06-18 17:20:59 +08:00
4b08ffa659 238/238 tests pass: ScenarioDrone/ScenarioUnit migration complete
- TestData uses DB existing IDs (ground-light/radar-mr/shahed)
- CreateDetectionUnit with SensorSpecId=radar-mr
- CreateScenarioUnit with FireUnitSpecId=ground-light
- Fixed SaveDeployment assertion value
2026-06-18 17:14:51 +08:00
bb04411d6d 测试适配进展:235/238 通过,修复大部分断言和 spec 引用 2026-06-18 17:12:06 +08:00
6d56dec9a9 测试迁移:ScenarioDrone/ScenarioUnit 精简后测试适配
- TestData 新增 CreateScenarioDrone/CreateScenarioUnit 等辅助方法
- 批量替换旧字段构造为 spec 引用
- 230/238 通过,8 个边缘测试待修
2026-06-18 17:01:13 +08:00