feat(analyze): 新增 Ploss/Qfod 分析命令

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Scottxjw
2026-08-14 15:36:29 +08:00
parent b88c07356e
commit 0667e2e9b8
8 changed files with 686 additions and 0 deletions

View File

@@ -12,6 +12,7 @@
| `aggregate` | 从本地库汇总生成发布库 | local.db → release.db |
| `export` | 导出发布库到 CSV | release.db → CSV |
| `clean` | 清理本地库数据(软删除) | 只写 local.db |
| `analyze` | 独立分析Ploss 余量/delta_p、Qfod 标定阈值 | log → 控制台报告 |
---
@@ -71,6 +72,26 @@ dotnet run clean --all --confirm
---
### 2.5 analyze
```bash
# Ploss 余量 / delta_p 分析(单文件,直接解析日志,不依赖本地库)
dotnet run analyze --type ploss --file <log>
# Qfod 标定阈值(两个文件:纯手机 / 手机+异物)
dotnet run analyze --type qfod --pure <纯手机.log> --foreign <手机+异物.log>
```
- `analyze` 为**独立分析**,不进入 `parse → aggregate` 发布管线,也不写任何文件(仅控制台报告)。
- Ploss 口径以实体语义为准Field9=ploss、Field10=threshold、Field12=FOD 标志):
- FOD 报警 = `Field12 == 1`
- 安全余量 `Margin = Threshold Ploss > 2000`
- 恒等式校验 `delta_p = Tx Rx pow_loss Ploss`(仅两行格式)
- delta_p 反解(两行格式且 FOD=1`delta_p' = DeltaP + 2001 + Ploss Threshold`,控制台输出重写后的 header 行
- Qfod 标定阈值:`Threshold = (纯手机 ΔQ 最大值 + 手机+异物 ΔQ 最小值) / 2`。因现无法自动区分两个日志文件,需显式传入 `--pure`/`--foreign`
---
## 3. 典型工作流
```bash