# CoarsePath README 结构化重构设计

## 目标

将 `ClumsyPilot/ParkrobTrajplanner/CoarsePath/README.md` 重构为与 `Map/README.md` 一致的说明风格，使调用者能够从模块职责、文件位置和数据流开始，逐步理解粗路径的调用、状态处理、P1 手动测试与明确的非目标。

本次只重构文档内容与现有文档检查；不改变 `Map`、`CoarsePath`、P1 UI 或任何测试场景的运行行为。

## 当前事实

- `Map` 负责障碍物来源、栅格化、不可变 `PlanningGridMap` 与缓存；它是粗路径的输入依赖。
- `CoarsePath` 已具备 P0 核心：车辆扩大足迹碰撞、前进/倒车原语、Dijkstra 启发式、Hybrid A*、路径回溯、最终复核与业务门面。
- P1 已具备：六个固定场景、AMR 位姿与手动终点空图演示、后台取消、Painter 结果可视化与 UI 结构检查。
- 尚不包含平滑、速度/时间轨迹、底盘控制、实时重规划、真实作业障碍物接入与 Release 基准。

## README 目标结构

1. **模块说明**：定义 `CoarsePath` 的输入、输出、唯一业务入口与职责边界。
2. **文件结构**：按 `Contracts`、`Vehicle`、`Search`、`Output`、`Facade`、`Test` 列出实际文件及职责。
3. **规划数据流**：说明 `CoarsePathPlanningJob` 经服务、Map 快照、Hybrid A* 到 `PlanningResult` 的固定路径；明确地图失败不会启动搜索。
4. **状态、单位与安全边界**：集中说明 mm/m、deg/rad、车辆安全外扩、取消/超时和“非成功不发布部分路径”。
5. **最小调用示例**：沿用现有可编译门面调用，展示成功、地图失败和规划失败的处理方式。
6. **缓存与 SourceVersion**：解释长期持有服务、`Input`/`Occupancy`/`None` 缓存层级及版本递增责任。
7. **详细使用指南**：依次说明长期服务、准备地图请求、车辆和搜索参数、调用门面、消费路径与方向段。
8. **P1 测试与调试**：集中说明七个 MovementTest、AMR 手动终点单位边界、后台停止和 Painter 图例。
9. **常见错误**：用“现象 / 原因 / 处理”表格覆盖单位混用、遗漏 `SourceVersion`、隐式空图、错误处理失败结果、将粗路径当作控制轨迹等问题。
10. **第一版限制**：保留不属于 P0/P1 的能力清单。

## 内容约束

- 仅记录已实现且已验证的行为；不把 P1 计划或人工验收说成已完成能力。
- 固定使用 `CoarsePathPlanningService.Plan(job, cancellationToken)` 作为唯一业务调用示例；不鼓励 UI 直接组装搜索组件。
- 保留 `Map/README.md` 链接，避免复制地图障碍物和栅格化的详细说明。
- P1 手动终点必须明确是显式空图演示，不能代表现场无障碍；当前 AMR 位姿为车辆几何中心，输入在 UI 边界从 mm/deg 转为 m/rad。
- 使用中文说明、目录树、数据流图、参数表、代码示例和常见错误表，保持 Map README 的信息密度与顺序。

## 验证

- 扩展 `ClumsyPilot/tests/verify_coarse_path_ui.ps1`，以 ASCII 稳定标识检查 README 含有新的主要章节、核心门面、数据流、P1 入口、单位、停止语义、非部分路径和限制边界。
- 运行 README 的 P1 UI 检查，以及现有 Debug 构建和粗路径集成检查；文档改动不应影响生产代码或 P0 行为。

## 非目标

- 不重写或迁移 `Map/README.md`。
- 不新增、删除或改名 C# 类型、场景、MovementTest 或测试脚本。
- 不恢复、清理或迁移 TrapMap 及其旧验证脚本。
