CounterDroneBackend/docs/implementation/tasks/实施计划与任务跟踪.md

282 lines
12 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 实施计划与任务跟踪
> **项目**:反无人机仿真系统后端
> **文档版本**V1.0
> **创建日期**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+4可并行 → Phase 5 → Phase 6 → Phase 7
---
## 二、各阶段详情
### Phase 1核心基础
**目标**:搭建项目骨架,数据层可读写,单元测试全绿。
**时间**6 天
**验证**`dotnet test` 全绿,所有 Repository 和基础 Service 可独立运行。
| # | 任务 | 预估 | 状态 |
|---|------|------|------|
| 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 全部通过
---
### Phase 2想定管理
**目标**:仿真任务的完整 CRUD + 5 步配置保存/加载 + 搜索分页。
**时间**5 天
**验证**:可创建想定、逐步骤配置保存、草稿恢复、搜索分页。
| # | 任务 | 预估 | 状态 |
|---|------|------|------|
| 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 步配置聚合对象
---
### Phase 3算法层
**目标**:高斯烟团扩散模型、三种毁伤模型、防御推荐算法全部实现并通过确定性测试。
**时间**7 天
**验证**:固定输入 → 固定输出,可精确断言计算结果。
| # | 任务 | 预估 | 状态 |
|---|------|------|------|
| 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 | ⬜ |
**Phase 3 验收标准**
- [ ] 扩散模型:给定初始半径+风速+60s → 断言最终半径和中心偏移
- [ ] 毁伤模型:活塞发动机 5s 暴露于惰性气体 → 断言 HP ≤ 阈值
- [ ] 防御推荐:活塞发动机航路 → 推荐惰性气体,拦截概率 > 0
- [ ] AlgorithmFactory.Register 可替换任一算法实现
- [ ] 所有测试结果完全可复现(确定性)
---
### Phase 4仿真引擎
**目标**:完整 8 阶段仿真引擎,支持运行/暂停/停止,录制帧数据和事件。
**时间**7 天
**验证**:加载想定 → 运行完整仿真 → 检查事件序列和帧数据。
| # | 任务 | 预估 | 状态 |
|---|------|------|------|
| 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 | ⬜ |
**Phase 4 验收标准**
- [ ] 加载完整想定配置后可启动仿真
- [ ] 8 个阶段的 Tick 顺序正确,事件队列正常产出
- [ ] 集成测试:单无人机无拦截 → 断言 "DroneReachedTarget" 事件
- [ ] 集成测试:单无人机被拦截 → 断言 "DroneDestroyed" + "CloudGenerated"
- [ ] 帧数据可正确写入 `frames/{taskId}.db`,回读验证帧数一致
- [ ] Pause/Resume 不影响仿真状态一致性
---
### Phase 5报告生成
**目标**:仿真结束后自动生成报告,支持 PDF/Word 导出。
**时间**3 天
**验证**:跑完仿真 → 生成报告 → 导出文件存在且内容正确。
| # | 任务 | 预估 | 状态 |
|---|------|------|------|
| 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 | ⬜ |
**Phase 5 验收标准**
- [ ] 仿真完成后报告自动生成,包含仿真前/中/后三阶段数据
- [ ] 对抗结果判定正确
- [ ] PDF 导出文件可正常打开
- [ ] 报告搜索分页功能正常
---
### Phase 6Unity 集成
**目标**:将 Core.dll 集成到 Unity实现完整运行链路。
**时间**5 天
**验证**:在 Unity Editor 中完成"创建想定 → 配置 5 步 → 算法推荐 → 启动仿真 → 查看回放"全流程。
| # | 任务 | 预估 | 状态 |
|---|------|------|------|
| 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` MonoBehaviourUpdate 驱动引擎) | 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无内存泄漏
---
### 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 < 5ms16 实体场景
- [ ] 过期帧数据库可自动清理
- [ ] 单元测试覆盖率 > 80%
- [ ] 所有公开 API 有 XML 文档注释
---
## 三、依赖关系
```
Phase 1 (核心基础)
Phase 2 (想定管理)
├──────────────────┐
▼ ▼
Phase 3 (算法层) Phase 4 (仿真引擎)
│ │
└────────┬─────────┘
Phase 5 (报告生成)
Phase 6 (Unity 集成)
Phase 7 (打磨收尾)
```
> Phase 3 和 Phase 4 可部分并行:算法层完成后仿真引擎才能完整串联,但仿真实体模型可先开工。
---
## 四、里程碑
| 里程碑 | 截止 | 标志 |
|------|------|------|
| 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 |
---
## 五、状态图例
| 符号 | 含义 |
|------|------|
| | 未开始 |
| 🔄 | 进行中 |
| | 已完成 |
| | 阻塞 |
| | 放弃 |
---
> **下一步**:确认阶段划分和时间计划后,可以开始 Phase 1逐项打勾推进。