Commit Graph

207 Commits

Author SHA1 Message Date
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
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
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
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
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
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
1fdffd2a41 GetEnums API:返回所有枚举定义供前端下拉框使用 2026-06-18 19:46:34 +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
f0f5f76b8b SimulationReport: TargetCount→DroneCount, EquipmentCount→UnitCount 2026-06-18 17:25:02 +08:00
69ec9ed0e2 ScenarioDrone/ScenarioUnit 表精简:外键引用基础数据,去冗余字段
- ScenarioDrone: 仅保留 Id/ScenarioId/DroneSpecId/WaveId/Quantity
- ScenarioUnit: 仅保留 Id/ScenarioId/FireUnitSpecId/SensorSpecId/Position 等想定字段
- DroneEntity/PlatformEntity 构造函数改为接收 DroneSpec/FireUnitSpec
- SimulationEngine 加载 spec 字典,build 方法通过 FK 查 spec
- ReportGenerator/ReportService 通过 spec 字典取值
- DefaultLaneDivider.Divide 从 DroneWave.Quantity 取值
- Core 编译通过,测试待修复
2026-06-18 16:47:30 +08:00
537671ab3a DroneProfile→ScenarioDrone / EquipmentDeployment→ScenarioUnit 重命名
- 模型表: ScenarioDrone(原DroneProfile) / ScenarioUnit(原EquipmentDeployment)
- ScenarioConfig.Equipment→Units
- 数据库旧表清理 + scenariosVersion 4→5
- 238 测试全过
2026-06-18 16:36:25 +08:00
7413077514 修复 StreamingAssets/planner_config.json 残留 Piston/Electric 枚举值 2026-06-18 16:02:50 +08:00
9f682c9b91 SaveTarget→SaveDroneProfile + 测试方法名同步 2026-06-18 15:55:37 +08:00
67cea1490d Target→Profile / Targets→DroneProfiles 重命名
- DroneWave.Target → Profile
- ScenarioConfig.Targets → DroneProfiles
- DefensePlanner / SimulationEngine / ReportService 全部引用同步
- 更新 Unity DLL + defaults.json
- 238 测试全过
2026-06-18 15:37:25 +08:00
46ce1234ee 修复 Unity 编译错误:变量冲突、DroneWave.DroneType 不存在、nullable 警告
- SimulationBootstrap: scenario 变量名冲突 → sc
- ManagerVerification: DroneWave.DroneType → Target (DroneWave 无此属性)
- ReportManager: string? → 拆为两个重载避免 nullable annotation 警告
2026-06-18 15:27:13 +08:00
0434920100 更新 Unity DLL 编译产物 2026-06-18 15:25:20 +08:00
ff6db2786e VERSION 0.10.0 — 模型重命名、属性完善、文档同步
- VERSION: 0.9.0 → 0.10.0
- CHANGELOG: 新增 0.10.0 条目
- 架构设计 V15: DroneType 枚举清理、表结构加 Model/Description
- 对接文档 V1.6: 去历史对照,只写现状核心模型表
- 数据库迁移: 删旧表 SimTask/TargetConfig/SimulationReport
- 238 测试全过
2026-06-18 15:24:14 +08:00
ad0eaf47da 完善模型属性:加 Model/Description 字段,TaskNumber→ScenarioNumber,Task→Info,Task→Scenario 方法名
- DroneProfile/DroneSpec: 加 Model、Description
- Scenario: 加 Description,TaskNumber→ScenarioNumber
- EquipmentDeployment/FireUnitSpec: 加 Description
- ScenarioConfig: Task→Info
- ScenarioService: CreateTask→CreateScenario 等方法名统一
- 238 单元测试通过
2026-06-18 15:15:41 +08:00
ca0ce8aa52 重命名核心模型:TargetConfig→DroneProfile, SimTask→Scenario, TaskFullConfig→ScenarioConfig, TaskId→ScenarioId
- DroneType 枚举清理:移除 Electric/Piston,重编号 HighSpeed=2
- planner_config.json / defaults.json 同步迁移
- 238 单元测试全部通过
2026-06-18 15:02:58 +08:00
def3996f4f 更新编译产物:Core.dll 复制到 Unity Plugins 2026-06-18 13:43:14 +08:00
fb87fdfa22 统一平台物理模型:去除空基/地基分支
- BuildCandidate 合并 BuildAirBased/GroundBasedCandidate 为单一方法,统一用 MuzzleVelocity
- TryGenerateFireEvents 统一用 InterceptCalculator.Compute,去除 ComputeHorizontal
- 抛物线选解策略:两解逐一验证可行性(距离匹配 + fireTime>0),选最早拦截的解
- 空基 FireUnit 补充 MuzzleVelocity 字段(等于 CruiseSpeed)
- 所有 238 个单元测试通过
2026-06-18 13:40:48 +08:00
92d1131dc1 fix: 统一选择远点命中 + FlightDuration 传递,喷气式通过
PlanUnitLane: ParabolicMotion.GetFlightTimes 选远点(离无人机近)
FireEvent: 新增 FlightDuration 字段
MunitionEntity: 接收 flightDuration → _useTimeArrival,按时间到达
地基: FlightDuration = interceptShellTime(保持 InterceptCalculator 一致性)
空基: FlightDuration = ParabolicMotion 选出的远点 tof

238 全部通过
2026-06-18 10:04:30 +08:00
b4f9a4055c build: 同步 DLL 到 Unity Plugins 2026-06-18 00:14:44 +08:00
4631049aad refactor: 引入 ParabolicMotion 替代自研抛物线方程,修复 c 符号 bug
新增 ParabolicMotion 模块:
- GetFlightTimes(yTarget) 返回所有正时间
- GetFlightTime(yTarget, pref) 按偏好选择
- SolveAngles(range, hd, v0) 返回两个角度
- 支持 TrajectoryPreference {High, Low, Nearest, Farthest}

Kinematics 委托给 ParabolicMotion:
- CalculateLaunchAngle → SolveAngle(Low)
- ComputeParabolicRange → ComputeRange(Nearest)

修复 AI 模块 bug:c = y0 - yTarget → c = yTarget - y0
2026-06-18 00:12:45 +08:00
5909c86402 fix: ManagerVerification waypoint 缺 Speed 字段 2026-06-17 23:25:08 +08:00
ebebb41671 fix: 创建 StreamingAssets 并放入 defaults.json 和 planner_config.json 2026-06-17 23:23:29 +08:00
eb0cb66196 fix: 同步 DLL 到 Unity Assets/Plugins(不是 unity_plugins) 2026-06-17 23:22:23 +08:00
276bb7adfa fix: 空基/地基统一发射角计算,风偏纳入;三机全灭
Kinematics: ComputeParabolicRange 垂直运动直接算时间
DefensePlanner: cloudGen 先算再基于此算角度,消除风偏导致的不一致
DefaultLaneDivider: 宽+深双维度判断拆分
DroneEntity/RoutePlan: 支持 LateralAxis/LongitudinalAxis
MunitionEntity: _arrivesDescending 修正
测试: 237 通过,Jet(Skip:高弹道)
2026-06-17 20:20:00 +08:00