Files
WCTDataMiner/docs/architecture/CLI命令设计.md
Scottxjw 0667e2e9b8 feat(analyze): 新增 Ploss/Qfod 分析命令
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-14 15:36:29 +08:00

2.8 KiB
Raw Blame History

CLI 命令设计

所属模块:架构概览


1. 命令概览

命令 说明 数据流
parse 解析日志文件到本地库 log → local.db
aggregate 从本地库汇总生成发布库 local.db → release.db
export 导出发布库到 CSV release.db → CSV
clean 清理本地库数据(软删除) 只写 local.db
analyze 独立分析Ploss 余量/delta_p、Qfod 标定阈值 log → 控制台报告

2. 命令详解

2.1 parse

# 解析单个文件
dotnet run parse --file path/to/log.txt

# 解析目录下所有文件
dotnet run parse --dir path/to/logs/

# 解析目录(递归)
dotnet run parse --dir path/to/logs/ --recursive

# 强制重新解析
dotnet run parse --file log.txt --force

2.2 aggregate

# 从 local.db 汇总生成 release.db默认重建
dotnet run aggregate

# 追加模式(不删除已有记录)
dotnet run aggregate --rebuild false

2.3 export

# 导出正式充电参数 CSV默认
dotnet run export --output ./data/output

# 导出正式充电参数 CSV + legacy Qfod/Ploss
dotnet run export --type all --output ./data/output

# 仅导出 legacy Qfod CSV
dotnet run export --type qfod --format csv

# 导出 JSON
dotnet run export --format json --type qfod

2.4 clean

# 清理指定场景
dotnet run clean --scenario <guid> --confirm

# 清理所有数据
dotnet run clean --all --confirm

2.5 analyze

# 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=1delta_p' = DeltaP + 2001 + Ploss Threshold,控制台输出重写后的 header 行
  • Qfod 标定阈值:Threshold = (纯手机 ΔQ 最大值 + 手机+异物 ΔQ 最小值) / 2。因现无法自动区分两个日志文件,需显式传入 --pure/--foreign

3. 典型工作流

# 1. 解析日志
dotnet run parse --dir ./data/test_input --recursive

# 2. 汇总生成发布库
dotnet run aggregate

# 3. 导出正式 CSV
dotnet run export --output ./data/output

输出文件: ./data/output/WCT-ChargingParameterDatabase.csv