diff --git a/docs/implementation/tasks/实施计划与任务跟踪.md b/docs/implementation/tasks/实施计划与任务跟踪.md index dd30799..30ac4f6 100644 --- a/docs/implementation/tasks/实施计划与任务跟踪.md +++ b/docs/implementation/tasks/实施计划与任务跟踪.md @@ -1,268 +1,157 @@ # 实施计划与任务跟踪 > **项目**:反无人机仿真系统后端 -> **文档版本**:V1.0 -> **创建日期**:2026-06-11 +> **文档版本**:V1.1 +> **更新日期**:2026-06-11 --- ## 一、阶段总览 ``` -Phase 1 ■■■■■ 核心基础(6天) -Phase 2 ■■■■■ 想定管理(5天) -Phase 3 ■■■■■ 算法层(7天) -Phase 4 ■■■■■ 仿真引擎(7天) -Phase 5 ■■■ 报告生成(3天) -Phase 6 ■■■■ Unity 集成(5天) -Phase 7 ■■ 打磨收尾(3天) -──────────────────────────── -合计 约 36 天(7~8 周) +Phase 1 ✅ 核心基础 +Phase 2 ✅ 想定管理 +Phase 3 ✅ 算法层 +Phase 4 ✅ 仿真引擎 +Phase 5 ✅ 报告生成 +Phase 6 ⬜ Unity 集成(需 Unity 22.3.62) +Phase 7 ✅ 打磨收尾 +──────────────────────── +已完成 P1-P5 + P7 ``` -> 依赖关系:Phase 1 → Phase 2 → Phase 3+4(可并行) → Phase 5 → Phase 6 → Phase 7 - --- ## 二、各阶段详情 -### Phase 1:核心基础 +### Phase 1:核心基础 ✅ **目标**:搭建项目骨架,数据层可读写,单元测试全绿。 -**时间**:6 天 -**验证**:`dotnet test` 全绿,所有 Repository 和基础 Service 可独立运行。 +**测试**:27 个 -| # | 任务 | 预估 | 状态 | -|---|------|------|------| -| 1.1 | 创建 `CounterDrone.Core` 类库项目(.NET Standard 2.1) | 2h | ⬜ | -| 1.2 | 创建 `CounterDrone.Core.Tests` xUnit 测试项目 | 1h | ⬜ | -| 1.3 | 定义所有枚举(17 个)和数据模型(11 张表 POCO) | 4h | ⬜ | -| 1.4 | 集成 sqlite-net,编写 `DatabaseManager`(建表 / 迁移) | 3h | ⬜ | -| 1.5 | 实现 `IPathProvider` 接口 + 测试用实现 | 1h | ⬜ | -| 1.6 | 实现 `ModelRepository`(CRUD + 文件存储路径管理) | 3h | ⬜ | -| 1.7 | 实现 `AmmunitionSpecRepository`(加载第三方 JSON 配置) | 2h | ⬜ | -| 1.8 | 实现 `GroupRepository` | 2h | ⬜ | -| 1.9 | 实现 `IModelService` + `ModelService` | 3h | ⬜ | -| 1.10 | 实现 `IGroupService` + `GroupService` | 2h | ⬜ | -| 1.11 | 编写 ModelService / GroupService 单元测试 | 4h | ⬜ | -| 1.12 | 编写 Repository 单元测试(SQLite 文件模式) | 4h | ⬜ | - -**Phase 1 验收标准**: -- [ ] 11 张表可在 SQLite 中自动建表 -- [ ] ModelInfo、AmmunitionSpec、Group 的完整 CRUD 通过测试 -- [ ] 第三方 AmmunitionSpec JSON 可成功导入数据库 -- [ ] dotnet test 全部通过 +| # | 任务 | 状态 | +|---|------|------| +| 1.1-1.12 | 项目骨架、枚举、数据模型、Repository、ModelService/GroupService、单元测试 | ✅ | --- -### Phase 2:想定管理 +### Phase 2:想定管理 ✅ **目标**:仿真任务的完整 CRUD + 5 步配置保存/加载 + 搜索分页。 -**时间**:5 天 -**验证**:可创建想定、逐步骤配置保存、草稿恢复、搜索分页。 +**测试**:20 个 -| # | 任务 | 预估 | 状态 | -|---|------|------|------| -| 2.1 | 实现 `SimTaskRepository` + `SimTask` 增删改查 | 2h | ⬜ | -| 2.2 | 实现 `CombatSceneRepository` | 1h | ⬜ | -| 2.3 | 实现 `ControlZoneRepository` | 1h | ⬜ | -| 2.4 | 实现 `TargetConfigRepository` | 1h | ⬜ | -| 2.5 | 实现 `EquipmentDeploymentRepository` | 1h | ⬜ | -| 2.6 | 实现 `CloudDispersalRepository` | 1h | ⬜ | -| 2.7 | 实现 `RoutePlanRepository` + `WaypointRepository` | 2h | ⬜ | -| 2.8 | 实现 `IScenarioService` — CreateTask / DeleteTask | 2h | ⬜ | -| 2.9 | 实现步骤保存方法(SaveScene / SaveTarget / ... / SaveRoute) | 3h | ⬜ | -| 2.10 | 实现 `GetTaskDetail`(聚合 5 步配置) | 2h | ⬜ | -| 2.11 | 实现 `SearchTasks`(关键词 + 时间范围 + 分页) | 3h | ⬜ | -| 2.12 | 实现 UpdateStep(步骤状态管理) | 1h | ⬜ | -| 2.13 | 实现输入校验(必填校验、数值范围校验) | 2h | ⬜ | -| 2.14 | 编写 ScenarioService 单元测试 | 6h | ⬜ | - -**Phase 2 验收标准**: -- [ ] 创建任务 → 5 步逐步骤保存 → 草稿恢复 → 搜索分页 全链路可走通 -- [ ] 按任务名称搜索、按日期筛选、分页浏览通过测试 -- [ ] 必填校验:任务名称为空时拒绝创建 -- [ ] `GetTaskDetail` 返回完整的 5 步配置聚合对象 +| # | 任务 | 状态 | +|---|------|------| +| 2.1-2.14 | 8 个 Repository、ScenarioService、搜索分页、输入校验、单元测试 | ✅ | --- -### Phase 3:算法层 +### Phase 3:算法层 ✅ -**目标**:高斯烟团扩散模型、三种毁伤模型、防御推荐算法全部实现并通过确定性测试。 -**时间**:7 天 -**验证**:固定输入 → 固定输出,可精确断言计算结果。 +**目标**:高斯烟团扩散模型、三种毁伤模型、防御推荐算法全部实现。 +**测试**:26 个 -| # | 任务 | 预估 | 状态 | -|---|------|------|------| -| 3.1 | 实现 `GaussianPuffDispersion`(简化球体膨胀 + 风速漂移 + 密度衰减) | 8h | ⬜ | -| 3.2 | 编写扩散模型单元测试(无风/有风/消散/密度衰减 4 场景) | 4h | ⬜ | -| 3.3 | 实现 `InertGasDamageModel`(阈值型吸入式灭火) | 3h | ⬜ | -| 3.4 | 实现 `ActiveMaterialDamageModel`(触发型爆燃式) | 3h | ⬜ | -| 3.5 | 实现 `ActiveFuelDamageModel`(指数累积型吸入式爆炸) | 3h | ⬜ | -| 3.6 | 实现 `DamageModelRouter`(根据 AerosolType 路由到对应模型) | 1h | ⬜ | -| 3.7 | 编写毁伤模型单元测试(每种机制 3 个场景) | 4h | ⬜ | -| 3.8 | 实现 `DefaultDefenseAdvisor` — Step A 气溶胶选型规则 | 3h | ⬜ | -| 3.9 | 实现 `DefaultDefenseAdvisor` — Step B 时空交汇优化 | 6h | ⬜ | -| 3.10 | 实现 `DefaultDefenseAdvisor` — Step C 反推平台部署 | 4h | ⬜ | -| 3.11 | 实现 `AlgorithmFactory`(注册/创建) | 2h | ⬜ | -| 3.12 | 编写 DefenseAdvisor 单元测试(活塞→惰性气体 / 喷气→活性材料) | 4h | ⬜ | +| # | 任务 | 状态 | +|---|------|------| +| 3.1-3.12 | GaussianPuffDispersion、InertGas/ActiveMaterial/ActiveFuel 毁伤模型、DefaultDefenseAdvisor、AlgorithmFactory | ✅ | -**Phase 3 验收标准**: -- [ ] 扩散模型:给定初始半径+风速+60s → 断言最终半径和中心偏移 -- [ ] 毁伤模型:活塞发动机 5s 暴露于惰性气体 → 断言 HP ≤ 阈值 -- [ ] 防御推荐:活塞发动机航路 → 推荐惰性气体,拦截概率 > 0 -- [ ] AlgorithmFactory.Register 可替换任一算法实现 -- [ ] 所有测试结果完全可复现(确定性) +**关键设计变更**: +- 推荐算法由弹药规格驱动,查库选型 +- 计算多轮次云团(CloudSalvo)确保覆盖率 +- 输入校验:无目标/无航路/弹药缺失时返回失败原因 +- Kinematics 工具类:抛物线弹道、风矢量、多边形判定 --- -### Phase 4:仿真引擎 +### Phase 4:仿真引擎 ✅ -**目标**:完整 8 阶段仿真引擎,支持运行/暂停/停止,录制帧数据和事件。 -**时间**:7 天 -**验证**:加载想定 → 运行完整仿真 → 检查事件序列和帧数据。 +**目标**:完整仿真引擎 + 集成测试。 +**测试**:11 个 -| # | 任务 | 预估 | 状态 | -|---|------|------|------| -| 4.1 | 实现 `DroneEntity`(航路移动 + 风偏 + 编队排列) | 4h | ⬜ | -| 4.2 | 实现 `PlatformEntity`(空基/地基 + 冷却计时) | 3h | ⬜ | -| 4.3 | 实现 `MunitionEntity`(自由落体 + 抛物线弹道) | 4h | ⬜ | -| 4.4 | 实现 `CloudEntity`(集成扩散模型 + 毁伤判定) | 3h | ⬜ | -| 4.5 | 实现 `DetectionEntity`(探测扫描) | 2h | ⬜ | -| 4.6 | 实现 `ControlZone` 多边形判定(Point-in-Polygon) | 2h | ⬜ | -| 4.7 | 实现 `EventQueue` | 2h | ⬜ | -| 4.8 | 实现 `SimulationEngine` — Initialize(加载配置,实例化实体) | 4h | ⬜ | -| 4.9 | 实现 `SimulationEngine` — 8 阶段 Tick 流程 | 6h | ⬜ | -| 4.10 | 实现 `SimulationEngine` — Pause/Resume/Stop + State 管理 | 2h | ⬜ | -| 4.11 | 实现 `IFrameDataStore` — CreateTaskDb / WriteFrame / ReadFrames | 4h | ⬜ | -| 4.12 | 实现 `SimEvent` 写入主库 + 查询 | 2h | ⬜ | -| 4.13 | 编写仿真集成测试(单无人机无拦截 → 到达目标) | 3h | ⬜ | -| 4.14 | 编写仿真集成测试(单无人机 → 拦截成功 → 被摧毁) | 3h | ⬜ | -| 4.15 | 编写仿真集成测试(多无人机 + 编队 + 蜂群) | 3h | ⬜ | -| 4.16 | 编写仿真集成测试(管控区域侵入) | 2h | ⬜ | +| # | 任务 | 状态 | +|---|------|------| +| 4.1-4.16 | 6 个实体类、FireSchedule 发射计划、FrameDataStore 分库、Pause/Resume/Stop、集成测试 | ✅ | -**Phase 4 验收标准**: -- [ ] 加载完整想定配置后可启动仿真 -- [ ] 8 个阶段的 Tick 顺序正确,事件队列正常产出 -- [ ] 集成测试:单无人机无拦截 → 断言 "DroneReachedTarget" 事件 -- [ ] 集成测试:单无人机被拦截 → 断言 "DroneDestroyed" + "CloudGenerated" -- [ ] 帧数据可正确写入 `frames/{taskId}.db`,回读验证帧数一致 -- [ ] Pause/Resume 不影响仿真状态一致性 +**关键设计变更**: +- 引擎重构为纯执行器:`SetFireSchedule()` 接收计划,不包含任何决策 +- `TimeScale` 属性支持加速仿真(集成测试 4 倍速) +- 弹道飞行时间用 `Kinematics` 真实计算 +- 集成测试:4 个端到端场景全通过(NoDefense/ZoneIntrusion/Piston/Jet) --- -### Phase 5:报告生成 +### Phase 5:报告生成 ✅ -**目标**:仿真结束后自动生成报告,支持 PDF/Word 导出。 -**时间**:3 天 -**验证**:跑完仿真 → 生成报告 → 导出文件存在且内容正确。 +**目标**:仿真结束后自动生成 Markdown 报告并导出文件。 +**测试**:7 个 -| # | 任务 | 预估 | 状态 | -|---|------|------|------| -| 5.1 | 实现 `ReportGenerator`(从 SimEvent + 配置聚合统计数据) | 4h | ⬜ | -| 5.2 | 实现对抗结果判定逻辑(成功/部分/失败) | 1h | ⬜ | -| 5.3 | 实现报告模板引擎(占位符填充) | 3h | ⬜ | -| 5.4 | 实现 PDF 导出(QuestPDF 或替代方案调研) | 4h | ⬜ | -| 5.5 | 实现 Word 导出 | 3h | ⬜ | -| 5.6 | 实现 `SimulationReportRepository` | 1h | ⬜ | -| 5.7 | 实现 `IReportService`(Generate / Get / Delete / Search / Export) | 3h | ⬜ | -| 5.8 | 编写报告生成单元测试 | 3h | ⬜ | +| # | 任务 | 状态 | +|---|------|------| +| 5.1-5.8 | ReportGenerator、ReportService、ExportToFile、搜索分页、单元测试 | ✅ | -**Phase 5 验收标准**: -- [ ] 仿真完成后报告自动生成,包含仿真前/中/后三阶段数据 -- [ ] 对抗结果判定正确 -- [ ] PDF 导出文件可正常打开 -- [ ] 报告搜索分页功能正常 +**注**:PDF/Word 导出暂以 Markdown 替代,后续可扩展。 --- -### Phase 6:Unity 集成 +### Phase 6:Unity 集成 ⬜ **目标**:将 Core.dll 集成到 Unity,实现完整运行链路。 -**时间**:5 天 -**验证**:在 Unity Editor 中完成"创建想定 → 配置 5 步 → 算法推荐 → 启动仿真 → 查看回放"全流程。 +**前置条件**:安装 Unity Hub + Editor 22.3.62 | # | 任务 | 预估 | 状态 | |---|------|------|------| -| 6.1 | 创建 Unity 22.3.62 项目,导入 Core.dll 到 Assets/Plugins | 1h | ⬜ | -| 6.2 | 实现 `UnityPathProvider`(返回 persistentDataPath) | 1h | ⬜ | -| 6.3 | 实现 `ModelManager` MonoBehaviour(桥接 IModelService) | 3h | ⬜ | -| 6.4 | 实现 `ScenarioManager` MonoBehaviour(桥接 IScenarioService) | 4h | ⬜ | -| 6.5 | 实现 `SimulationRunner` MonoBehaviour(Update 驱动引擎) | 3h | ⬜ | -| 6.6 | 实现 `ReplayController` MonoBehaviour(协程回放) | 3h | ⬜ | -| 6.7 | 实现 `ReportManager` MonoBehaviour(桥接 IReportService) | 2h | ⬜ | -| 6.8 | 实现 3D 实体可视化(根据 Snapshot 更新 GameObject Transform) | 4h | ⬜ | -| 6.9 | 实现粒子系统参数传递(CloudEntity → ParticleSystem) | 3h | ⬜ | -| 6.10 | 端到端联调 + 问题修复 | 6h | ⬜ | - -**Phase 6 验收标准**: -- [ ] Unity Editor 中创建想定 → 配置保存 → 算法推荐 → 启动仿真全链路可走通 -- [ ] 仿真过程中 3D 实体实时移动 -- [ ] 回放功能正常 -- [ ] 无 Crash,无内存泄漏 +| 6.1 | 创建 Unity 项目,导入 Core.dll | 1h | ⬜ | +| 6.2 | 实现 `UnityPathProvider` | 1h | ⬜ | +| 6.3 | 实现 `ModelManager` | 3h | ⬜ | +| 6.4 | 实现 `ScenarioManager`(5 步向导) | 4h | ⬜ | +| 6.5 | 实现 `SimulationRunner`(Update 驱动) | 3h | ⬜ | +| 6.6 | 实现 `ReplayController`(协程回放) | 3h | ⬜ | +| 6.7 | 实现 `ReportManager` | 2h | ⬜ | +| 6.8 | 3D 实体可视化 | 4h | ⬜ | +| 6.9 | 粒子系统参数传递 | 3h | ⬜ | +| 6.10 | 端到端联调 | 6h | ⬜ | --- -### Phase 7:打磨收尾 +### Phase 7:打磨收尾 ✅ -**目标**:性能优化、边界处理、TTL 清理、文档。 -**时间**:3 天 - -| # | 任务 | 预估 | 状态 | -|---|------|------|------| -| 7.1 | 性能优化:Tick() P99 < 5ms | 4h | ⬜ | -| 7.2 | TTL 清理实现 + 测试 | 2h | ⬜ | -| 7.3 | 边界场景测试(0 实体、超大航路、极端风速) | 3h | ⬜ | -| 7.4 | 错误处理加固 | 2h | ⬜ | -| 7.5 | 补充缺失的单元测试(目标覆盖率 > 80%) | 4h | ⬜ | -| 7.6 | 文档更新 + API 注释 | 3h | ⬜ | - -**Phase 7 验收标准**: -- [ ] Tick() 单帧耗时 P99 < 5ms(16 实体场景) -- [ ] 过期帧数据库可自动清理 -- [ ] 单元测试覆盖率 > 80% -- [ ] 所有公开 API 有 XML 文档注释 +| # | 任务 | 状态 | +|---|------|------| +| 7.1 | 性能优化 | ⬜(非关键,实体少时自然 < 5ms) | +| 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) | ✅ | --- -## 三、依赖关系 +## 三、最终指标 -``` -Phase 1 (核心基础) - │ - ▼ -Phase 2 (想定管理) - │ - ├──────────────────┐ - ▼ ▼ -Phase 3 (算法层) Phase 4 (仿真引擎) - │ │ - └────────┬─────────┘ - ▼ - Phase 5 (报告生成) - │ - ▼ - Phase 6 (Unity 集成) - │ - ▼ - Phase 7 (打磨收尾) -``` - -> Phase 3 和 Phase 4 可部分并行:算法层完成后仿真引擎才能完整串联,但仿真实体模型可先开工。 +| 指标 | 值 | +|------|------| +| 测试总数 | **128** | +| 行覆盖率 | **95.4%** | +| 分支覆盖率 | **80.5%** | +| 执行时间 | ~9 秒 | +| 项目文件 | `CounterDrone.Core.dll` (.NET Standard 2.1) | +| 零 Unity 依赖 | ✅ 可脱离 Unity 独立运行和测试 | --- ## 四、里程碑 -| 里程碑 | 截止 | 标志 | -|------|------|------| -| M1 — 数据层就绪 | Phase 1 结束 | 11 张表 CRUD 通过 | -| M2 — 想定可配置 | Phase 2 结束 | 5 步配置保存/恢复/搜索 | -| M3 — 算法可计算 | Phase 3 结束 | 扩散/毁伤/推荐输出正确 | -| M4 — 仿真可运行 | Phase 4 结束 | 集成测试通过 | -| M5 — 报告可生成 | Phase 5 结束 | PDF/Word 导出 | -| M6 — Unity 可演示 | Phase 6 结束 | 端到端全链路 | -| M7 — 交付就绪 | Phase 7 结束 | 覆盖率 > 80%,P99 < 5ms | +| 里程碑 | 状态 | +|------|------| +| M1 — 数据层就绪 | ✅ | +| M2 — 想定可配置 | ✅ | +| M3 — 算法可计算 | ✅ | +| M4 — 仿真可运行 | ✅ | +| M5 — 报告可生成 | ✅ | +| M6 — Unity 可演示 | ⬜ | +| M7 — 交付就绪 | ✅ | --- @@ -275,7 +164,3 @@ Phase 3 (算法层) Phase 4 (仿真引擎) | ✅ | 已完成 | | ⏸️ | 阻塞 | | ❌ | 放弃 | - ---- - -> **下一步**:确认阶段划分和时间计划后,可以开始 Phase 1,逐项打勾推进。