Files
WCTDataMiner/docs/architecture/概览.md
Scottxjw 2b031995e1 docs: 更新项目架构与数据模型文档
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-13 15:01:32 +08:00

8.8 KiB
Raw Blame History

Architecture: Gpulse.WCT.DataAnalyzer

无线充电参数采集系统。从 log 文件解析 Qfod/Ploss 数据 → 本地分析库 → 汇总生成正式充电参数数据库 → 导出 CSV。


数据流

log 文件
  → parse
  → local.db本地解析库
  → aggregate
  → release.db正式发布库
  → export
  → WCT-ChargingParameterDatabase.csv
阶段 命令 存储 说明
解析 parse local.db 本地日志解析库,保存原始 Qfod/Ploss 记录
汇总 aggregate release.db 从 local.db 汇总生成正式充电参数记录
导出 export CSV 读取 release.db输出固定格式 CSV

文档索引

文档 说明
技术选型 技术栈、决策记录
模块划分 分层架构、目录结构、模块职责
数据处理流程 解析→汇总→导出完整流程
CLI 命令设计 命令行接口
配置管理 配置结构与双数据库配置
数据库支持 本地/发布双数据库架构
安全架构 路径校验、安全策略
解析器设计 Qfod/Ploss 解析器

架构分层

┌──────────────────────────────────────────────────────────────────────┐
│                         CLI Entry Point                               │
│                     (Program.cs / System.CommandLine)                 │
├──────────────────────────────────────────────────────────────────────┤
│                        Application Layer                               │
│  ┌───────────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────────┐ │
│  │ LocalIngestion│ │  Publishing   │ │ Exporting  │ │Administration│ │
│  │ ParseService  │ │AggregationSvc│ │ExportSvc   │ │ StatsService │ │
│  │ ScenarioSvc   │ │ThresholdCalc │ │            │ │ CleanService │ │
│  │ DimensionSvc  │ │              │ │            │ │              │ │
│  └───────────────┘ └──────────────┘ └────────────┘ └──────────────┘ │
│  ┌──────────────────────────────────────────────────────────────────┐ │
│  │                          Parsing                                  │ │
│  │  QfodParser  │  PlossParser  │  FileNameParser                   │ │
│  └──────────────────────────────────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────────┤
│                          Domain Layer                                  │
│  ┌─────────────────────────┐ ┌──────────────────────────────────────┐ │
│  │   Local/ (本地实体)       │ │   Release/ (发布实体)                 │ │
│  │ TxPanel, TxHardware     │ │ ChargingParameterRecord             │ │
│  │ TxSoftware, RxType      │ │                                      │ │
│  │ TestScenario            │ │                                      │ │
│  │ QfodRecord, PlossRecord │ │                                      │ │
│  └─────────────────────────┘ └──────────────────────────────────────┘ │
├──────────────────────────────────────────────────────────────────────┤
│                       Infrastructure Layer                             │
│  ┌───────────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────────┐ │
│  │ LocalData      │ │ ReleaseData  │ │Configuration│ │ Security     │ │
│  │ WctMinerDbCtx │ │ReleaseDbCtx  │ │AppSettings │ │PathValidator │ │
│  │ DbCtxFactory  │ │ReleaseDbCtxF │ │            │ │              │ │
│  │ SeedData      │ │              │ │            │ │              │ │
│  └───────────────┘ └──────────────┘ └────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────────────────┘

核心设计原则

原则 说明
技术栈 .NET 8.0 + C# 12.0 + EF Core 8.0
数据库 local.db / release.db 两个独立 SQLite 数据库
本地/发布隔离 无外键、无导航属性、无数据库级关联
解析模式 批处理,正则表达式
CLI System.CommandLine命令模式
汇总规则 按业务键分组取平均值,缺失字段允许为空

目录结构

src/
├── Gpulse.WCT.DataAnalyzer/              # CLI 入口
│   ├── Commands/                         # 命令实现
│   │   ├── ParseCommand.cs
│   │   ├── AggregateCommand.cs
│   │   ├── StatsCommand.cs
│   │   ├── ExportCommand.cs
│   │   └── CleanCommand.cs
│   ├── Program.cs
│   └── appsettings.json
│
└── Gpulse.WCT.DataAnalyzer.Core/         # 核心库
    ├── Application/                      # 应用层
    │   ├── Parsing/                      # 解析器
    │   │   ├── IParser.cs
    │   │   ├── QfodParser.cs
    │   │   ├── PlossParser.cs
    │   │   └── FileNameParser.cs
    │   ├── LocalIngestion/               # 本地日志解析
    │   │   ├── ParseService.cs
    │   │   ├── ScenarioService.cs
    │   │   └── DimensionService.cs
    │   ├── Publishing/                   # 发布汇总
    │   │   ├── AggregationService.cs
    │   │   └── ThresholdCalculator.cs
    │   ├── Exporting/                    # 导出
    │   │   └── ExportService.cs
    │   └── Administration/              # 管理
    │       ├── StatsService.cs
    │       └── CleanService.cs
    ├── Domain/                           # 领域实体
    │   └── Models/
    │       ├── TxPanel.cs               # 本地-维度
    │       ├── TxHardware.cs
    │       ├── TxSoftware.cs
    │       ├── RxType.cs
    │       ├── TestScenario.cs
    │       ├── QfodRecord.cs
    │       ├── PlossRecord.cs
    │       └── ChargingParameterRecord.cs # 发布-实体
    └── Infrastructure/                   # 基础设施
        ├── LocalData/                    # 本地数据库
        │   ├── WctMinerDbContext.cs
        │   ├── DbContextFactory.cs
        │   ├── IDbContextFactory.cs
        │   ├── SeedData.cs
        │   └── Configurations/
        ├── ReleaseData/                  # 发布数据库
        │   ├── ReleaseDbContext.cs
        │   ├── ReleaseDbContextFactory.cs
        │   ├── IReleaseDbContextFactory.cs
        │   └── Configurations/
        ├── Configuration/                # 配置
        │   └── AppSettings.cs
        ├── Security/                     # 安全
        │   ├── PathValidator.cs
        │   └── SecurityConstants.cs
        └── Extensions/                   # DI 扩展
            └── ServiceCollectionExtensions.cs