# Step 2: 探测与生成规划

## 强制规则

- 🛑 本步**不写任何文件**，只探测与规划。
- ✅ 每个维度「命中 / 跳过」都要有 Grep/Glob/Read 实证（detect-stack JSON 仅辅助）。
- 📋 跳过的维度必须记录原因+证据，不可静默丢弃。
- 💬 中文沟通。

## YOUR TASK

按 `references/detection-matrix.md` 对 `{target-root}` 逐维度实证求值，产出「生成计划表」+「跳过维度表」，HALT 等用户确认。

## 执行序列

### 1. 加载矩阵

`detection-matrix.md`、`dimension-catalog.md` 已由 persistent_facts 载入。把 `{workflow.extra_dimensions}` 并入矩阵一起求值。

### 2. 逐维度实证求值

对矩阵每个维度，按其信号用 Grep/Glob/Read 实证（拿 detect-stack JSON 交叉校验）：

- **通用维度命中** → 记录：固定 globs（取自 `glob-patterns.md`）、是否需裁剪小节。
- **特定维度命中** → 标注「step-03 需按 `extraction-recipes.md#{dim}` 扫码」，并预览将扫到的实体数（如 `@XxlJob` 命中数）。
- **前端三维度** → 纯后端服务（`hasVue/hasJs/hasCss` 全 false）**全部跳过**；命中才纳入。
- **database 互斥** → 仅 Oracle 跳过 mysql、反之；都有则都纳入。
- **redis 阈值** → 仅普通缓存无自定义锁 key 约定 → 跳过（并入 security）；检出 `LOCK:`/`_KEY_PREFIX` 等约定才单列。
- **async-export** → 必须 `Grep "createManageReserveTask|exportThreadPool" {target-root}/src` 确认；无强信号 → 跳过。

### 3. 收集通用维度占位符真值

为 step-03 注入准备（依 `golden-sample-guide.md` 占位符表）：

- `{{SERVICE_NAME}}` = `artifactId`
- `{{BASE_PACKAGE}}` = `basePackage`
- `{{API_CONTEXT}}` = 扫 bootstrap/网关配置的应用名/上下文，缺则 `{{SERVICE_NAME}}-api`
- `{{ORACLE_VERSION}}` = 配置/依赖推断，缺则填团队默认 `11.2.0.4`（报告标注「需人工确认」）
- 其余占位符同表；探测不到的**保留占位符**并登记到报告「需人工补充」。

### 4. 产出计划并 HALT

用中文展示两张表：

**生成计划表**
| 维度 | 类型 | 命中证据 | globs | 数据来源 |
|------|------|---------|-------|---------|
| java-backend | 通用 | 121 个 .java | `["**/*.java"]` | 基线裁剪 |
| xxl-job | 特定 | @XxlJob×3 | (无) | 真实扫描 3 Handler，XxlJobHelper 风格 |
| feign | 特定 | @FeignClient×6 | (无) | 真实扫描 6 客户端 |
| … | | | | |

**跳过维度表**
| 维度 | 跳过原因（含证据） |
|------|-------------------|
| database-mysql | 仅 Oracle 依赖，无 jdbc:mysql |
| frontend-* | 无 .vue/.js/.css（纯后端） |
| mq | 无 MQ 依赖/注解 |
| … | |

```
[C] 确认计划，进入生成
[A] 调整（增删维度 / 改 globs）
```

**HALT — 等用户 [C]**（`headless` 时跳过 HALT 直接进 step-03）。

## SUCCESS METRICS
✅ 每维度有实证命中/跳过结论
✅ 通用维度 globs 与占位符真值齐备
✅ 特定维度标注扫码配方与预览
✅ 跳过维度全部记录原因

## FAILURE MODES
❌ 仅凭 detect-stack JSON 不实证
❌ 静默跳过维度
❌ 纯后端却纳入前端维度
❌ async-export 未实证就纳入

## NEXT STEP

[C]（或 headless）后载入 `./step-03-generate.md`。
